11[tox]
22envlist =
3- py3{10,11,12,13,14}-lint,
4- py3{10,11,12,13,14}-unit,
5- py3{10,11,12,13,14}-bandit,
6- py3{10,11,12,13,14}-mypy,
7- py312 -lintreadme,
8- py312 -pydocstyle
3+ py3{10,11,12,13,14,15 }-lint,
4+ py3{10,11,12,13,14,15 }-unit,
5+ py3{10,11,12,13,14,15 }-bandit,
6+ py3{10,11,12,13,14,15 }-mypy,
7+ py314 -lintreadme,
8+ py314 -pydocstyle
99
1010skip_missing_interpreters = True
1111isolated_build = True
@@ -22,65 +22,66 @@ python =
2222 3.12: py312
2323 3.13: py313
2424 3.14: py314
25+ 3.15: py315
2526
2627[testenv]
2728skipsdist =
28- py3{10,11,12,13,14}-!{unit,mypy,lintreadme} = True
29+ py3{10,11,12,13,14,15 }-!{unit,mypy,lintreadme} = True
2930
3031description =
31- py3{10,11,12,13,14}-unit: Run the unit tests
32- py3{10,11,12,13,14}-lint: Lint the Python code
33- py3{10,11,12,13,14}-bandit: Search for common security issues
34- py3{10,11,12,13,14}-mypy: Check for type safety
35- py313 -pydocstyle: docstring style checker
36- py313 -lintreadme: Lint the README.rst->.md conversion
32+ py3{10,11,12,13,14,15 }-unit: Run the unit tests
33+ py3{10,11,12,13,14,15 }-lint: Lint the Python code
34+ py3{10,11,12,13,14,15 }-bandit: Search for common security issues
35+ py3{10,11,12,13,14,15 }-mypy: Check for type safety
36+ py314 -pydocstyle: docstring style checker
37+ py314 -lintreadme: Lint the README.rst->.md conversion
3738
3839passenv =
3940 CI
4041 GITHUB_*
4142
4243deps =
43- py3{10,11,12,13,14}-{unit,mypy}: -rrequirements.txt
44- py3{10,11,12,13,14}-{unit,mypy}: -rtest-requirements.txt
45- py3{10,11,12,13,14}-lint: flake8-bugbear
46- py3{10,11,12,13,14}-lint: black~=26.1
47- py3{10,11,12,13,14}-bandit: bandit
48- py3{10,11,12,13,14}-mypy: -rmypy-requirements.txt
44+ py3{10,11,12,13,14,15 }-{unit,mypy}: -rrequirements.txt
45+ py3{10,11,12,13,14,15 }-{unit,mypy}: -rtest-requirements.txt
46+ py3{10,11,12,13,14,15 }-lint: flake8-bugbear
47+ py3{10,11,12,13,14,15 }-lint: black~=26.1
48+ py3{10,11,12,13,14,15 }-bandit: bandit
49+ py3{10,11,12,13,14,15 }-mypy: -rmypy-requirements.txt
4950
5051set_env =
51- py3{10,11,12,13,14}-unit: LC_ALL = C.UTF-8
52+ py3{10,11,12,13,14,15 }-unit: LC_ALL = C.UTF-8
5253 COV_CORE_SOURCE =cwltest
5354 COV_CORE_CONFIG ={toxinidir}/.coveragerc
5455 COV_CORE_DATAFILE ={toxinidir}/.coverage.eager
5556
5657commands =
57- py3{10,11,12,13,14}-unit: python -m pip install -U pip setuptools wheel
58- py3{10,11,12,13,14}-unit: python -m pytest --cov --cov-config ={toxinidir}/.coveragerc --cov-append {posargs}
59- py3{10,11,12,13,14}-unit: coverage xml
60- py3{10,11,12,13,14}-bandit: bandit --recursive src
61- py3{10,11,12,13,14}-lint: make flake8
62- py3{10,11,12,13,14}-lint: make format-check
63- py3{10,11,12,13,14}-mypy: make mypy
58+ py3{10,11,12,13,14,15 }-unit: python -m pip install -U pip setuptools wheel
59+ py3{10,11,12,13,14,15 }-unit: python -m pytest --cov --cov-config ={toxinidir}/.coveragerc --cov-append {posargs}
60+ py3{10,11,12,13,14,15 }-unit: coverage xml
61+ py3{10,11,12,13,14,15 }-bandit: bandit --recursive src
62+ py3{10,11,12,13,14,15 }-lint: make flake8
63+ py3{10,11,12,13,14,15 }-lint: make format-check
64+ py3{10,11,12,13,14,15 }-mypy: make mypy
6465
6566allowlist_externals =
66- py3{10,11,12,13,14}-lint: flake8
67- py3{10,11,12,13,14}-lint: black
68- py3{10,11,12,13,14}-{mypy,shellcheck,lint,unit}: make
67+ py3{10,11,12,13,14,15 }-lint: flake8
68+ py3{10,11,12,13,14,15 }-lint: black
69+ py3{10,11,12,13,14,15 }-{mypy,shellcheck,lint,unit}: make
6970
7071skip_install =
71- py3{10,11,12,13,14}-lint: true
72- py3{10,11,12,13,14}-bandit: true
72+ py3{10,11,12,13,14,15 }-lint: true
73+ py3{10,11,12,13,14,15 }-bandit: true
7374
7475
75- [testenv:py313 -pydocstyle]
76+ [testenv:py314 -pydocstyle]
7677allowlist_externals = make
7778commands = make diff_pydocstyle_report
7879deps =
7980 pydocstyle
8081 diff-cover
8182skip_install = true
8283
83- [testenv:py313 -lintreadme]
84+ [testenv:py314 -lintreadme]
8485description = Lint the README.rst->.md conversion
8586commands =
8687 python -m build --outdir dist
0 commit comments