Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

[Django] #35844: Python 3.14 compatibility.

30 views
Skip to first unread message

Django

unread,
Oct 16, 2024, 2:19:41 AM10/16/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz | Owner: Mariusz Felisiak
Felisiak |
Type: New | Status: assigned
feature |
Component: Core | Version: 5.0
(Other) |
Severity: Normal | Keywords:
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Python 3.14 final is scheduled for October 2025 (see
​[https://peps.python.org/pep-0745/ PEP 745]). This is a tracking ticket
for compatibility fixes for Django submitted in the meantime.

Django 5.2 will be the first version to support Python 3.14, because
Django 5.1 will end the mainstream support in April 2024.
--
Ticket URL: <https://code.djangoproject.com/ticket/35844>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Oct 16, 2024, 3:05:45 AM10/16/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Claude Paroz):

* stage: Unreviewed => Accepted
* version: 5.0 => dev

--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:1>

Django

unread,
Oct 16, 2024, 2:49:20 PM10/16/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Mariusz Felisiak):

Initial PRs:
- https://github.com/django/django/pull/18686 - Added Python 3.14 to daily
builds.
- https://github.com/django/django/pull/18680 - Fixed
asyncio.iscoroutinefunction() deprecation warnings.
- https://github.com/django/django/pull/18685 - Fixed tests for test
--parallel option.

After applying these 3 changes we'll have one more deprecation warning, 49
test failures, and 24 test errors. All of them are under investigation of
Team Venus of the 3rd Djangonauts cohort, PRs will be submitted soonish :)
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:2>

Django

