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
4 changes: 2 additions & 2 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand All @@ -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: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-to-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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', '3.14']
steps:
- uses: actions/checkout@v4

Expand Down
54 changes: 16 additions & 38 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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', '3.14']
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'
Expand All @@ -73,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
Expand Down Expand Up @@ -112,11 +90,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
5 changes: 5 additions & 0 deletions ChangeLog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@ 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
- Drop support for Django 3.0
- Drop support for Django 3.1

1.9.7 (2025-03-22)
------------------
Expand Down
12 changes: 4 additions & 8 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,15 @@ 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 |
+------------------------+-----------------------------------+
| 5.2 | 3.10, 3.11, 3.12, 3.13 |
| 5.2 | 3.10, 3.11, 3.12, 3.13, 3.14 |
+------------------------+-----------------------------------+


Expand Down
15 changes: 6 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools ~= 75.0"]
requires = ["setuptools >= 80.9.0, < 81"]
build-backend = "setuptools.build_meta"

[project]
Expand All @@ -8,32 +8,29 @@ 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.9"
requires-python = ">=3.10"
dependencies = [
"Django>=2.2",
"Django>=3.2",
]
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",
"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",
"Programming Language :: Python :: 3.14",
"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",
Expand Down
16 changes: 6 additions & 10 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
; 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,314}-django{52}-{postgresql,sqlite}
py{310,311,312,313}-flake8

[testenv]
passenv =
postgresql: POSTGRES_USER POSTGRES_PASSWORD
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
Expand All @@ -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
Expand Down
Loading