-
Notifications
You must be signed in to change notification settings - Fork 1
/
pyproject.toml
151 lines (136 loc) · 4.9 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
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
[project]
name = "mex-common"
version = "0.36.1"
description = "Common library for MEx python projects."
authors = [{ name = "MEx Team", email = "mex@rki.de" }]
readme = { file = "README.md", content-type = "text/markdown" }
license = { file = "LICENSE" }
urls = { Repository = "https://github.com/robert-koch-institut/mex-common" }
requires-python = "<3.13,>=3.11"
dependencies = [
"backoff>=2.2.1,<3",
"click>=8.1.7,<9",
"langdetect>=1.0.9,<2",
"ldap3>=2.9.1,<3",
"mex-model@git+https://github.com/robert-koch-institut/mex-model.git@2.5.0",
"numpy>=2.0.1,<3",
"pandas>=2.2.2,<3",
"pyarrow>=17.0.0,<18",
"pydantic-settings>=2.4.0,<3",
"pydantic>=2.8.2,<3",
"pytz>=2024.1,<2024.2",
"requests>=2.32.3,<3",
]
optional-dependencies.dev = [
"ipdb>=0.13.13,<1",
"pandas-stubs>=2.2.2,<3",
"mypy>=1.11.0,<2",
"pytest-cov>=5.0.0,<6",
"pytest-random-order>=1.1.1,<2",
"pytest-xdist>=3.6.1,<4",
"pytest>=8.3.1,<9",
"ruff>=0.5.4,<1",
"sphinx>=8.0.2,<9",
"types-ldap3>=2.9.13,<3",
"types-pytz>=2024.1.0,<2025",
"types-requests>=2.32.0,<3",
]
[tool.cruft]
template = "https://github.com/robert-koch-institut/mex-template"
skip = ["CHANGELOG.md", "mex", "tests"]
[tool.ipdb]
context = 5
[tool.mypy]
python_version = "3.11"
show_error_codes = true
strict = true
plugins = ["pydantic.mypy"]
[[tool.mypy.overrides]]
module = 'langdetect.*'
ignore_missing_imports = true
[tool.pdm]
distribution = true
[tool.pdm.scripts]
update-all = { cmd = "pdm update --group :all --update-all --save-compatible" }
lock-all = { cmd = "pdm lock --group :all --python='==3.11.*'" }
install-all = { cmd = "pdm install --group :all --frozen-lockfile" }
export-all = { cmd = "pdm export --group :all --no-hashes -f requirements" }
apidoc = { cmd = "pdm run sphinx-apidoc -f -o docs/source mex" }
sphinx = { cmd = "pdm run sphinx-build -aE -b dirhtml docs docs/dist" }
doc = { composite = ["apidoc", "sphinx"] }
wheel = { cmd = "pdm build --no-sdist" }
mypy-daemon = { cmd = "pdm run dmypy run --timeout 7200 -- mex" }
lint = { cmd = "pre-commit run --all-files" }
unit = { cmd = "pdm run pytest -m 'not integration'" }
test = { cmd = "pdm run pytest --numprocesses=auto --dist=worksteal" }
all = { composite = ["install-all", "lint", "test", "doc"] }
[tool.pydantic-mypy]
warn_untyped_fields = true
[tool.pytest.ini_options]
addopts = [
"--verbose",
"--cov",
"--no-cov-on-fail",
"--cov-report=term-missing:skip-covered",
"--cov-fail-under=95",
"--cov-branch",
"--pdbcls=IPython.terminal.debugger:TerminalPdb",
"--random-order-bucket=global",
]
markers = "integration: mark a test as integration test"
[tool.ruff]
fix = true
line-length = 88
show-fixes = true
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint]
ignore = [
"D100", # Allow missing module docstring for brevity
"D104", # Allow missing package docstring for brevity
"D106", # Allow missing nested class docstring (eg pydantic Config)
"D203", # Disallow blank line before class docstring (inverse of D211)
"D213", # Disallow multi-line docstring starting at second line (inverse of D212)
"D406", # Allow section name ending with newline (google style compat)
"D407", # Allow missing dashed underline after section (google style compat)
"D413", # Allow missing blank line after last section (google style compat)
"N805", # Allow first argument of a method to be non-self (pydantic compat)
"N815", # Allow mixedCase variables in class scope (model compat)
"RUF012", # Allow mutable class attributes (pydantic compat)
]
select = [
"A", # Flake8 builtin shaddow
"B", # BugBear bug and issue finder
"C90", # McCabe complexity checker
"D", # Python docstring style checker
"E", # Python code style errors
"ERA", # Commented-out code detector
"F", # Pyflakes passive python checker
"I", # Isort import utility
"N", # Pep8 naming conventions
"PERF", # Lint performance anti-patterns
"RET", # Flake8 return statement checker
"RUF", # Ruff-specific rules
"S", # Bandit automated security testing
"T10", # Flake8 debug statement checker
"T20", # Flake8 print statement checker
"UP", # PyUpgrade syntax recommender
"W", # Python code style warnings
]
[tool.ruff.lint.per-file-ignores]
"tests/**" = [
"D101", # Allow missing docstring in public class for tests
"D102", # Allow missing docstring in public method for tests
"D103", # Allow missing docstring in public function for tests
"D107", # Allow missing docstring in `__init__` for tests
"E501", # Allow line too long in tests
"N807", # Allow mocking `__init__` for tests
"S101", # Allow use of `assert` in tests
]
[tool.ruff.lint.isort]
known-first-party = ["mex", "tests"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[build-system]
requires = ["pdm-backend==2.3.3"]
build-backend = "pdm.backend"