Browse Source

Add support for Python 3.13

Matt Westcott 5 months ago
parent
commit
27b972d30f
7 changed files with 69 additions and 62 deletions
  1. 8 8
      .github/workflows/test.yml
  2. 1 0
      CHANGELOG.txt
  3. 1 1
      README.md
  4. 4 0
      docs/releases/6.3.md
  5. 52 52
      docs/releases/upgrading.md
  6. 1 0
      setup.py
  7. 2 1
      tox.ini

+ 8 - 8
.github/workflows/test.yml

@@ -26,13 +26,13 @@ concurrency:
 # - django 5.0, python 3.11, sqlite, WAGTAIL_CHECK_TEMPLATE_NUMBER_FORMAT=1
 # - django 5.1, python 3.12, mysql:8.4, parallel, USE_EMAIL_USER_MODEL=yes
 # - django 5.1, python 3.12, mariadb:11.4, USE_EMAIL_USER_MODEL=yes
-# - django 5.1, python 3.12, sqlite, parallel, USE_EMAIL_USER_MODEL=yes
-# - django 5.1, python 3.12, postgres:15, psycopg 3, parallel, DISABLE_TIMEZONE=yes
+# - django 5.1, python 3.13, sqlite, parallel, USE_EMAIL_USER_MODEL=yes
+# - django 5.1, python 3.13, postgres:15, psycopg 3, parallel, DISABLE_TIMEZONE=yes
 # - django stable/5.1.x, python 3.11, postgres:15, psycopg 3 (allow failures)
-# - django main, python 3.12, postgres:latest, psycopg 3, parallel (allow failures)
+# - django main, python 3.13, postgres:latest, psycopg 3, parallel (allow failures)
 # - elasticsearch 7, django 4.2, python 3.9, postgres:latest, psycopg 2
 # - opensearch 2, django 5.0, python 3.10, sqlite
-# - elasticsearch 8, django 5.1, python 3.12, sqlite, USE_EMAIL_USER_MODEL=yes
+# - elasticsearch 8, django 5.1, python 3.13, sqlite, USE_EMAIL_USER_MODEL=yes
 
 # Some tests are run in parallel by passing --parallel to runtests.py.
 # When running tests in parallel, some errors cannot be pickled and result in
@@ -52,7 +52,7 @@ jobs:
           - python: '3.11'
             django: 'Django>=5.0,<5.1'
             check_template_number_format: '1'
-          - python: '3.12'
+          - python: '3.13'
             django: 'Django>=5.1,<5.2'
             emailuser: emailuser
             parallel: '--parallel'
@@ -95,7 +95,7 @@ jobs:
             psycopg: 'psycopg2>=2.6'
             experimental: false
             parallel: '--parallel'
-          - python: '3.12'
+          - python: '3.13'
             django: 'Django>=5.0,<5.1'
             psycopg: 'psycopg>=3.1.8'
             postgres: 'postgres:15'
@@ -107,7 +107,7 @@ jobs:
             psycopg: 'psycopg>=3.1.8'
             postgres: 'postgres:15'
             experimental: true
-          - python: '3.12'
+          - python: '3.13'
             django: 'git+https://github.com/django/django.git@main#egg=Django'
             psycopg: 'psycopg>=3.1.8'
             experimental: true
@@ -227,7 +227,7 @@ jobs:
     strategy:
       matrix:
         include:
-          - python: '3.12'
+          - python: '3.13'
             django: 'Django>=5.1,<5.2'
             emailuser: emailuser
     steps:

+ 1 - 0
CHANGELOG.txt

@@ -16,6 +16,7 @@ Changelog
  * Add search and filters to form pages listing (Sage Abdullah)
  * Deprecate the `WAGTAIL_AUTO_UPDATE_PREVIEW` setting, use `WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL = 0` instead (Sage Abdullah)
  * Consistently use `capfirst` for title-casing model verbose names (Sébastien Corbin)
+ * Add support for Python 3.13 (Matt Westcott)
  * Fire `copy_for_translation_done` signal when copying translatable models as well as pages (Coen van der Kamp)
  * Fix: Prevent page type business rules from blocking reordering of pages (Andy Babic, Sage Abdullah)
  * Fix: Improve layout of object permissions table (Sage Abdullah)

+ 1 - 1
README.md

