-
Notifications
You must be signed in to change notification settings - Fork 0
/
pyproject.toml
109 lines (95 loc) · 3.88 KB
/
pyproject.toml
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
[tool.poetry]
name = "wheel-doctor"
version = "0.0.0"
description = ""
authors = ["Lukas Bindreiter"]
readme = "README.md"
license = "MIT"
packages = [{include = "wheel_doctor"}]
[tool.poetry.scripts]
wheel-doctor = "wheel_doctor.__main__:_app"
[tool.poetry-dynamic-versioning]
enable = true
[tool.poetry.dependencies]
python = ">=3.10,<4"
typer = {extras = ["all"], version = "*"}
tomli = "*"
tomli-w = "*"
[tool.poetry.group.dev.dependencies]
pytest = "*"
pytest-cov = "*"
black = "*"
ruff = "*"
mypy = "*"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'
extend-exclude = '''
# A regex preceded with ^/ will apply only to files and directories
# in the root of the project.
^/foo.py # exclude a file named foo.py in the root of the project (in addition to the defaults)
'''
[tool.ruff]
line-length = 88
target-version = "py310"
select = ["ALL"]
# if you are integrating the template into an existing codebase you may want to start off with this:
# (which is the ruff default, and should be achievable with minimal effort):
# select = ["E", "F"]
# list of rules: https://beta.ruff.rs/docs/rules
# (ignore list was created for ruff v0.0.256 from 2023-03-15)
ignore = [
# disabled whole checking modules
"D", # pydocstyle -> no consistent style agreed upon yet, and way to strict anyways
"FBT", # flake8-boolean-trap -> boolean arguments make sense, e.g. in command line applications as flags
"COM", # flake8-commas -> comma checking is handled by black
"DTZ", # flake8-datetimez -> utc datetimes make sense in certain applications
"DJ", # flake8-django -> we are not using it
"EM", # flake8-errmsg -> str directly in Exception constructor is accetable
"INP", # flake8-no-pep420 -> implicit namespace packages are a useful feature
"T20", # flake8-print -> print statements can make sense in some contexts
"TCH", # flake8-type-checking -> never really used type checking blocks
# disabled specific rules
"ANN101", # missing-type-self -> self doesn't need type information
"ANN102", # missing-type-cls -> cls doesn't need type information
"ANN401", # any-type -> allow Any in *args and **kwargs
"S101", # assert -> allow usage of assert
"B008", # function-call-argument-default -> some default argument values make sense to be function calls
"G004", # logging-f-string -> allow usage of f-strings in logging calls
"RET504", # unnecessary-assign -> sometimes it is more readable to assign a variable anyways
"PLR0913", # too-many-arguments -> sometimes it just makes sense
"PLR2004", # magic-value-comparison -> comparison with some constants (e.g. 0) makes sense
"TRY003", # raise-vanilla-args -> not really how exceptions are used in python typically: https://github.com/guilatrova/tryceratops/blob/main/docs/violations/TC003.md
"TRY400", # error-instead-of-exception -> logger.error is ok with loguru
"UP007", # non-pep604-annotation -> typer doesn't support X | None instead of Optional[X] yet
]
unfixable = [
"F841", # unused-variable -> don't remove them automatically
"ERA", # eradicate -> (commented out code), don't remove it automatically
]
[tool.ruff.per-file-ignores]
"tests/*" = []
[tool.mypy]
files = ["grasp", "tests"]
python_version = "3.10"
warn_unreachable = true
warn_return_any = true
disallow_untyped_defs = true
show_error_codes = true
ignore_missing_imports = true
plugins = []
exclude = [".git/", ".venv/", "__pycache__"]
[[tool.mypy.overrides]]
module = "tests.*"
strict_optional = false
[[tool.mypy.overrides]]
module = "some.autogenerated.files.*"
ignore_errors = true
[tool.pytest.ini_options]
minversion = "6.0"
testpaths = ["tests"]
addopts = "-Wall -Werror --cov=wheel_doctor --cov-fail-under=50 --cov-report=xml --cov-report=html --cov-branch"