[tox] minversion=2.3.1 envlist = py36,py37,py38,flake8,linters,docs [testenv] deps = pytest!=3.0.5,!=5.2.3 coverage commands = coverage run -m pytest {posargs} coverage combine coverage report # ensure 100% coverage of tests coverage report --fail-under 100 --include tests/* # Dogfood our current master version [testenv:dogfood] skip_install = true deps = wheel commands = python setup.py -qq bdist_wheel pip install --force-reinstall -U --pre --find-links ./dist/ flake8 flake8 --version flake8 src/flake8/ tests/ setup.py # Linters [testenv:flake8] skip_install = true deps = flake8 flake8-bugbear flake8-docstrings>=1.3.1 flake8-typing-imports>=1.1 pep8-naming commands = flake8 src/flake8/ tests/ setup.py [testenv:pylint] skip_install = true deps = pyflakes pylint!=2.5.0 commands = pylint src/flake8 [testenv:doc8] skip_install = true deps = sphinx doc8 commands = doc8 docs/source/ [testenv:pre-commit] skip_install = true deps = pre-commit commands = pre-commit run --all-files --show-diff-on-failure [testenv:bandit] skip_install = true deps = bandit commands = bandit -r src/flake8/ -c .bandit.yml [testenv:linters] skip_install = true deps = {[testenv:flake8]deps} {[testenv:pylint]deps} {[testenv:doc8]deps} {[testenv:readme]deps} {[testenv:bandit]deps} commands = {[testenv:flake8]commands} {[testenv:pylint]commands} {[testenv:doc8]commands} {[testenv:readme]commands} {[testenv:bandit]commands} # Documentation [testenv:docs] deps = -rdocs/source/requirements.txt commands = sphinx-build -E -W -c docs/source/ -b html docs/source/ docs/build/html sphinx-build -E -W -c docs/source/ -b man docs/source/ docs/build/man [testenv:serve-docs] skip_install = true changedir = docs/build/html deps = commands = python -m http.server {posargs} [testenv:readme] deps = readme_renderer commands = python setup.py check -r -s # Release tooling [testenv:build] skip_install = true deps = wheel setuptools commands = python setup.py -q sdist bdist_wheel [testenv:release] skip_install = true deps = {[testenv:build]deps} twine >= 1.5.0 commands = {[testenv:build]commands} twine upload --skip-existing dist/* # Flake8 Configuration [flake8] # Ignore some flake8-docstrings errors # NOTE(sigmavirus24): While we're still using flake8 2.x, this ignore line # defaults to selecting all other errors so we do not need select=E,F,W,I,D # Once Flake8 3.0 is released and in a good state, we can use both and it will # work well \o/ ignore = D203, W503, E203, N818 exclude = .tox, .git, __pycache__, docs/source/conf.py, build, dist, tests/fixtures/*, *.pyc, *.egg-info, .cache, .eggs max-complexity = 10