From 6866a5372854e1119c61bfd333d88de5e68da3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksi=20H=C3=A4kli?= Date: Fri, 19 Dec 2025 21:07:12 +0200 Subject: [PATCH] chore: add Python 3.14 and Django 6.0 support --- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 14 ++++++++------ CHANGES.rst | 9 +++++++++ mypy.ini | 2 +- pyproject.toml | 18 +++++++++--------- setup.py | 6 +++--- 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0c215c..7d3aef0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: 3.12 - name: Install dependencies run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1bb0e4c..13ee46b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,23 +12,25 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] - django-version: ['4.2', '5.1', '5.2'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + django-version: ['4.2', '5.2', '6.0'] include: # Tox configuration for QA environment - - python-version: '3.13' + - python-version: '3.14' django-version: 'qa' # Django main - - python-version: '3.13' + - python-version: '3.14' django-version: 'main' experimental: true exclude: - python-version: '3.13' django-version: '4.2' - - python-version: '3.9' - django-version: '5.1' - python-version: '3.9' django-version: '5.2' + - python-version: '3.10' + django-version: '6.0' + - python-version: '3.11' + django-version: '6.0' steps: - uses: actions/checkout@v5 diff --git a/CHANGES.rst b/CHANGES.rst index 5c5acc4..09f67f0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,6 +2,15 @@ Changes ======= +Not yet released +---------------- + +- Add Python 3.14 support. +- Add Django 6.0 support. +- Remove Python 3.9 support (EOL). +- Remove Django 5.1 support (EOL). + + 8.0.0 (2025-05-10) ------------------ diff --git a/mypy.ini b/mypy.ini index 29269c5..822d184 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = 3.9 +python_version = 3.12 ignore_missing_imports = True [mypy-axes.migrations.*] diff --git a/pyproject.toml b/pyproject.toml index 5089acc..d39ebc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,25 +10,25 @@ DJANGO_SETTINGS_MODULE = "tests.settings" legacy_tox_ini = """ [tox] envlist = - py{39,310,311,312}-dj42 - py{310,311,312,313}-dj51 + py{310,311,312}-dj42 py{310,311,312,313}-dj52 - py311-djmain - py311-djqa + py{312,313,314}-dj60 + py312-djmain + py312-djqa [gh-actions] python = - 3.9: py39 3.10: py310 3.11: py311 3.12: py312 3.13: py313 + 3.14: py314 [gh-actions:env] DJANGO = 4.2: dj42 - 5.1: dj51 5.2: dj52 + 6.0: dj60 main: djmain qa: djqa @@ -37,8 +37,8 @@ DJANGO = deps = -r requirements-test.txt dj42: django>=4.2,<5 - dj51: django>=5.1,<5.2 dj52: django>=5.2,<6 + dj60: django>=6.0,<7 djmain: https://github.com/django/django/archive/main.tar.gz usedevelop = true commands = pytest @@ -51,10 +51,10 @@ ignore_errors = djmain: True # QA runs type checks, linting, and code formatting checks -[testenv:py313-djqa] +[testenv:py312-djqa] deps = -r requirements-qa.txt commands = mypy axes prospector - black -t py39 --check --diff axes + black -t py312 --check --diff axes """ diff --git a/setup.py b/setup.py index ea3bfbf..c2ca876 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ setup( package_dir={"axes": "axes"}, use_scm_version=True, setup_requires=["setuptools_scm"], - python_requires=">=3.9", + python_requires=">=3.10", install_requires=[ "django>=4.2", "asgiref>=3.6.0", @@ -51,19 +51,19 @@ setup( "Environment :: Plugins", "Framework :: Django", "Framework :: Django :: 4.2", - "Framework :: Django :: 5.1", "Framework :: Django :: 5.2", + "Framework :: Django :: 6.0", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "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", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: Log Analysis", "Topic :: Security",