From 22a9341d27ac7d50a087945c0b67668252d91620 Mon Sep 17 00:00:00 2001 From: Lincoln Puzey <18750802+LincolnPuzey@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:51:37 +0800 Subject: [PATCH 1/3] Drop python 3.9 support --- .github/workflows/linting.yml | 4 +-- .github/workflows/publish-to-pypi.yml | 2 +- .github/workflows/tests.yml | 42 +++------------------------ ChangeLog.rst | 4 +++ README.rst | 10 ++----- pyproject.toml | 8 ++--- tox.ini | 14 ++++----- 7 files changed, 21 insertions(+), 63 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index e2fdd2a..0285eae 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: '3.10' - name: Install flake8 run: | @@ -42,7 +42,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: '3.10' - name: Install bandit run: | diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index 212e04e..e734778 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -17,7 +17,7 @@ jobs: strategy: # Matrix to exercise the build backend on all versions of python supported matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e18809e..05ee4dd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,54 +15,20 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] - django: ['2.2', '3.0', '3.1', '3.2', '4.0', '4.1', '4.2', '5.0', '5.1', '5.2'] + python: ['3.10', '3.11', '3.12', '3.13'] + django: ['3.2', '4.0', '4.1', '4.2', '5.0', '5.1', '5.2'] database: ['postgres', 'sqlite'] exclude: - - python: '3.9' - django: '5.0' - - python: '3.9' - django: '5.1' - - python: '3.9' - django: '5.2' - - python: '3.10' - django: '2.2' - - python: '3.10' - django: '3.0' - - python: '3.10' - django: '3.1' - - python: '3.11' - django: '2.0' - - python: '3.11' - django: '2.1' - - python: '3.11' - django: '2.2' - - python: '3.11' - django: '3.0' - - python: '3.11' - django: '3.1' - python: '3.11' django: '3.2' - python: '3.11' django: '4.0' - - python: '3.12' - django: '2.2' - - python: '3.12' - django: '3.0' - - python: '3.12' - django: '3.1' - python: '3.12' django: '3.2' - python: '3.12' django: '4.0' - python: '3.12' django: '4.1' - - python: '3.13' - django: '2.2' - - python: '3.13' - django: '3.0' - - python: '3.13' - django: '3.1' - python: '3.13' django: '3.2' - python: '3.13' @@ -112,11 +78,11 @@ jobs: run: coverage report - name: Create XML coverage report for coveralls.io - if: ${{ matrix.django == '4.2' && matrix.python == '3.10' && matrix.database == 'postgres' }} + if: ${{ matrix.django == '5.2' && matrix.python == '3.12' && matrix.database == 'postgres' }} run: coverage xml - name: Upload coverage report to coveralls.io - if: ${{ matrix.django == '4.2' && matrix.python == '3.10' && matrix.database == 'postgres' }} + if: ${{ matrix.django == '5.2' && matrix.python == '3.12' && matrix.database == 'postgres' }} uses: coverallsapp/github-action@v2 with: file: coverage.xml diff --git a/ChangeLog.rst b/ChangeLog.rst index 2b7ba57..f9c415c 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -8,6 +8,10 @@ unreleased *New:* - Confirm support for Django 5.2 + - Drop support for Python 3.9 + - Drop support for Django 2.2 + - Drop support for Django 3.0 + - Drop support for Django 3.1 1.9.7 (2025-03-22) ------------------ diff --git a/README.rst b/README.rst index aaa5bf5..49ea9ef 100644 --- a/README.rst +++ b/README.rst @@ -27,15 +27,11 @@ This package is compatible and tested with the following Python & Django version +------------------------+-----------------------------------+ | Django | Python | +========================+===================================+ -| 2.2, 3.0, 3.1 | 3.9 | +| 3.2, 4.0 | 3.10 | +------------------------+-----------------------------------+ -| 3.2, 4.0 | 3.9, 3.10 | +| 4.1 | 3.10, 3.11 | +------------------------+-----------------------------------+ -| 4.1 | 3.9, 3.10, 3.11 | -+------------------------+-----------------------------------+ -| 4.2 | 3.9, 3.10, 3.11, 3.12 | -+------------------------+-----------------------------------+ -| 5.0 | 3.10, 3.11, 3.12 | +| 4.2, 5.0 | 3.10, 3.11, 3.12 | +------------------------+-----------------------------------+ | 5.1 | 3.10, 3.11, 3.12, 3.13 | +------------------------+-----------------------------------+ diff --git a/pyproject.toml b/pyproject.toml index b7993c5..f27c056 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,9 +11,9 @@ readme = {file = "README.rst", content-type = "text/x-rst"} license = {file = "LICENSE"} authors = [{name = "Romain Garrigues"}] maintainers = [{name = "Lincoln Puzey"}] -requires-python = ">=3.9" +requires-python = ">=3.10" dependencies = [ - "Django>=2.2", + "Django>=3.2", ] classifiers = [ "Development Status :: 5 - Production/Stable", @@ -25,15 +25,11 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "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", "Framework :: Django", - "Framework :: Django :: 2.2", - "Framework :: Django :: 3.0", - "Framework :: Django :: 3.1", "Framework :: Django :: 3.2", "Framework :: Django :: 4.0", "Framework :: Django :: 4.1", diff --git a/tox.ini b/tox.ini index b2e304c..15d4a5f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,14 +1,13 @@ ; tox is just used for testing the python/django matrix locally [tox] envlist = - py{39}-django{22,30,31}-{postgresql,sqlite} - py{39,310}-django{32,40}-{postgresql,sqlite} - py{39,310,311}-django{41}-{postgresql,sqlite} - py{39,310,311,312}-django{42}-{postgresql,sqlite} + py{310}-django{32,40}-{postgresql,sqlite} + py{310,311}-django{41}-{postgresql,sqlite} + py{310,311,312}-django{42}-{postgresql,sqlite} py{310,311,312}-django{50}-{postgresql,sqlite} py{310,311,312,313}-django{51}-{postgresql,sqlite} py{310,311,312,313}-django{52}-{postgresql,sqlite} - py{39,310,311,312}-flake8 + py{310,311,312,313}-flake8 [testenv] passenv = @@ -16,9 +15,6 @@ passenv = setenv = PYTHONPATH = {toxinidir} deps = - django22: Django>=2.2,<2.3 - django30: Django>=3.0,<3.1 - django31: Django>=3.1,<3.2 django32: Django>=3.2,<3.3 django40: Django>=4.0,<4.1 django41: Django>=4.1,<4.2 @@ -34,7 +30,7 @@ commands = coverage run -m pytest -v coverage report -[testenv:py{39,310,311,312}-flake8] +[testenv:py{310,311,312,313}-flake8] skip_install = True dependency_groups = lint From 28a05a763b40a64cf05f5031375f3fa2ca0a2049 Mon Sep 17 00:00:00 2001 From: Lincoln Puzey <18750802+LincolnPuzey@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:04:21 +0800 Subject: [PATCH 2/3] Add Python 3.14 to test matrix --- .github/workflows/publish-to-pypi.yml | 2 +- .github/workflows/tests.yml | 14 +++++++++++++- ChangeLog.rst | 1 + README.rst | 2 +- pyproject.toml | 1 + tox.ini | 2 +- 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index e734778..74dd7fc 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -17,7 +17,7 @@ jobs: strategy: # Matrix to exercise the build backend on all versions of python supported matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 05ee4dd..be58af1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] django: ['3.2', '4.0', '4.1', '4.2', '5.0', '5.1', '5.2'] database: ['postgres', 'sqlite'] exclude: @@ -39,6 +39,18 @@ jobs: django: '4.2' - python: '3.13' django: '5.0' + - python: '3.14' + django: '3.2' + - python: '3.14' + django: '4.0' + - python: '3.14' + django: '4.1' + - python: '3.14' + django: '4.2' + - python: '3.14' + django: '5.0' + - python: '3.14' + django: '5.1' services: # as far as I can see, no way to make this conditional on the matrix database diff --git a/ChangeLog.rst b/ChangeLog.rst index f9c415c..7fc7041 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -7,6 +7,7 @@ unreleased ---------- *New:* + - Confirm support for Python 3.14 - Confirm support for Django 5.2 - Drop support for Python 3.9 - Drop support for Django 2.2 diff --git a/README.rst b/README.rst index 49ea9ef..481d3d3 100644 --- a/README.rst +++ b/README.rst @@ -35,7 +35,7 @@ This package is compatible and tested with the following Python & Django version +------------------------+-----------------------------------+ | 5.1 | 3.10, 3.11, 3.12, 3.13 | +------------------------+-----------------------------------+ -| 5.2 | 3.10, 3.11, 3.12, 3.13 | +| 5.2 | 3.10, 3.11, 3.12, 3.13, 3.14 | +------------------------+-----------------------------------+ diff --git a/pyproject.toml b/pyproject.toml index f27c056..32e086c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Framework :: Django", "Framework :: Django :: 3.2", "Framework :: Django :: 4.0", diff --git a/tox.ini b/tox.ini index 15d4a5f..681d007 100644 --- a/tox.ini +++ b/tox.ini @@ -6,7 +6,7 @@ envlist = py{310,311,312}-django{42}-{postgresql,sqlite} py{310,311,312}-django{50}-{postgresql,sqlite} py{310,311,312,313}-django{51}-{postgresql,sqlite} - py{310,311,312,313}-django{52}-{postgresql,sqlite} + py{310,311,312,313,314}-django{52}-{postgresql,sqlite} py{310,311,312,313}-flake8 [testenv] From b5c374b884b1da25a2b36ffb31e467ee2fd684ad Mon Sep 17 00:00:00 2001 From: Lincoln Puzey <18750802+LincolnPuzey@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:17:35 +0800 Subject: [PATCH 3/3] Upgrade to latest setuptools version --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 32e086c..324ee50 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools ~= 75.0"] +requires = ["setuptools >= 80.9.0, < 81"] build-backend = "setuptools.build_meta" [project] @@ -8,7 +8,8 @@ dynamic = ["version"] description = "Tracking dirty fields on a Django model instance." keywords = ["django", "dirtyfields", "track", "model", "changes"] readme = {file = "README.rst", content-type = "text/x-rst"} -license = {file = "LICENSE"} +license = "BSD-3-Clause" +license-files = ["LICENSE"] authors = [{name = "Romain Garrigues"}] maintainers = [{name = "Lincoln Puzey"}] requires-python = ">=3.10" @@ -19,7 +20,6 @@ classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Topic :: Software Development :: Libraries :: Python Modules", - "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python",