133 lines
3.5 KiB
INI
133 lines
3.5 KiB
INI
[tox]
|
|
min_version = 4
|
|
env_list =
|
|
pre-commit,
|
|
py3{7,8,9,10,11,12,13}-tests,
|
|
py3{9,10,11,12,13}-mypy,
|
|
pypy3,
|
|
pyright,
|
|
docs{,-sponsors},
|
|
changelog,
|
|
coverage-report
|
|
|
|
|
|
[testenv:.pkg]
|
|
pass_env = SETUPTOOLS_SCM_PRETEND_VERSION
|
|
|
|
|
|
[testenv]
|
|
package = wheel
|
|
wheel_build_env = .pkg
|
|
extras =
|
|
tests: tests
|
|
mypy: tests-mypy
|
|
commands =
|
|
tests: pytest {posargs:-n auto}
|
|
mypy: mypy tests/typing_example.py
|
|
mypy: mypy src/attrs/__init__.pyi src/attr/__init__.pyi src/attr/_typing_compat.pyi src/attr/_version_info.pyi src/attr/converters.pyi src/attr/exceptions.pyi src/attr/filters.pyi src/attr/setters.pyi src/attr/validators.pyi
|
|
|
|
[testenv:py3{7,10,12}-tests]
|
|
extras = cov
|
|
# Python 3.6+ has a number of compile-time warnings on invalid string escapes.
|
|
# PYTHONWARNINGS=d makes them visible during the tox run.
|
|
set_env =
|
|
COVERAGE_PROCESS_START={toxinidir}/pyproject.toml
|
|
PYTHONWARNINGS=d
|
|
commands_pre = python -c 'import pathlib; pathlib.Path("{env_site_packages_dir}/cov.pth").write_text("import coverage; coverage.process_startup()")'
|
|
# We group xdist execution by file because otherwise the Mypy tests have race conditions.
|
|
commands = coverage run -m pytest {posargs:-n auto --dist loadfile}
|
|
|
|
[testenv:coverage-report]
|
|
# Keep base_python in-sync with .python-version-default
|
|
base_python = py312
|
|
# Keep depends in-sync with testenv above that has cov extra.
|
|
depends = py3{7,10,12}
|
|
skip_install = true
|
|
deps = coverage[toml]>=5.3
|
|
commands =
|
|
coverage combine
|
|
coverage report
|
|
|
|
|
|
[testenv:codspeed]
|
|
extras = benchmark
|
|
pass_env =
|
|
CODSPEED_TOKEN
|
|
CODSPEED_ENV
|
|
ARCH
|
|
PYTHONHASHSEED
|
|
PYTHONMALLOC
|
|
commands = pytest --codspeed -n auto bench/test_benchmarks.py
|
|
|
|
|
|
[testenv:docs]
|
|
# Keep base_python in-sync with ci.yml/docs and .readthedocs.yaml.
|
|
base_python = py312
|
|
extras = docs
|
|
commands =
|
|
sphinx-build -n -T -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
|
|
sphinx-build -n -T -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html
|
|
|
|
|
|
[testenv:docs-watch]
|
|
package = editable
|
|
base_python = {[testenv:docs]base_python}
|
|
extras = {[testenv:docs]extras}
|
|
deps = watchfiles
|
|
commands =
|
|
watchfiles \
|
|
--ignore-paths docs/_build/ \
|
|
'sphinx-build -W -n --jobs auto -b html -d {envtmpdir}/doctrees docs docs/_build/html' \
|
|
src \
|
|
docs
|
|
|
|
|
|
[testenv:docs-linkcheck]
|
|
package = editable
|
|
base_python = {[testenv:docs]base_python}
|
|
extras = {[testenv:docs]extras}
|
|
commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees docs docs/_build/html
|
|
|
|
|
|
[testenv:docs-sponsors]
|
|
description = Ensure sponsor logos are up to date.
|
|
deps = cogapp
|
|
commands = cog -rP README.md docs/index.md
|
|
|
|
|
|
[testenv:pre-commit]
|
|
skip_install = true
|
|
deps = pre-commit
|
|
commands = pre-commit run --all-files
|
|
|
|
|
|
[testenv:changelog]
|
|
# See https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92
|
|
# Pin also present in pyproject.toml
|
|
deps = towncrier<24.7
|
|
skip_install = true
|
|
commands =
|
|
towncrier --version
|
|
towncrier build --version main --draft
|
|
|
|
|
|
[testenv:pyright]
|
|
extras = tests
|
|
deps = pyright
|
|
commands = pytest tests/test_pyright.py -vv
|
|
|
|
|
|
[testenv:docset]
|
|
deps = doc2dash
|
|
extras = docs
|
|
allowlist_externals =
|
|
rm
|
|
cp
|
|
tar
|
|
commands =
|
|
rm -rf attrs.docset attrs.tgz docs/_build
|
|
sphinx-build -n -T -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
|
|
doc2dash --index-page index.html --icon docs/_static/docset-icon.png --online-redirect-url https://www.attrs.org/en/latest/ docs/_build/html
|
|
cp docs/_static/docset-icon@2x.png attrs.docset/icon@2x.png
|
|
tar --exclude='.DS_Store' -cvzf attrs.tgz attrs.docset
|