1+ [build-system ]
2+ requires = [" setuptools" ]
3+ build-backend = " setuptools.build_meta"
4+
5+ [project ]
6+ name = " dectate"
7+ version = " 0.15.dev0"
8+ dynamic = [" readme" ]
9+ description = " A configuration engine for Python frameworks"
10+ license = " BSD-3-Clause"
11+ license-files = [" LICENSE.txt" ]
12+ authors = [{name = " Martijn Faassen" , email = " faassen@startifact.com" }]
13+ maintainers = [{name = " Henri Hulski" , email = " henri@sancode.it" }]
14+ keywords = [" configuration" ]
15+ classifiers = [
16+ " Intended Audience :: Developers" ,
17+ " Topic :: Software Development :: Libraries :: Application Frameworks" ,
18+ " Programming Language :: Python :: 3.10" ,
19+ " Programming Language :: Python :: 3.11" ,
20+ " Programming Language :: Python :: 3.12" ,
21+ " Programming Language :: Python :: 3.13" ,
22+ " Programming Language :: Python :: 3.14" ,
23+ " Programming Language :: Python :: 3 :: Only" ,
24+ " Programming Language :: Python :: Implementation :: PyPy" ,
25+ " Development Status :: 5 - Production/Stable" ,
26+ ]
27+ requires-python = " >= 3.10"
28+
29+ [project .urls ]
30+ Documentation = " https://dectate.readthedocs.io"
31+ Repository = " https://github.com/morepath/dectate"
32+ Issues = " https://github.com/morepath/dectate/issues"
33+ Changelog = " https://github.com/morepath/dectate/blob/master/CHANGES.txt"
34+
35+ [project .optional-dependencies ]
36+ test = [" pytest >= 8" , " pytest-env" ]
37+ coverage = [" pytest-cov" ]
38+ lint = [" black" , " flake8" , " flake8-pyproject" ]
39+ docs = [" sphinx" ]
40+
41+ [tool .setuptools .packages ]
42+ find = {}
43+
44+ [tool .setuptools .dynamic ]
45+ readme = {file = [" README.rst" , " CHANGES.txt" ]}
46+
47+ [tool .pytest .ini_options ]
48+ minversion = " 8.0"
49+ testpaths = [" dectate" ]
50+ addopts = [" -vv" ]
51+ env = [" RUN_ENV=test" ]
52+
53+ [tool .coverage .run ]
54+ omit = [" dectate/tests/*" ]
55+ source = [" dectate" ]
56+
57+ [tool .coverage .report ]
58+ show_missing = true
59+
60+ [tool .flake8 ]
61+ show-source = true
62+ ignore = [" E203" , " W503" ]
63+ max-line-length = 80
64+
165[tool .black ]
266line-length = 80
3- target-version = [' py34 ' , ' py35 ' , ' py36 ' , ' py37 ' , ' py38 ' ]
67+ target-version = [' py310 ' , ' py311 ' , ' py312 ' , ' py313 ' , ' py314 ' ]
468include = ' \.pyi?$'
569exclude = '''
670(
@@ -13,3 +77,53 @@ exclude = '''
1377 )/
1478)
1579'''
80+
81+ [tool .tox ]
82+ requires = [" tox>=4" ]
83+ env_list = [
84+ " py310" ,
85+ " py311" ,
86+ " py312" ,
87+ " py313" ,
88+ " py314" ,
89+ " pypy3" ,
90+ " coverage" ,
91+ " pre-commit" ,
92+ " docs" ,
93+ ]
94+ skip_missing_interpreters = true
95+
96+ [tool .tox .gh .python ]
97+ "3.10" = [" py310" ]
98+ "3.11" = [" py311" ]
99+ "3.12" = [" py312" ]
100+ "3.13" = [" py313" ]
101+ "3.14" = [" py314" , " pre-commit" , " coverage" ]
102+ "pypy-3.11" = [" pypy3" ]
103+
104+ [tool .tox .env_run_base ]
105+ package = " editable"
106+ extras = [" test" ]
107+ commands = [[" pytest" , " {posargs:dectate}" ]]
108+
109+ [tool .tox .env .coverage ]
110+ base_python = [" python3" ]
111+ extras = [" test" , " coverage" ]
112+ commands = [
113+ [" pytest" , " --cov" , " --cov-fail-under=94" , " {posargs:dectate}" ],
114+ ]
115+
116+ [tool .tox .env .pre-commit ]
117+ base_python = [" python3" ]
118+ package = " skip"
119+ deps = [" pre-commit" ]
120+ commands = [
121+ [" pre-commit" , " run" , " --all-files" ],
122+ ]
123+
124+ [tool .tox .env .docs ]
125+ base_python = [" python3" ]
126+ extras = [" docs" ]
127+ commands = [
128+ [" sphinx-build" , " -b" , " doctest" , " doc" , " {env_tmp_dir}" ],
129+ ]
0 commit comments