| [pytest] |
| addopts = -ra |
| testpaths = tests |
| xfail_strict = true |
| filterwarnings = |
| once::Warning |
| ignore:::pympler[.*] |
| |
| |
| # Keep docs in sync with docs env and .readthedocs.yml. |
| [gh-actions] |
| python = |
| 2.7: py27 |
| 3.5: py35 |
| 3.6: py36 |
| 3.7: py37 |
| 3.8: py38, changelog |
| 3.9: py39, pyright |
| 3.10: py310, manifest, typing, docs |
| pypy-2: pypy |
| pypy-3: pypy3 |
| |
| |
| [tox] |
| envlist = typing,pre-commit,py27,py35,py36,py37,py38,py39,py310,pypy,pypy3,pyright,manifest,docs,pypi-description,changelog,coverage-report |
| isolated_build = True |
| |
| |
| [testenv:docs] |
| # Keep basepython in sync with gh-actions and .readthedocs.yml. |
| basepython = python3.10 |
| 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 |
| python -m doctest README.rst |
| |
| |
| [testenv] |
| extras = tests |
| commands = python -m pytest {posargs} |
| |
| |
| [testenv:py27] |
| extras = tests |
| commands = coverage run -m pytest {posargs} |
| |
| |
| [testenv:py37] |
| extras = tests |
| commands = coverage run -m pytest {posargs} |
| |
| |
| [testenv:py310] |
| # Python 3.6+ has a number of compile-time warnings on invalid string escapes. |
| # PYTHONWARNINGS=d and --no-compile below make them visible during the Tox run. |
| basepython = python3.10 |
| install_command = pip install --no-compile {opts} {packages} |
| setenv = |
| PYTHONWARNINGS=d |
| extras = tests |
| commands = coverage run -m pytest {posargs} |
| |
| |
| [testenv:coverage-report] |
| basepython = python3.10 |
| depends = py27,py37,py310 |
| skip_install = true |
| deps = coverage[toml]>=5.4 |
| commands = |
| coverage combine |
| coverage report |
| |
| |
| [testenv:pre-commit] |
| basepython = python3.10 |
| skip_install = true |
| deps = |
| pre-commit |
| passenv = HOMEPATH # needed on Windows |
| commands = |
| pre-commit run --all-files |
| |
| |
| [testenv:manifest] |
| basepython = python3.10 |
| deps = check-manifest |
| skip_install = true |
| commands = check-manifest |
| |
| |
| [testenv:pypi-description] |
| basepython = python3.8 |
| skip_install = true |
| deps = |
| twine |
| pip >= 18.0.0 |
| commands = |
| pip wheel -w {envtmpdir}/build --no-deps . |
| twine check {envtmpdir}/build/* |
| |
| |
| [testenv:changelog] |
| basepython = python3.8 |
| deps = towncrier<21.3 |
| skip_install = true |
| commands = towncrier --draft |
| |
| |
| [testenv:typing] |
| basepython = python3.10 |
| deps = mypy>=0.902 |
| commands = |
| mypy src/attrs/__init__.pyi src/attr/__init__.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 |
| mypy tests/typing_example.py |
| |
| |
| [testenv:pyright] |
| # Install and configure node and pyright |
| # This *could* be folded into a custom install_command |
| # Use nodeenv to configure node in the running tox virtual environment |
| # Seeing errors using "nodeenv -p" |
| # Use npm install -g to install "globally" into the virtual environment |
| basepython = python3.9 |
| deps = nodeenv |
| commands = |
| nodeenv --prebuilt --node=lts --force {envdir} |
| npm install -g --no-package-lock --no-save pyright |
| pytest tests/test_pyright.py -vv |