-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
89 lines (76 loc) · 2.11 KB
/
tox.ini
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
# https://tox.wiki/en/latest/example/package.html
[tox]
envlist = py37, linters, mypy, security
skip_missing_interpreters = true
isolated_build = True
[testenv]
allowlist_externals =
poetry
mkdir
description = Pytest with coverage
commands =
poetry install -v
poetry run pytest
## Linter
[testenv:flake8]
commands =
poetry run flake8 --tee --output-file=output/flake8.txt
[testenv:isort]
commands =
poetry run isort --diff --check-only .
[testenv:black]
commands =
poetry run black --diff --check --config pyproject.toml .
## Typing
[testenv:mypy]
commands =
poetry run mypy --config-file pyproject.toml
[testenv:linters]
commands =
{[testenv:flake8]commands}
{[testenv:isort]commands}
{[testenv:black]commands}
## Security
[testenv:bandit]
commands =
poetry run bandit -ll --recursive todo_sample tests -f json -o output/bandit.json
[testenv:safety]
commands =
poetry run safety check --full-report
[testenv:security]
commands =
{[testenv:bandit]commands}
{[testenv:safety]commands}
[testenv:pre-commit]
skip_install = true
deps = pre-commit
commands =
pre-commit run --all-files --show-diff-on-failure
## Packaging
[testenv:{build,clean}]
description =
build: Build the package in isolation according to PEP517, see https://github.com/pypa/build
clean: Remove old distribution files and temporary build artifacts (./build and ./dist)
skip_install = True
changedir = {toxinidir}
deps =
build: build[virtualenv]
commands =
clean: python -c 'from shutil import rmtree; rmtree("build", True); rmtree("dist", True)'
build: python -m build .
[testenv:publish]
description =
Publish the package you have been developing to a package index server.
By default, it uses testpypi. If you really want to publish your package
to be publicly accessible in PyPI, use the `-- --repository pypi` option.
skip_install = True
changedir = {toxinidir}
passenv =
TWINE_USERNAME
TWINE_PASSWORD
TWINE_REPOSITORY
TWINE_REPOSITORY_URL
deps = twine
commands =
python -m twine check dist/*
python -m twine upload {posargs:--repository testpypi} dist/*