Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,27 @@ repos:
args: [--unsafe] # allow !!python/name:... tags in mkdocs.yml
- id: end-of-file-fixer
- id: trailing-whitespace

- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell # See pyproject.toml for args
additional_dependencies:
- tomli

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
hooks:
- id: ruff-check
args: [--fix]
- id: ruff-format

- repo: https://github.com/tox-dev/pyproject-fmt
rev: v2.11.0
hooks:
- id: pyproject-fmt

- repo: https://github.com/abravalheri/validate-pyproject
rev: v0.24.1
hooks:
- id: validate-pyproject
8 changes: 4 additions & 4 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

## v4.0.10 🌈

Welcome @cclauss and @DhavalGojiya asdoc new maintainers!
Welcome @cclauss and @DhavalGojiya as new maintainers!

### 🧰 Maintenance

- Add ruff linting rules to CI #314 #312 #310 #317
- Add pre-commit rules #316
- Add pre-commit hooks #316, #322
- Add intro video to README #308

## v4.0.9 🌈
Expand All @@ -16,8 +16,8 @@ Welcome @cclauss and @DhavalGojiya asdoc new maintainers!

### 🧰 Maintenance

- Support for python 3.14
- Add python 3.14 to test matrix @cclauss #302
- Support for Python 3.14
- Add Python 3.14 to test matrix @cclauss #302
- Turn off fail-fast @cclauss #303
- Fix typos in docs @cclauss #304

Expand Down
199 changes: 99 additions & 100 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,122 +1,119 @@
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
requires = [ "hatchling" ]

[project]
name = "django-tasks-scheduler"
version = "4.0.10"
description = "An async job scheduler for django using redis/valkey brokers"
authors = [{ name = "Daniel Moran", email = "daniel@moransoftware.ca" }]
requires-python = ">=3.10"
readme = "README.md"
license = "MIT"
maintainers = [{ name = "Daniel Moran", email = "daniel@moransoftware.ca" }]
keywords = [
"redis",
"valkey",
"django",
"background-jobs",
"job-queue",
"task-queue",
"redis-queue",
"scheduled-jobs",
"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",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"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",
"Framework :: Django",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"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 = [
"django>=5",
"croniter>=2.0",
"click~=8.2",
"typing-extensions>=4.15.0",
"click~=8.2",
"croniter>=2",
"django>=5",
"typing-extensions>=4.15",
]

[project.optional-dependencies]
yaml = ["pyyaml~=6.0", "types-PyYAML>=6.0.12.20250516"]
valkey = ["valkey>=6.0.2,<7"]
sentry = ["sentry-sdk~=2.19"]

[project.urls]
Homepage = "https://github.com/django-commons/django-tasks-scheduler"
Documentation = "https://django-tasks-scheduler.readthedocs.io/"
"Bug Tracker" = "https://github.com/django-commons/django-tasks-scheduler/issues"
Funding = "https://github.com/sponsors/cunla"
optional-dependencies.sentry = [ "sentry-sdk~=2.19" ]
optional-dependencies.valkey = [ "valkey>=6.0.2,<7" ]
optional-dependencies.yaml = [ "pyyaml~=6.0", "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 = [
"pre-commit>=4.2",
"time-machine>=2.19",
"ruff>=0.13",
"coverage[toml]>=7.10",
"fakeredis>=2.28",
"pyyaml>=6",
"mypy>=1.18",
"types-croniter>=6.0.0.20250411",
"beautifulsoup4>=4.13.4"
"beautifulsoup4>=4.13.4",
"coverage[toml]>=7.10",
"fakeredis>=2.28",
"mypy>=1.18",
"pre-commit>=4.2",
"pyyaml>=6",
"ruff>=0.13",
"time-machine>=2.19",
"types-croniter>=6.0.0.20250411",
]

[tool.hatch.build.targets.sdist]
include = ["scheduler"]
include = [ "scheduler" ]

[tool.hatch.build.targets.wheel]
include = ["scheduler"]
include = [ "scheduler" ]

[tool.ruff]
line-length = 120
exclude = [
'__pycache__',
'.github',
'.venv',
'scheduler/migrations',
'testproject',
".github",
".venv",
"__pycache__",
"scheduler/migrations",
"testproject",
]

[tool.ruff.lint]
select = [
"A", # flake8-builtins
"AIR", # Airflow
"ASYNC", # flake8-async
"C4", # flake8-comprehensions
"C90", # McCabe cyclomatic complexity
"DJ", # flake8-django
"E", # pycodestyle
"EXE", # flake8-executable
"F", # Pyflakes
"FA", # flake8-future-annotations
"FAST", # FastAPI
"FIX", # flake8-fixme
"FLY", # flynt
"FURB", # refurb
"ICN", # flake8-import-conventions
"INP", # flake8-no-pep420
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"LOG", # flake8-logging
"NPY", # NumPy-specific rules
"PD", # pandas-vet
"PERF", # Perflint
"PIE", # flake8-pie
"RSE", # flake8-raise
"SLOT", # flake8-slots
"T10", # flake8-debugger
"TC", # flake8-type-checking
"TD", # flake8-todos
"W", # pycodestyle
"YTT", # flake8-2020
lint.select = [
"A", # flake8-builtins
"AIR", # Airflow
"ASYNC", # flake8-async
"C4", # flake8-comprehensions
"C90", # McCabe cyclomatic complexity
"DJ", # flake8-django
"E", # pycodestyle
"EXE", # flake8-executable
"F", # Pyflakes
"FA", # flake8-future-annotations
"FAST", # FastAPI
"FIX", # flake8-fixme
"FLY", # flynt
"FURB", # refurb
"ICN", # flake8-import-conventions
"INP", # flake8-no-pep420
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"LOG", # flake8-logging
"NPY", # NumPy-specific rules
"PD", # pandas-vet
"PERF", # Perflint
"PIE", # flake8-pie
"RSE", # flake8-raise
"SLOT", # flake8-slots
"T10", # flake8-debugger
"TC", # flake8-type-checking
"TD", # flake8-todos
"W", # pycodestyle
"YTT", # flake8-2020
# "ANN", # flake8-annotations
# "ARG", # flake8-unused-arguments
# "B", # flake8-bugbear
Expand Down Expand Up @@ -148,18 +145,20 @@ select = [
# "TRY", # tryceratops
# "UP", # pyupgrade
]
extend-ignore = ["PIE790"]
mccabe.max-complexity = 13
per-file-ignores."scheduler/models/args.py" = ["DJ012"]
per-file-ignores."scheduler/models/ephemeral_models.py" = ["DJ008"]
per-file-ignores."scheduler/models/task.py" = ["DJ001", "DJ012"]
lint.extend-ignore = [ "PIE790" ]
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.mccabe.max-complexity = 13

[tool.mypy]
packages = ['scheduler', ]
exclude = ["scheduler/tests/.*\\.py",
"scheduler/migrations/.*\\.py",
"testproject/.*\\.py",
"testproject/tests/.*\\.py"]
packages = [ 'scheduler' ]
exclude = [
"scheduler/tests/.*\\.py",
"scheduler/migrations/.*\\.py",
"testproject/.*\\.py",
"testproject/tests/.*\\.py",
]
strict = true
follow_imports = "silent"
ignore_missing_imports = true
Expand Down
Loading