-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathpyproject.toml
More file actions
157 lines (139 loc) · 4.91 KB
/
pyproject.toml
File metadata and controls
157 lines (139 loc) · 4.91 KB
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
[project]
name = "ephios"
dynamic = ["version"]
description = "ephios is a tool to manage shifts for medical services."
authors = [
{ name = "Julian Baumann", email = "julian@ephios.de" },
{ name = "Felix Rindt", email = "felix@ephios.de" },
]
requires-python = ">=3.11,<4"
readme = "README.md"
license = "MIT"
###############################
# Dependencies
###############################
dependencies = [
"Django[argon2]>=5.2,<5.3",
"django-environ>=0.11.2,<0.14",
"django-guardian>=3.2.0,<4",
"django-ical>=1.8.3,<2",
"django-polymorphic>=4.1,<5.0",
"django-select2>=8.0,<9.0",
"reportlab>=3.6.11,<5.0.0",
"django-formset-js-improved>=0.5.0,<0.6",
"django-csp>=4.0,<5",
"bleach>=6.0.0,<7.0.0",
"Markdown>=3.3.7,<4",
"django-compressor>=4.5,<5",
"django-statici18n>=2.3.1,<3",
"django-dynamic-preferences>=1.15.0,<2",
"django-crispy-forms>=2.0,<3",
"django-webpush>=0.3.5,<0.4",
"django-libsass>=0.9,<0.10",
"crispy-bootstrap5>=0.7,<2026.4",
"djangorestframework>=3.13.1,<4",
"django-coverage-plugin>=2.0.3,<4.0.0",
"django-filter>=24,<26",
"djangorestframework-guardian>=0.3,<0.5",
"uritemplate>=4.1.1,<5",
"django-oauth-toolkit>=3.0.1,<3.3.0",
"urllib3>=2.5.0,<3",
"pyyaml>=6.0.1,<7",
"lxml>=4.9.3,<7.0.0",
"beautifulsoup4>=4.13.3,<5",
"css-inline>=0.10.3,<0.21.0",
"requests>=2.31.0,<3",
"requests-oauthlib>=2.0,<3",
"pyjwt>=2.8.0,<3",
"scipy==1.17.1",
"drf-spectacular[sidecar]>=0.27.2,<0.30.0",
"python-dateutil>=2.9.0.post0,<3",
"cryptography>=46.0.3,<47",
"py-vapid>=1.9.4,<2",
"pywebpush>=2.2.0", # required because django-webpush depends on this in an old and broken version
]
[project.optional-dependencies]
pgsql = ["psycopg2>=2.9.3,<3"]
mysql = ["mysqlclient>=2.1.1,<3"]
redis = ["redis[hiredis]>=5,<8"]
[dependency-groups]
dev = [
"django-debug-toolbar>=3.6,<7.0",
"pytest-django>=4.5.2,<5",
"django-webtest>=1.9.9,<2",
"django-extensions>=3.2.1,<5.0.0",
"coverage>=6.4,<8.0",
"coveralls>=3.3.1,<5.0.0",
"django-coverage-plugin>=2.0.1,<4.0.0",
"pylint>=3.0.0,<5.0.0",
"sphinx>=8.2,<10.0.0",
"sphinx-rtd-theme>=3,<4",
"sphinx-intl>=2.0.1,<4.0.0",
"sphinx-github-changelog>=1.2.0,<2",
"djhtml>=3.0.6,<4",
"prek>=0.3.1",
"ruff>=0.15.0",
]
[project.urls]
Homepage = "https://ephios.de"
Repository = "https://github.com/ephios-dev/ephios"
Documentation = "https://docs.ephios.de/en/stable/"
Changelog = "https://docs.ephios.de/en/latest/changelog.html"
Coverage = "https://coveralls.io/github/ephios-dev/ephios"
"Report bugs" = "https://github.com/ephios-dev/ephios/issues"
[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.uv-dynamic-versioning]
fallback-version = "0.0.0" # used if no VCS info is available, e.g. dependabot builds
[tool.uv]
# as per https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md#build-caching-and-editable-installs
cache-keys = [{ file = "pyproject.toml" }, { git = { commit = true, tags = true }}]
###############################
# Tool configurations
###############################
[tool.ruff]
line-length = 100
[tool.ruff.format]
preview = true
[tool.ruff.lint]
preview = true
ignore = [
"RUF012", # mutable default value for class attribute: common in django migrations
"C408", # unneccassary call to dict(): we like to use dict() for readability in some cases
"RUF059", # unpacked variable is never used/prefix in underscore: we decided a full name is fine for unpacking
]
[tool.pylint.messages_control]
# C0330 and C0301 are disabled for use of black
disable = """C0301,
duplicate-code, attribute-defined-outside-init, missing-module-docstring, missing-class-docstring,
no-member, invalid-name, import-outside-toplevel, unused-argument, too-many-ancestors, missing-function-docstring,
too-few-public-methods, too-many-arguments, cyclic-import, inconsistent-return-statements,
useless-object-inheritance, logging-fstring-interpolation, consider-using-f-string, too-many-positional-arguments,
unsupported-membership-test, unused-import
"""
[tool.pylint.format]
max-line-length = "100"
[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "tests.settings"
addopts = "--fail-on-template-vars"
pythonpath = [
"src", # to find ephios
".", # to find tests and esp. tests.settings
]
filterwarnings = [
# displaying naive datetime warnings as errors
# as seen in https://docs.djangoproject.com/en/4.1/topics/i18n/timezones/#code
# and https://docs.pytest.org/en/stable/how-to/capture-warnings.html#controlling-warnings
'error:DateTimeField .* received a naive datetime',
]
[tool.coverage.run]
plugins = [
'django_coverage_plugin',
]
include = ['src/ephios/*.py', 'src/ephios/*.html']
branch = true
[tool.coverage.django_coverage_plugin]
template_extensions = 'html, txt, tex, email'