summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2025-10-13 16:34:26 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2025-10-17 20:05:19 +0200
commita8c9b5b2636ebda87d938b61cbf4bfec476ca0c9 (patch)
tree7a4cf58304f7062b722c343fca70417a2ad3cc03
parent83f6fe810df8558339495ad717e216b14d34f461 (diff)
[5.2.x] Refs #35844 -- Doc'd Python 3.14 compatibility.
Backport of 56977b466c33ca3da14a1ed2609172425a76a34e from main.
-rw-r--r--.github/workflows/docs.yml4
-rw-r--r--.github/workflows/linters.yml4
-rw-r--r--.github/workflows/schedule_tests.yml10
-rw-r--r--.github/workflows/selenium.yml4
-rw-r--r--.github/workflows/tests.yml2
-rw-r--r--docs/faq/install.txt2
-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--pyproject.toml1
-rw-r--r--tests/mail/tests.py2
-rw-r--r--tests/requirements/py3.txt4
-rw-r--r--tox.ini2
14 files changed, 26 insertions, 22 deletions
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 46c2cf8707..b13a9bab4a 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -29,7 +29,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
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@v5
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install blacken-docs
- name: Build docs
run: |
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index d89085b4a7..0f64cae681 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -27,7 +27,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
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@v5
with:
- python-version: '3.13'
+ python-version: '3.14'
- run: python -m pip install "isort<6"
- name: isort
# Pinned to v3.0.0.
diff --git a/.github/workflows/schedule_tests.yml b/.github/workflows/schedule_tests.yml
index 5e6038fb31..dc3157f51b 100644
--- a/.github/workflows/schedule_tests.yml
+++ b/.github/workflows/schedule_tests.yml
@@ -20,7 +20,7 @@ jobs:
- '3.11'
- '3.12'
- '3.13'
- - '3.14-dev'
+ - '3.14'
name: Windows, SQLite, Python ${{ matrix.python-version }}
continue-on-error: true
steps:
@@ -47,7 +47,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
- name: Install libmemcached-dev for pylibmc
run: sudo apt-get install libmemcached-dev
@@ -146,7 +146,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
@@ -182,7 +182,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
- python-version: '3.13'
+ python-version: '3.14'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
@@ -227,7 +227,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
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/selenium.yml b/.github/workflows/selenium.yml
index 14a95f3b66..de36f1c084 100644
--- a/.github/workflows/selenium.yml
+++ b/.github/workflows/selenium.yml
@@ -24,7 +24,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
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@v5
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 3373f82e0a..2ae1e3ef90 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 dcbae30ae3..c986535271 100644
--- a/docs/faq/install.txt
+++ b/docs/faq/install.txt
@@ -53,7 +53,7 @@ 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
+5.2 3.10, 3.11, 3.12, 3.13, 3.14 (added in 5.2.8)
============== ===============
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 b353cdc9bb..6148b4e94b 100644
--- a/docs/intro/reusable-apps.txt
+++ b/docs/intro/reusable-apps.txt
@@ -238,6 +238,7 @@ this. For a small app like polls, this process isn't too difficult.
"Programming Language :: Python :: 3.11",
"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 20d82db98e..b80c8effd2 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/pyproject.toml b/pyproject.toml
index 3306ef9cef..a8381a122a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -31,6 +31,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"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 833b688741..e017c7f9cf 100644
--- a/tests/mail/tests.py
+++ b/tests/mail/tests.py
@@ -185,7 +185,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
"""Line length check should encode the payload supporting `surrogateescape`.
Following https://github.com/python/cpython/issues/76511, newer
- versions of Python (3.11.9, 3.12.3 and 3.13) ensure that a message's
+ versions of Python (3.11.9, 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 f0e208a115..a9679af97c 100644
--- a/tests/requirements/py3.txt
+++ b/tests/requirements/py3.txt
@@ -6,8 +6,8 @@ black
docutils >= 0.19
geoip2
jinja2 >= 2.11.0
-numpy; python_version < '3.14'
-Pillow >= 6.2.1; sys.platform != 'win32' or python_version < '3.14'
+numpy
+Pillow >= 6.2.1
# 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 7a76693f21..9d4bab43b4 100644
--- a/tox.ini
+++ b/tox.ini
@@ -26,7 +26,7 @@ setenv =
PYTHONDONTWRITEBYTECODE=1
deps =
-e .
- py{3,310,311,312,313,py3}: -rtests/requirements/py3.txt
+ py{3,310,311,312,313,314,py3}: -rtests/requirements/py3.txt
postgres: -rtests/requirements/postgres.txt
mysql: -rtests/requirements/mysql.txt
oracle: -rtests/requirements/oracle.txt