Re: [Django] #37363: Restore PyPy testing now that PyPy supports Python 3.12

7 views
Skip to first unread message

Django

unread,
Sep 20, 2026, 6:16:08 PM (6 days ago) Sep 20
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Jacob Walls):

Good news! On the other hand, the main branch is going to require Python
3.14+ from January 2027, so we would immediately have to remove it again.
Do you see value in testing it for four months?
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Sep 20, 2026, 6:23:32 PM (6 days ago) Sep 20
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Adam Johnson):

* cc: Adam Johnson (added)

--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:3>

Django

unread,
Sep 21, 2026, 1:36:01 AM (5 days ago) Sep 21
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Paolo Melchiorre):

I think there is still some value in it. Restoring PyPy testing would let
us verify whether Django is actually still compatible with PyPy, rather
than just assuming it is.

Perhaps we could also use that to verify PyPy compatibility for the
currently supported Django versions that support Python 3.12. The
documentation already says that Django is compatible with PyPy versions
corresponding to supported Python versions, so it would be useful to know
whether that is actually true for PyPy 8.0.0.

And, more importantly, it would give us the chance to release Django 6.2
with tested compatibility with PyPy 8.0.0, even if "main" has to drop PyPy
again once its minimum Python version moves beyond what PyPy currently
supports.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:4>

Django

unread,
Sep 21, 2026, 2:02:02 AM (5 days ago) Sep 21
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Carlton Gibson):

I’m a bit sceptical that we should do anything that implies pypy
compatibility (and a commitment to it, which as far as I am aware we don’t
have).

If someone wants to run the test suite against it and publish a blog
saying “it works, but only until we drop 3.12” that would be great, but
adding and then removing from CI just seems like noise.

If pypy manages to catch up and then keep up with Python’s annual release
cycle, that we’ll be tracking from Django 2028 then the argument becomes
different, and worth discussing again.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:5>

Django

unread,
Sep 21, 2026, 2:57:03 AM (5 days ago) Sep 21
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Paolo Melchiorre):

I think there’s some useful context from when PyPy testing was removed in
2025.

At the time, I opened [ticket:36123 #36123] proposing that we also remove
the PyPy compatibility claim from the Django documentation. My reasoning
was that, since no PyPy version supported Python 3.12, Django could no
longer actually test that compatibility.

Sarah closed that ticket as `wontfix`, pointing out that this had already
been discussed in the PR and that the decision was to '''keep PyPy support
rather than "give up" on it'''. See [ticket:36123#comment:1 Sarah's
reply].

The original PR discussion also made the intended future behavior quite
explicit.

Sarah asked:

''“When they do release 3.12 support ... would we backport potential
fixes to keep compatibility to pypy?”''

[https://github.com/django/django/pull/19067#discussion_r1922140512
Sarah's comment]

And Mariusz replied:

'''“Yes, in the same way we backport support for the newest Python
version.”'''

[https://github.com/django/django/pull/19067#discussion_r1922195581
Mariusz's reply]

So the scenario we discussed back then has now actually happened: '''PyPy
8.0.0 has been released with Python 3.12 support'''.

My reading of that discussion is that the last explicit decision we made
was to keep claiming PyPy compatibility, with the intention of restoring
and maintaining it once PyPy caught up with a Python version supported by
Django.

That is also what our documentation still says today:

''“Django is compatible with versions of PyPy corresponding to the
supported Python versions”''

[https://docs.djangoproject.com/en/dev/topics/performance/#id1 Django
documentation]

So I think we should now follow through on that decision and at least
'''test Django with PyPy 8.0.0''' to see whether the compatibility we
still document is actually true.

**If we’ve changed our mind** since then and no longer want to maintain
PyPy compatibility, that’s also a perfectly reasonable decision to make.

But in that case I think we should make that decision explicitly and
'''remove or qualify the compatibility statement in the documentation''',
rather than continuing to state it as a fact without testing it.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:6>

Django

unread,
Sep 21, 2026, 3:37:08 AM (5 days ago) Sep 21
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Carlton Gibson):

Nice archeology.

So, yeah, at this moment I’m sceptical that we should be putting any
resources into pypy support. As I’ve followed the situation, the project
is kind of on life support, is seeing decreasing adoption, and most of the
benefits are captured by the CPython JIT efforts. (That all may be a gross
simplification, but I think the direction is correct. But do tell me
otherwise.)

Given the general (I.e. widespread) concerns about capacity within Django,
I think (at least) a discussion reviewing whether pypy support is on our
radar currently is warranted.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:7>

Django

unread,
Sep 25, 2026, 12:49:22 PM (24 hours ago) Sep 25
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Packaging | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Jacob Walls):

* stage: Unreviewed => Someday/Maybe

Comment:

The long delay in a 3.12 version is not reassuring. If someone identifies
a legitimate incompatibility and offers a well-tested fix, we can always
consider it for a backport. Until then, I don't think this brings enough
value for the churn. We have failures in existing CI workflows waiting for
[https://github.com/django-
sandbox/django/actions/runs/36114645026/job/108005744321 triage] and
[https://github.com/django/django/pull/21887 review]. We can't prioritize
adding and removing PyPy jobs over getting those existing jobs green.

Of course, the situation could change: once we achieve better "CI uptime"
on our existing workflows, or we find larger windows than four months
between a CI job being added and removed. So I'm marking "Someday/Maybe".

In the meantime, I'm happy to take a `Refs #37363 -- ...` PR to weaken the
wording around PyPy support in the docs.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:8>

Django

unread,
Sep 25, 2026, 12:55:27 PM (24 hours ago) Sep 25
to django-...@googlegroups.com
#37363: Restore PyPy testing now that PyPy supports Python 3.12
-------------------------------------+-------------------------------------
Reporter: Paolo Melchiorre | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Core (Other) | Version: dev
Severity: Normal | Resolution:
Keywords: pypy | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Jacob Walls):

* component: Packaging => Core (Other)

Comment:

Replying to [comment:8 Jacob Walls]:
> In the meantime, I'm happy to take a `Refs #37363 -- ...` PR to weaken
the wording around PyPy support in the docs.

Actually, it would be better to pursue that docs change by reopening
ticket-36123. We may not need to "remove" all mentions, but simply admit
that it's not practical for us to test.
--
Ticket URL: <https://code.djangoproject.com/ticket/37363#comment:9>
Reply all
Reply to author
Forward
0 new messages