1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
|
# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
# To use a PEP 517 build-backend you are required to configure tox to use an isolated_build:
# https://tox.readthedocs.io/en/latest/example/package.html
isolated_build = True
# These environments are run in order if you just use `tox`:
envlist =
# always keep coverage-clean first
#coverage-clean
# code linters/stylers
manifest
lint
flake8
pyroma
mypy
# documentation linters/checkers
doc8
docstr-coverage
docs-test
# the actual tests
py
# always keep coverage-report last
#coverage-report
[testenv]
commands =
coverage run -p -m pytest --durations=20 {posargs:tests}
coverage combine
coverage xml
passenv =
HOME
extras =
tests
pandas
rdf
xml
allowlist_externals =
/bin/cat
/bin/cp
/bin/mkdir
/usr/bin/cat
/usr/bin/cp
/usr/bin/mkdir
/usr/bin/git
/usr/local/bin/git
[testenv:coverage-xml]
deps = coverage
skip_install = true
commands = coverage xml
[testenv:coverage-clean]
deps = coverage
skip_install = true
commands = coverage erase
[testenv:manifest]
deps = check-manifest
skip_install = true
commands = check-manifest
[testenv:pre-commit]
skip_install = true
deps =
pre-commit
commands = pre-commit run -a
usedevelop = true
description = Run the pre-commit tool
[testenv:flake8]
skip_install = true
deps =
flake8
flake8-bandit
flake8-colors
flake8-docstrings
flake8-isort
flake8-bugbear
flake8-broken-line
flake8-black
flake8-print
pep8-naming
pydocstyle
darglint
commands =
flake8 src/pystow/ tests/
description = Run the flake8 tool with several plugins (bandit, docstrings, import order, pep8 naming).
[testenv:lint]
deps =
black
isort
skip_install = true
commands =
black src/ tests/
isort src/ tests/
description = Run linters.
[testenv:mypy]
deps =
mypy
types-requests
skip_install = true
commands =
mypy --install-types --non-interactive --ignore-missing-imports --strict src/pystow/
description = Run the mypy tool to check static typing on the project.
[testenv:pyroma]
deps =
pygments
pyroma
skip_install = true
commands = pyroma --min=10 .
description = Run the pyroma tool to check the package friendliness of the project.
[testenv:doc8]
skip_install = true
deps =
sphinx
doc8
commands =
doc8 docs/source/
description = Run the doc8 tool to check the style of the RST files in the project docs.
[testenv:docstr-coverage]
skip_install = true
deps =
docstr-coverage
commands =
docstr-coverage src/pystow/ tests/ --skip-private --skip-magic
description = Run the docstr-coverage tool to check documentation coverage
[testenv:docs]
description = Build the documentation locally.
extras =
docs
rdf
xml
pandas
aws
commands =
python -m sphinx -W -b html -d docs/build/doctrees docs/source docs/build/html
[testenv:docs-test]
description = Test building the documentation in an isolated environment.
changedir = docs
extras =
{[testenv:docs]extras}
commands =
mkdir -p {envtmpdir}
cp -r source {envtmpdir}/source
python -m sphinx -W -b html -d {envtmpdir}/build/doctrees {envtmpdir}/source {envtmpdir}/build/html
python -m sphinx -W -b coverage -d {envtmpdir}/build/doctrees {envtmpdir}/source {envtmpdir}/build/coverage
cat {envtmpdir}/build/coverage/c.txt
cat {envtmpdir}/build/coverage/python.txt
allowlist_externals =
/bin/cp
/bin/cat
/bin/mkdir
# for compatibility on GitHub actions
/usr/bin/cp
/usr/bin/cat
/usr/bin/mkdir
[testenv:coverage-report]
deps = coverage
skip_install = true
commands =
coverage combine
coverage report
####################
# Deployment tools #
####################
[testenv:bumpversion]
commands = bump2version {posargs}
skip_install = true
passenv = HOME
deps =
bump2version
[testenv:bumpversion-release]
commands = bump2version release --tag
skip_install = true
passenv = HOME
deps =
bump2version
[testenv:build]
skip_install = true
deps =
wheel
build
setuptools
commands =
python -m build --sdist --wheel --no-isolation
[testenv:release]
skip_install = true
passenv =
TWINE_USERNAME
TWINE_PASSWORD
deps =
{[testenv:build]deps}
twine >= 1.5.0
commands =
{[testenv:build]commands}
twine upload --non-interactive --skip-existing dist/*
[testenv:finish]
skip_install = true
passenv =
HOME
TWINE_USERNAME
TWINE_PASSWORD
deps =
{[testenv:release]deps}
bump2version
commands =
bump2version release --tag
{[testenv:release]commands}
git push --tags
bump2version patch
git push
allowlist_externals =
/usr/bin/git
|