@@ -85,7 +85,7 @@ _(If you are reading this on GitHub, the details here may not be indicative of t
 Wagtail supports:
 
 -   Django 4.2.x, 5.0.x and 5.1.x
--   Python 3.9, 3.10, 3.11 and 3.12
+-   Python 3.9, 3.10, 3.11, 3.12 and 3.13
 -   PostgreSQL, MySQL, MariaDB and SQLite (with JSON1) as database backends
 
 [Previous versions of Wagtail](https://docs.wagtail.org/en/stable/releases/upgrading.html#compatible-django-python-versions) additionally supported Python 2.7, 3.8 and earlier Django versions.

+ 4 - 0
docs/releases/6.3.md

@@ -11,6 +11,10 @@ depth: 1
 
 ## What's new
 
+### Python 3.13 support
+
+This release adds formal support for Python 3.13.
+
 ### Django 5.1 support
 
 This release adds formal support for Django 5.1.

+ 52 - 52
docs/releases/upgrading.md

@@ -57,57 +57,57 @@ New feature releases frequently add support for newer versions of Django and Pyt
 
 The compatible versions of Django and Python for each Wagtail release are:
 
-| Wagtail release | Compatible Django versions | Compatible Python versions |
-| --------------- | -------------------------- | -------------------------- |
-| 6.3             | 4.2, 5.0, 5.1              | 3.9, 3.10, 3.11, 3.12      |
-| 6.2             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12 |
-| 6.1             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12 |
-| 6.0             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12 |
-| 5.2 LTS         | 3.2, 4.1, 4.2, 5.0[^*]     | 3.8, 3.9, 3.10, 3.11, 3.12 |
-| 5.1             | 3.2, 4.1, 4.2              | 3.8, 3.9, 3.10, 3.11       |
-| 5.0             | 3.2, 4.1, 4.2              | 3.7, 3.8, 3.9, 3.10, 3.11  |
-| 4.2             | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10, 3.11  |
-| 4.1 LTS         | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10, 3.11  |
-| 4.0             | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10        |
-| 3.0             | 3.2, 4.0                   | 3.7, 3.8, 3.9, 3.10        |
-| 2.16            | 3.2, 4.0                   | 3.7, 3.8, 3.9, 3.10        |
-| 2.15 LTS        | 3.0, 3.1, 3.2              | 3.6, 3.7, 3.8, 3.9, 3.10   |
-| 2.14            | 3.0, 3.1, 3.2              | 3.6, 3.7, 3.8, 3.9         |
-| 2.13            | 2.2, 3.0, 3.1, 3.2         | 3.6, 3.7, 3.8, 3.9         |
-| 2.12            | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8, 3.9         |
-| 2.11 LTS        | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8              |
-| 2.10            | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8              |
-| 2.9             | 2.2, 3.0                   | 3.5, 3.6, 3.7, 3.8         |
-| 2.8             | 2.1, 2.2, 3.0              | 3.5, 3.6, 3.7, 3.8         |
-| 2.7 LTS         | 2.0, 2.1, 2.2              | 3.5, 3.6, 3.7, 3.8         |
-| 2.6             | 2.0, 2.1, 2.2              | 3.5, 3.6, 3.7              |
-| 2.5             | 2.0, 2.1, 2.2              | 3.4, 3.5, 3.6, 3.7         |
-| 2.4             | 2.0, 2.1                   | 3.4, 3.5, 3.6, 3.7         |
-| 2.3 LTS         | 1.11, 2.0, 2.1             | 3.4, 3.5, 3.6              |
-| 2.2             | 1.11, 2.0                  | 3.4, 3.5, 3.6              |
-| 2.1             | 1.11, 2.0                  | 3.4, 3.5, 3.6              |
-| 2.0             | 1.11, 2.0                  | 3.4, 3.5, 3.6              |
-| 1.13 LTS        | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6         |
-| 1.12 LTS        | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6         |
-| 1.11            | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6         |
-| 1.10            | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6         |
-| 1.9             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5         |
-| 1.8 LTS         | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5         |
-| 1.7             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5         |
-| 1.6             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5         |
-| 1.5             | 1.8, 1.9                   | 2.7, 3.3, 3.4, 3.5         |
-| 1.4 LTS         | 1.8, 1.9                   | 2.7, 3.3, 3.4, 3.5         |
-| 1.3             | 1.7, 1.8, 1.9              | 2.7, 3.3, 3.4, 3.5         |
-| 1.2             | 1.7, 1.8                   | 2.7, 3.3, 3.4, 3.5         |
-| 1.1             | 1.7, 1.8                   | 2.7, 3.3, 3.4              |
-| 1.0             | 1.7, 1.8                   | 2.7, 3.3, 3.4              |
-| 0.8 LTS         | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4    |
-| 0.7             | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4    |
-| 0.6             | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4    |
-| 0.5             | 1.6                        | 2.6, 2.7, 3.2, 3.3, 3.4    |
-| 0.4             | 1.6                        | 2.6, 2.7, 3.2, 3.3, 3.4    |
-| 0.3             | 1.6                        | 2.6, 2.7                   |
-| 0.2             | 1.6                        | 2.7                        |
-| 0.1             | 1.6                        | 2.7                        |
+| Wagtail release | Compatible Django versions | Compatible Python versions  |
+| --------------- | -------------------------- | --------------------------- |
+| 6.3             | 4.2, 5.0, 5.1              | 3.9, 3.10, 3.11, 3.12, 3.13 |
+| 6.2             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12  |
+| 6.1             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12  |
+| 6.0             | 4.2, 5.0                   | 3.8, 3.9, 3.10, 3.11, 3.12  |
+| 5.2 LTS         | 3.2, 4.1, 4.2, 5.0[^*]     | 3.8, 3.9, 3.10, 3.11, 3.12  |
+| 5.1             | 3.2, 4.1, 4.2              | 3.8, 3.9, 3.10, 3.11        |
+| 5.0             | 3.2, 4.1, 4.2              | 3.7, 3.8, 3.9, 3.10, 3.11   |
+| 4.2             | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10, 3.11   |
+| 4.1 LTS         | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10, 3.11   |
+| 4.0             | 3.2, 4.0, 4.1              | 3.7, 3.8, 3.9, 3.10         |
+| 3.0             | 3.2, 4.0                   | 3.7, 3.8, 3.9, 3.10         |
+| 2.16            | 3.2, 4.0                   | 3.7, 3.8, 3.9, 3.10         |
+| 2.15 LTS        | 3.0, 3.1, 3.2              | 3.6, 3.7, 3.8, 3.9, 3.10    |
+| 2.14            | 3.0, 3.1, 3.2              | 3.6, 3.7, 3.8, 3.9          |
+| 2.13            | 2.2, 3.0, 3.1, 3.2         | 3.6, 3.7, 3.8, 3.9          |
+| 2.12            | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8, 3.9          |
+| 2.11 LTS        | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8               |
+| 2.10            | 2.2, 3.0, 3.1              | 3.6, 3.7, 3.8               |
+| 2.9             | 2.2, 3.0                   | 3.5, 3.6, 3.7, 3.8          |
+| 2.8             | 2.1, 2.2, 3.0              | 3.5, 3.6, 3.7, 3.8          |
+| 2.7 LTS         | 2.0, 2.1, 2.2              | 3.5, 3.6, 3.7, 3.8          |
+| 2.6             | 2.0, 2.1, 2.2              | 3.5, 3.6, 3.7               |
+| 2.5             | 2.0, 2.1, 2.2              | 3.4, 3.5, 3.6, 3.7          |
+| 2.4             | 2.0, 2.1                   | 3.4, 3.5, 3.6, 3.7          |
+| 2.3 LTS         | 1.11, 2.0, 2.1             | 3.4, 3.5, 3.6               |
+| 2.2             | 1.11, 2.0                  | 3.4, 3.5, 3.6               |
+| 2.1             | 1.11, 2.0                  | 3.4, 3.5, 3.6               |
+| 2.0             | 1.11, 2.0                  | 3.4, 3.5, 3.6               |
+| 1.13 LTS        | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6          |
+| 1.12 LTS        | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6          |
+| 1.11            | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6          |
+| 1.10            | 1.8, 1.10, 1.11            | 2.7, 3.4, 3.5, 3.6          |
+| 1.9             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5          |
+| 1.8 LTS         | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5          |
+| 1.7             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5          |
+| 1.6             | 1.8, 1.9, 1.10             | 2.7, 3.3, 3.4, 3.5          |
+| 1.5             | 1.8, 1.9                   | 2.7, 3.3, 3.4, 3.5          |
+| 1.4 LTS         | 1.8, 1.9                   | 2.7, 3.3, 3.4, 3.5          |
+| 1.3             | 1.7, 1.8, 1.9              | 2.7, 3.3, 3.4, 3.5          |
+| 1.2             | 1.7, 1.8                   | 2.7, 3.3, 3.4, 3.5          |
+| 1.1             | 1.7, 1.8                   | 2.7, 3.3, 3.4               |
+| 1.0             | 1.7, 1.8                   | 2.7, 3.3, 3.4               |
+| 0.8 LTS         | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4     |
+| 0.7             | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4     |
+| 0.6             | 1.6, 1.7                   | 2.6, 2.7, 3.2, 3.3, 3.4     |
+| 0.5             | 1.6                        | 2.6, 2.7, 3.2, 3.3, 3.4     |
+| 0.4             | 1.6                        | 2.6, 2.7, 3.2, 3.3, 3.4     |
+| 0.3             | 1.6                        | 2.6, 2.7                    |
+| 0.2             | 1.6                        | 2.7                         |
+| 0.1             | 1.6                        | 2.7                         |
 
 [^*]: Added in a patch release

+ 1 - 0
setup.py

@@ -111,6 +111,7 @@ https://github.com/wagtail/wagtail/.",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.12",
+        "Programming Language :: Python :: 3.13",
         "Framework :: Django",
         "Framework :: Django :: 4.2",
         "Framework :: Django :: 5.0",

+ 2 - 1
tox.ini

@@ -2,7 +2,7 @@
 skipsdist = True
 usedevelop = True
 
-envlist = py{39,310,311,312}-dj{42,50,51,51stable,main}-{sqlite,postgres,mysql,mssql}-{elasticsearch8,elasticsearch7,noelasticsearch}-{customuser,emailuser}-{tz,notz},
+envlist = py{39,310,311,312,313}-dj{42,50,51,51stable,main}-{sqlite,postgres,mysql,mssql}-{elasticsearch8,elasticsearch7,noelasticsearch}-{customuser,emailuser}-{tz,notz},
 
 [testenv]
 install_command = pip install -e ".[testing]" -U {opts} {packages}
@@ -16,6 +16,7 @@ basepython =
     py310: python3.10
     py311: python3.11
     py312: python3.12
+    py313: python3.13
 
 deps =
     django-sendfile==0.3.6