-
-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathpyproject.toml
More file actions
112 lines (107 loc) · 3.54 KB
/
Copy pathpyproject.toml
File metadata and controls
112 lines (107 loc) · 3.54 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
[build-system]
build-backend = "hatchling.build"
requires = [ "hatchling" ]
[project]
name = "django-tasks-scheduler"
version = "4.2.1"
description = "An async job scheduler for django using redis/valkey brokers"
readme = "README.md"
keywords = [
"background-jobs",
"django",
"job-queue",
"redis",
"redis-queue",
"scheduled-jobs",
"task-queue",
"valkey",
]
license = "MIT"
maintainers = [ { name = "Daniel Moran", email = "daniel@moransoftware.ca" } ]
authors = [ { name = "Daniel Moran", email = "daniel@moransoftware.ca" } ]
requires-python = ">=3.10"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Framework :: Django :: 6.0",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"click~=8.2",
"croniter>=2",
"django>=5",
"typing-extensions>=4.15",
]
optional-dependencies.sentry = [ "sentry-sdk~=2.19" ]
optional-dependencies.valkey = [ "valkey>=6.0.2" ]
optional-dependencies.yaml = [ "pyyaml>=6", "types-pyyaml>=6.0.12.20250516" ]
urls."Bug Tracker" = "https://github.com/django-commons/django-tasks-scheduler/issues"
urls.Documentation = "https://django-tasks-scheduler.readthedocs.io/"
urls.Funding = "https://github.com/sponsors/cunla"
urls.Homepage = "https://github.com/django-commons/django-tasks-scheduler"
[dependency-groups]
dev = [
"beautifulsoup4>=4.13.4",
"coverage[toml]>=7.10",
"fakeredis>=2.28",
"mypy>=1.20",
"pre-commit>=4.2",
"pyyaml>=6",
"ruff>=0.16",
"time-machine>=2.19",
"types-croniter>=6.0.0.20250411",
]
docs = [ "mkdocs>=1.6.1", "mkdocs-material>=9.7.4" ]
[tool.hatch]
build.targets.wheel.include = [ "scheduler" ]
build.targets.sdist.include = [ "scheduler" ]
[tool.ruff]
line-length = 120
exclude = [ ".venv", "__pycache__", "scheduler/migrations", "testproject" ]
lint.extend-ignore = [
# Broad `except Exception` is deliberate: worker/view/template code must degrade gracefully rather than crash.
"BLE001",
"PIE790",
# Django conventions use plain lists/tuples for admin options and `Meta` attributes.
"RUF012",
]
lint.per-file-ignores."scheduler/management/commands/import.py" = [
"N999", # module name is dictated by the management command name
]
lint.per-file-ignores."scheduler/models/args.py" = [ "DJ012" ]
lint.per-file-ignores."scheduler/models/ephemeral_models.py" = [ "DJ008" ]
lint.per-file-ignores."scheduler/models/task.py" = [ "DJ001", "DJ012" ]
lint.per-file-ignores."scheduler/tests/**" = [
"B017", # assertRaises(Exception) is fine when the broker-specific error type is irrelevant
"DTZ001", # naive datetimes are used on purpose to exercise Django's USE_TZ handling
"DTZ005",
"S110", # try/except/pass in test setup
"SIM115", # NamedTemporaryFile handles are kept on the test case across setUp/tearDown
]
lint.mccabe.max-complexity = 13
[tool.mypy]
packages = [ "scheduler" ]
exclude = [
"scheduler/migrations/.*\\.py",
"scheduler/tests/.*\\.py",
"testproject/.*\\.py",
"testproject/tests/.*\\.py",
]
ignore_missing_imports = true
follow_imports = "silent"
check_untyped_defs = true
strict = true
scripts_are_modules = true