summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/docs.yml6
-rw-r--r--.github/workflows/linters.yml4
-rw-r--r--.github/workflows/postgis.yml2
-rw-r--r--.github/workflows/schedule_tests.yml10
-rw-r--r--.github/workflows/screenshots.yml2
-rw-r--r--.github/workflows/selenium.yml4
-rw-r--r--.github/workflows/tests.yml2
-rw-r--r--docs/faq/install.txt4
-rw-r--r--docs/howto/windows.txt4
-rw-r--r--docs/intro/reusable-apps.txt1
-rw-r--r--docs/releases/5.2.8.txt3
-rw-r--r--docs/releases/5.2.txt5
-rw-r--r--docs/releases/6.0.txt4
-rw-r--r--pyproject.toml1
-rw-r--r--tests/mail/tests.py2
-rw-r--r--tests/requirements/py3.txt2
-rw-r--r--tox.ini2
17 files changed, 31 insertions, 27 deletions
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 90731ebcfc..6e4a9cdd1b 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -29,7 +29,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'docs/requirements.txt'
- run: python -m pip install -r docs/requirements.txt
@@ -47,7 +47,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install blacken-docs
- name: Build docs
run: |
@@ -68,7 +68,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install sphinx-lint
- name: Build docs
run: |
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index 9a70cb03b7..b5359efc3d 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -27,7 +27,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install flake8
- name: flake8
# Pinned to v3.0.0.
@@ -44,7 +44,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install isort
- name: isort
# Pinned to v3.0.0.
diff --git a/.github/workflows/postgis.yml b/.github/workflows/postgis.yml
index c19b19b8a4..42e9b83320 100644
--- a/.github/workflows/postgis.yml
+++ b/.github/workflows/postgis.yml
@@ -42,7 +42,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Update apt repo
diff --git a/.github/workflows/schedule_tests.yml b/.github/workflows/schedule_tests.yml
index f59b357732..b74ca0474c 100644
--- a/.github/workflows/schedule_tests.yml
+++ b/.github/workflows/schedule_tests.yml
@@ -18,7 +18,7 @@ jobs:
python-version:
- '3.12'
- '3.13'
- - '3.14-dev'
+ - '3.14'
name: Windows, SQLite, Python ${{ matrix.python-version }}
continue-on-error: true
steps:
@@ -45,7 +45,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
- name: Install libmemcached-dev for pylibmc
run: sudo apt-get install libmemcached-dev
@@ -86,7 +86,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
@@ -122,7 +122,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
@@ -167,7 +167,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
diff --git a/.github/workflows/screenshots.yml b/.github/workflows/screenshots.yml
index c701236630..b61ab73486 100644
--- a/.github/workflows/screenshots.yml
+++ b/.github/workflows/screenshots.yml
@@ -24,7 +24,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install and upgrade packaging tools
diff --git a/.github/workflows/selenium.yml b/.github/workflows/selenium.yml
index 9348a3550a..30026f22dd 100644
--- a/.github/workflows/selenium.yml
+++ b/.github/workflows/selenium.yml
@@ -24,7 +24,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
@@ -61,7 +61,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index d293f4dd0a..f46ec6dd2e 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -23,7 +23,7 @@ jobs:
strategy:
matrix:
python-version:
- - '3.13'
+ - '3.14'
name: Windows, SQLite, Python ${{ matrix.python-version }}
steps:
- name: Checkout
diff --git a/docs/faq/install.txt b/docs/faq/install.txt
index 1cdf40fd78..5432bf7570 100644
--- a/docs/faq/install.txt
+++ b/docs/faq/install.txt
@@ -53,8 +53,8 @@ Django version Python versions
4.2 3.8, 3.9, 3.10, 3.11, 3.12 (added in 4.2.8)
5.0 3.10, 3.11, 3.12
5.1 3.10, 3.11, 3.12, 3.13 (added in 5.1.3)
-5.2 3.10, 3.11, 3.12, 3.13
-6.0 3.12, 3.13
+5.2 3.10, 3.11, 3.12, 3.13, 3.14 (added in 5.2.8)
+6.0 3.12, 3.13, 3.14
============== ===============
For each version of Python, only the latest micro release (A.B.C) is officially
diff --git a/docs/howto/windows.txt b/docs/howto/windows.txt
index 235b18a24f..63e497be04 100644
--- a/docs/howto/windows.txt
+++ b/docs/howto/windows.txt
@@ -2,7 +2,7 @@
How to install Django on Windows
================================
-This document will guide you through installing Python 3.13 and Django on
+This document will guide you through installing Python 3.14 and Django on
Windows. It also provides instructions for setting up a virtual environment,
which makes it easier to work on Python projects. This is meant as a beginner's
guide for users working on Django projects and does not reflect how Django
@@ -18,7 +18,7 @@ Install Python
==============
Django is a Python web framework, thus requiring Python to be installed on your
-machine. At the time of writing, Python 3.13 is the latest version.
+machine. At the time of writing, Python 3.14 is the latest version.
To install Python on your machine go to https://www.python.org/downloads/. The
website should offer you a download button for the latest Python version.
diff --git a/docs/intro/reusable-apps.txt b/docs/intro/reusable-apps.txt
index c82a2b456e..627cf3292e 100644
--- a/docs/intro/reusable-apps.txt
+++ b/docs/intro/reusable-apps.txt
@@ -235,6 +235,7 @@ this. For a small app like polls, this process isn't too difficult.
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
]
diff --git a/docs/releases/5.2.8.txt b/docs/releases/5.2.8.txt
index dc750e4636..4151012387 100644
--- a/docs/releases/5.2.8.txt
+++ b/docs/releases/5.2.8.txt
@@ -4,7 +4,8 @@ Django 5.2.8 release notes
*Expected November 5, 2025*
-Django 5.2.8 fixes several bugs in 5.2.7.
+Django 5.2.8 fixes several bugs in 5.2.7 and adds compatibility with Python
+3.14.
Bugfixes
========
diff --git a/docs/releases/5.2.txt b/docs/releases/5.2.txt
index fa005bd550..728218cb07 100644
--- a/docs/releases/5.2.txt
+++ b/docs/releases/5.2.txt
@@ -23,8 +23,9 @@ end in April 2026.
Python compatibility
====================
-Django 5.2 supports Python 3.10, 3.11, 3.12, and 3.13. We **highly recommend**
-and only officially support the latest release of each series.
+Django 5.2 supports Python 3.10, 3.11, 3.12, 3.13, and 3.14 (as of 5.2.8). We
+**highly recommend** and only officially support the latest release of each
+series.
.. _whats-new-5.2:
diff --git a/docs/releases/6.0.txt b/docs/releases/6.0.txt
index fd30c66121..0c9da42cc6 100644
--- a/docs/releases/6.0.txt
+++ b/docs/releases/6.0.txt
@@ -18,8 +18,8 @@ project.
Python compatibility
====================
-Django 6.0 supports Python 3.12 and 3.13. We **highly recommend**, and only
-officially support, the latest release of each series.
+Django 6.0 supports Python 3.12, 3.13, and 3.14. We **highly recommend**, and
+only officially support, the latest release of each series.
The Django 5.2.x series is the last to support Python 3.10 and 3.11.
diff --git a/pyproject.toml b/pyproject.toml
index e12debef35..bd5e874824 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -29,6 +29,7 @@ classifiers = [
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Internet :: WWW/HTTP :: WSGI",
diff --git a/tests/mail/tests.py b/tests/mail/tests.py
index f1d7fcf43e..1dba83eb8e 100644
--- a/tests/mail/tests.py
+++ b/tests/mail/tests.py
@@ -258,7 +258,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
`surrogateescape`.
Following https://github.com/python/cpython/issues/76511, newer
- versions of Python (3.12.3 and 3.13) ensure that a message's
+ versions of Python (3.12.3 and 3.13+) ensure that a message's
payload is encoded with the provided charset and `surrogateescape` is
used as the error handling strategy.
diff --git a/tests/requirements/py3.txt b/tests/requirements/py3.txt
index 7ecc3ad044..1ca26979a6 100644
--- a/tests/requirements/py3.txt
+++ b/tests/requirements/py3.txt
@@ -7,7 +7,7 @@ docutils >= 0.19
geoip2 >= 4.8.0
jinja2 >= 2.11.0
numpy >= 1.26.0
-Pillow >= 10.1.0; sys.platform != 'win32' or python_version < '3.14'
+Pillow >= 10.1.0
# pylibmc/libmemcached can't be built on Windows.
pylibmc; sys_platform != 'win32'
pymemcache >= 3.4.0
diff --git a/tox.ini b/tox.ini
index 4f1274a266..8d4698f084 100644
--- a/tox.ini
+++ b/tox.ini
@@ -27,7 +27,7 @@ setenv =
PYTHONDONTWRITEBYTECODE=1
deps =
-e .
- py{3,312,313}: -rtests/requirements/py3.txt
+ py{3,312,313,314}: -rtests/requirements/py3.txt
postgres: -rtests/requirements/postgres.txt
mysql: -rtests/requirements/mysql.txt
oracle: -rtests/requirements/oracle.txt