unread,
Oct 16, 2024, 9:19:27 PM10/16/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"48fa531fbcd96af301781a6e5192509081d7dd2d" 48fa531]:
{{{#!CommitTicketReference repository=""
revision="48fa531fbcd96af301781a6e5192509081d7dd2d"
Refs #35844 -- Added Python 3.14 to daily builds.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:3>

Django

unread,
Oct 17, 2024, 9:15:22 AM10/17/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"bd3b1dfa2422e02ced3a894adb7544e42540c97d" bd3b1dfa]:
{{{#!CommitTicketReference repository=""
revision="bd3b1dfa2422e02ced3a894adb7544e42540c97d"
Refs #35844 -- Used asgiref.sync.iscoroutinefunction() instead of
deprecated asyncio.iscoroutinefunction().

Fixes DeprecationWarning:

'asyncio.iscoroutinefunction' is deprecated and slated for removal in
Python 3.16; use inspect.iscoroutinefunction() instead.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:4>

Django

unread,
Oct 24, 2024, 10:41:50 AM10/24/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"34066d6cf3d66b8a3c7fac86912455dbb2ed0ed6" 34066d6]:
{{{#!CommitTicketReference repository=""
revision="34066d6cf3d66b8a3c7fac86912455dbb2ed0ed6"
Refs #35844 -- Fixed tests for test --parallel option on Python 3.14+.

"forkserver" is the new default on POSIX systems, and Django doesn't
support parallel tests with "forkserver":

https://github.com/python/cpython/commit/b65f2cdfa77d8d12c213aec663ddaaa30d75a4b2
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:5>

Django

unread,
Oct 25, 2024, 7:30:21 AM10/25/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"4c3897bb154a3d3a94e5f7e146d0b8bf41e27d81" 4c3897b]:
{{{#!CommitTicketReference repository=""
revision="4c3897bb154a3d3a94e5f7e146d0b8bf41e27d81"
Refs #35844 -- Corrected expected error messages in commands tests on
Python 3.14+.

Updated CommandTests.test_subparser_invalid_option and
CommandDBOptionChoiceTests.test_invalid_choice_db_option to address
changes in Python 3.14+ error handling.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:6>

Django

unread,
Oct 25, 2024, 12:12:27 PM10/25/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Mariusz Felisiak):

FYI: `urljoin()` behavior change has been accepted as a regression in
Python 3.14, https://github.com/python/cpython/issues/125926.
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:7>

Django

unread,
Oct 29, 2024, 5:06:39 PM10/29/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Claude Paroz <claude@…>):

In [changeset:"fc22fdd34f1e55adde161f5f2dca8db90bbfce80" fc22fdd3]:
{{{#!CommitTicketReference repository=""
revision="fc22fdd34f1e55adde161f5f2dca8db90bbfce80"
Refs #35844 -- Expanded compatibility for expected error messages in
command tests on Python 3.12 and 3.13.

Updated CommandTests.test_subparser_invalid_option and
CommandDBOptionChoiceTests.test_invalid_choice_db_option to use
assertRaisesRegex() for compatibility with modified error messages in
Python 3.12, 3.13, and 3.14+..
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:8>

Django

unread,
Oct 30, 2024, 6:06:23 AM10/30/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"b57a8395b58ae47124efcc33455abc7d32553354" b57a839]:
{{{#!CommitTicketReference repository=""
revision="b57a8395b58ae47124efcc33455abc7d32553354"
[5.1.x] Refs #35844 -- Expanded compatibility for expected error messages
in command tests on Python 3.12 and 3.13.

Updated CommandTests.test_subparser_invalid_option and
CommandDBOptionChoiceTests.test_invalid_choice_db_option to use
assertRaisesRegex() for compatibility with modified error messages in
Python 3.12, 3.13, and 3.14+..

Backport of fc22fdd34f1e55adde161f5f2dca8db90bbfce80 from main.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:9>

Django

unread,
Oct 30, 2024, 6:30:01 AM10/30/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"5064ddb4f9532cb2827744c052f277c39b74920a" 5064ddb]:
{{{#!CommitTicketReference repository=""
revision="5064ddb4f9532cb2827744c052f277c39b74920a"
[5.0.x] Refs #35844 -- Expanded compatibility for expected error messages
in command tests on Python 3.12.

Updated CommandTests.test_subparser_invalid_option and
CommandDBOptionChoiceTests.test_invalid_choice_db_option to use
assertRaisesRegex() for compatibility with modified error messages in
Python 3.12, 3.13, and 3.14+..

Backport of fc22fdd34f1e55adde161f5f2dca8db90bbfce80 from main.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:10>

Django

unread,
Oct 30, 2024, 6:34:04 AM10/30/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"ea4a1fb61e0bc6a4294a0123b82183da947e5efb" ea4a1fb]:
{{{#!CommitTicketReference repository=""
revision="ea4a1fb61e0bc6a4294a0123b82183da947e5efb"
[4.2.x] Refs #35844 -- Expanded compatibility for expected error messages
in command tests on Python 3.12.

Updated CommandTests.test_subparser_invalid_option and
CommandDBOptionChoiceTests.test_invalid_choice_db_option to use
assertRaisesRegex() for compatibility with modified error messages in
Python 3.12, 3.13, and 3.14+..

Backport of fc22fdd34f1e55adde161f5f2dca8db90bbfce80 from main.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:11>

Django

unread,
Nov 17, 2024, 12:52:23 PM11/17/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Mariusz Felisiak):

Replying to [comment:7 Mariusz Felisiak]:
> FYI: `urljoin()` behavior change has been accepted as a regression in
Python 3.14, https://github.com/python/cpython/issues/125926.

Fixed in
https://github.com/python/cpython/commit/dbb6e22cb1f533bba00a61a5b63ec68af9d48836.
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:12>

Django

unread,
Nov 18, 2024, 10:05:48 AM11/18/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"8d7b1423f89bcc3df57333fc79fa5aead17b0cbc" 8d7b142]:
{{{#!CommitTicketReference repository=""
revision="8d7b1423f89bcc3df57333fc79fa5aead17b0cbc"
Refs #35844 -- Fixed copying BaseContext and its subclasses on Python
3.14+.

super objects are copyable on Python 3.14+:

https://github.com/python/cpython/commit/5ca4e34bc1aab8321911aac6d5b2b9e75ff764d8

and can no longer be used in BaseContext.__copy__().
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:13>

Django

unread,
Dec 20, 2024, 8:18:20 AM12/20/24
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"fcd9d08379a2aee3b2c49eab0d0b8db6fd66d091" fcd9d08]:
{{{#!CommitTicketReference repository=""
revision="fcd9d08379a2aee3b2c49eab0d0b8db6fd66d091"
Refs #35844 -- Fixed OtherModelFormTests.test_prefetch_related_queryset()
test on Python 3.14+.

https://github.com/python/cpython/commit/5a23994a3dbee43a0b08f5920032f60f38b63071
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:14>

Django

unread,
Jan 13, 2025, 10:53:58 AMJan 13
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"0a341125d1f6ea8e5e80522a98725f906fb08350" 0a341125]:
{{{#!CommitTicketReference repository=""
revision="0a341125d1f6ea8e5e80522a98725f906fb08350"
Refs #35844 -- Removed unnecessary ArgumentParser.add_argument_group()'s
prefix_chars argument.

The `prefix_chars` argument is deprecated since
https://github.com/python/cpython/commit/7b04496e5c7ed47e9653f4591674fc9ffef34587.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:15>

Django

unread,
May 14, 2025, 4:43:34 PMMay 14
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"d6925f0d6beb3c08ae24bdb8fd83ddb13d1756e4" d6925f0]:
{{{#!CommitTicketReference repository=""
revision="d6925f0d6beb3c08ae24bdb8fd83ddb13d1756e4"
Refs #35844 -- Skipped argon2-cffi requirement in Windows for Python
3.14+.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:16>

Django

unread,
May 15, 2025, 1:53:03 PMMay 15
to django-...@googlegroups.com
#35844: Python 3.14 compatibility.
-------------------------------------+-------------------------------------
Reporter: Mariusz Felisiak | Owner: Mariusz
| Felisiak
Type: New feature | Status: assigned
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by GitHub <noreply@…>):

In [changeset:"0b2ed4f7c8396c8d9aa8428a40e6b25c31312889" 0b2ed4f7]:
{{{#!CommitTicketReference repository=""
revision="0b2ed4f7c8396c8d9aa8428a40e6b25c31312889"
Refs #35844 -- Skipped selenium and geoip2 requirement in Windows for
Python 3.14+.

Follow up to d6925f0d6beb3c08ae24bdb8fd83ddb13d1756e4.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35844#comment:17>
Reply all
Reply to author
Forward
0 new messages