-
Notifications
You must be signed in to change notification settings - Fork 1
/
tox.ini
76 lines (65 loc) · 1.73 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
[tox]
min_version = 4.0
envlist = py310, lint, mypy
[gh]
python =
3.10 = py310
# NOTE: flake8 doesn't yet support pyproject.toml
[flake8]
max-line-length = 120
max-complexity = 10
# B9: Bugbear opinionated
extend-select = B902, B903, B904, B907, B950
# A003: class attribute shadowing builtin
# Pedantic; attribute access is qualified, so it won't actually shadow
# E203: Black style
# E501: Using B950 instead
# E722, PIE786: Redundant with B001
# PIE789, PIE791: Redundant with E721 and B015/B018 respectively
# R504: Tends to give a lot of false-positives; PIE781 works better
extend-ignore = A003, E203, E501, R504, PIE786, PIE789, PIE791
# B011, S101: Asserts are normal in tests
per-file-ignores =
test_*.py: B011, S101
[flake8-plugins]
deps =
flake8-bandit
flake8-breakpoint
flake8-bugbear
flake8-builtins
flake8-comprehensions
flake8-pie
flake8-return
[testenv]
deps = pytest
commands = pytest --basetemp="{env_tmp_dir}" {posargs:tests}
[testenv:lint]
description = Run linters
skip_install = true
ignore_errors = true
deps =
black
flake8
{[flake8-plugins]deps}
isort
commands =
flake8 {posargs:src tests}
black --check {posargs:src tests}
isort --check {posargs:src tests}
[testenv:mypy]
description = Type check with mypy
skip_install = true
deps = mypy
commands = mypy src
[testenv:build]
description = Create a build of the project. Will create an sdist and wheel in <project root>/dist/
skip_install = true
deps = build
# NOTE: Already have isolation through tox
commands = python -m build --no-isolation {posargs}
[testenv:dev]
description = Set up development environment; use as a target for `tox devenv`
deps =
{[flake8-plugins]deps}
use_develop = true
extras = dev