diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0a545a77..df15745f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -77,29 +77,31 @@ jobs: fail-fast: false matrix: include: - - {name: 'linting,docs', python: '3.14', allow_failure: false} + - {name: 'linting,docs', python: '3.14', allow_failure: false} # Django 5.2 LTS / Python 3.10–3.14 - - {name: py310-dj52-mysql-coverage, python: '3.10', allow_failure: false} - - {name: py311-dj52-sqlite-xdist-coverage, python: '3.11', allow_failure: false} - - {name: py311-dj52-mysql-coverage, python: '3.11', allow_failure: false} - - {name: py312-dj52-postgres-xdist-coverage, python: '3.12', allow_failure: false} - - {name: py313-dj52-sqlite-coverage, python: '3.13', allow_failure: false} - - {name: py314-dj52-postgres-xdist-coverage, python: '3.14', allow_failure: false} + - {name: py310-dj52-mysql-coverage, python: '3.10', allow_failure: false} + - {name: py311-dj52-sqlite-xdist-coverage, python: '3.11', allow_failure: false} + - {name: py311-dj52-mysql-coverage, python: '3.11', allow_failure: false} + - {name: py312-dj52-postgres-xdist-coverage, python: '3.12', allow_failure: false} + - {name: py313-dj52-sqlite-coverage, python: '3.13', allow_failure: false} + - {name: py314-dj52-postgres-xdist-coverage, python: '3.14', allow_failure: false} # Django 6.0 / Python 3.12–3.14 - - {name: py312-dj60-postgres-xdist-coverage, python: '3.12', allow_failure: false} - - {name: py313-dj60-sqlite-coverage, python: '3.13', allow_failure: false} - - {name: py314-dj60-postgres-xdist-coverage, python: '3.14', allow_failure: false} + - {name: py312-dj60-postgres-xdist-coverage, python: '3.12', allow_failure: false} + - {name: py313-dj60-sqlite-coverage, python: '3.13', allow_failure: false} + - {name: py314-dj60-postgres-xdist-coverage, python: '3.14', allow_failure: false} + - {name: py314t-dj60-postgres-xdist-coverage, python: '3.14t', allow_failure: false} # Pin the minimum supported pytest on the latest stable combo. - - {name: py313-dj60-sqlite-pytestmin-coverage, python: '3.13', allow_failure: false} + - {name: py313-dj60-sqlite-pytestmin-coverage, python: '3.13', allow_failure: false} # Django main / Python [latest] - - {name: py313-djmain-sqlite-coverage, python: '3.13', allow_failure: true} - - {name: py314-djmain-postgres-xdist-coverage, python: '3.14', allow_failure: true} + - {name: py313-djmain-sqlite-coverage, python: '3.13', allow_failure: true} + - {name: py314-djmain-postgres-xdist-coverage, python: '3.14', allow_failure: true} + - {name: py314t-djmain-postgres-xdist-coverage, python: '3.14t', allow_failure: true} # PyPy: one representative combo, no coverage (too slow) - - {name: pypy3-dj52-postgres, python: 'pypy3.10', allow_failure: false} + - {name: pypy3-dj52-postgres, python: 'pypy3.10', allow_failure: false} check: # This job does nothing and is only used for the branch protection if: always() diff --git a/docs/changelog.rst b/docs/changelog.rst index 98c7dcdd..3684cb78 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -7,6 +7,7 @@ v4.12.1 (unreleased) Compatibility ^^^^^^^^^^^^^ +* Official Python 3.14 support (with free threading support). * Dropped support for Django 4.2 and 5.1. Bugfixes diff --git a/docs/contributing.rst b/docs/contributing.rst index 897d4ae0..06fd6064 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -140,9 +140,9 @@ writing), running them all will take a long time. All valid configurations can be found in `tox.ini`. To test against a few of them, invoke tox with the `-e` flag:: - $ tox -e py39-dj42-postgres,py310-dj52-mysql + $ tox -e py314-dj60-postgres,py310-dj52-mysql -This will run the tests on Python 3.9/Django 4.2/PostgeSQL and Python +This will run the tests on Python 3.14/Django 6.0/PostgeSQL and Python 3.10/Django 5.2/MySQL. diff --git a/pyproject.toml b/pyproject.toml index 1349d7ba..7119937e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ coverage = [ "coverage-enable-subprocess", ] postgres = [ - "psycopg[binary]", + "psycopg", ] mysql = [ "mysqlclient==2.2.7", diff --git a/tox.ini b/tox.ini index 1966812f..5f70066e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py314-dj{main,60,52}-postgres + py314{t}-dj{main,60,52}-postgres py313-dj{main,60,52}-postgres py312-dj{main,60,52}-postgres py311-dj{52}-postgres