-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
106 lines (99 loc) · 2.27 KB
/
Copy pathpyproject.toml
File metadata and controls
106 lines (99 loc) · 2.27 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
[project]
name = "props"
version = "0.0.0"
description = "Self-hosted asset tracking for community organisations"
readme = "README.md"
license = "AGPL-3.0-only"
requires-python = ">=3.12"
dependencies = [
# Core
"Django>=5.2,<6.0",
"gunicorn>=23",
"psycopg[binary]>=3.2",
"whitenoise>=6.8",
# Security
"django-ratelimit>=4.1",
# Storage
"django-storages[boto3]>=1.14",
"Pillow>=11",
"pi-heif>=0.20",
# Avatars
"django-gravatar2>=1.4",
# Frontend
"django-htmx>=1.20",
# Admin
"django-unfold>=0.60",
# Background tasks
"celery[redis]>=5.4",
"django-celery-beat>=2.7",
"redis>=5",
# WebSocket / ASGI support
"channels>=4.2",
"channels-redis>=4.2",
"daphne>=4.1",
# Barcode & QR
"python-barcode[images]>=0.15",
"qrcode[pil]>=8",
# Export
"openpyxl>=3.1",
"weasyprint>=63",
# AI (optional at runtime, required at build)
"anthropic>=0.50",
# Error tracking
"sentry-sdk[django,celery]>=2.20",
# Colour
"coloraide>=4",
]
[dependency-groups]
dev = [
"black>=25",
"flake8>=7",
"isort>=6",
"pip-audit>=2.8",
"pre-commit>=4",
"pytest-django>=4.9",
"pytest-asyncio>=0.25",
"pytest-xdist>=3.6",
"pytest-cov>=6",
"factory-boy>=3.3",
]
[tool.uv]
package = false
[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "props.settings"
pythonpath = ["src"]
testpaths = ["src"]
python_files = ["tests.py", "test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
norecursedirs = ["media", "staticfiles", "static", "templates", "tailwind", "migrations"]
addopts = "-v --tb=short -n auto --cov=. --cov-report=term-missing:skip-covered"
[tool.black]
line-length = 79
target-version = ["py312"]
[tool.isort]
profile = "black"
line_length = 79
known_django = ["django"]
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "DJANGO", "FIRSTPARTY", "LOCALFOLDER"]
[tool.coverage.run]
omit = [
"*/migrations/*",
"*/tests.py",
"*/conftest.py",
"*/factories.py",
"*/manage.py",
"*/wsgi.py",
"*/asgi.py",
]
[tool.coverage.report]
show_missing = true
skip_covered = true
fail_under = 70
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if __name__ == .__main__.",
"raise NotImplementedError",
"pass",
]