See [https://docs.djangoproject.com/en/dev/faq/install/#what-python-
version-can-i-use-with-django our policy about Python version support] and
discussions regarding the Python version support policy:
- https://groups.google.com/forum/#!topic/django-
developers/YDJwI7uvgxU/discussion
- https://groups.google.com/forum/#!msg/django-
developers/ezUpskYAcyo/discussion
--
Ticket URL: <https://code.djangoproject.com/ticket/32355>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* version: => 4.0
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:1>
Comment (by Claude Paroz):
With my usual conservative hat on, I'd plead to not drop Python 3.7
support too soon. It's still widely used in stable systems (namely Debian)
and asking contributors running those systems to install a Python version
"by hand" to contribute to Django master branch is not friendly at all.
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:2>
Comment (by Mariusz Felisiak):
Replying to [comment:2 Claude Paroz]:
> With my usual conservative hat on, I'd plead to not drop Python 3.7
support too soon. It's still widely used in stable systems (namely Debian)
and asking contributors running those systems to install a Python version
"by hand" to contribute to Django master branch is not friendly at all.
I understand your concerns, but there's not consensus to change the
policy on the mailing list. Also, if not in Django 4.0 then we will need
to support Python 3.7 to Django 4.2 LTS (end of life April 2026), so 2
more years, and almost 3 years after the last Python 3.7 release.
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:3>
Comment (by Claude Paroz):
I know my practice (using latest released Django on as-much-stable-as-
possible systems) is not on the majority side, so you'll never find a
consensus to change the policy.
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:4>
Comment (by GitHub <noreply@…>):
In [changeset:"88e972e46d71520fbb480642cf957185e5a14a46" 88e972e4]:
{{{
#!CommitTicketReference repository=""
revision="88e972e46d71520fbb480642cf957185e5a14a46"
Fixed #32265, Refs #32355 -- Removed unnecessary
ServerHandler.handle_error().
ConnectionAbortedError, BrokenPipeError, ConnectionResetError raised
from SocketServer.BaseServer.finish_request() are already suppressed
by wsgiref.handlers.BaseHandler.run() in Python 3.7+, see
https://github.com/python/cpython/commit/47ffc1a9f6fab1c17cdcc325d4af066317369ed7
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:5>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/13915 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:6>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:7>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"ec0ff406311de88f4e2a135d784363424fe602aa" ec0ff406]:
{{{
#!CommitTicketReference repository=""
revision="ec0ff406311de88f4e2a135d784363424fe602aa"
Fixed #32355 -- Dropped support for Python 3.6 and 3.7
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:8>
Comment (by Carlton Gibson <carlton@…>):
In [changeset:"4372233ebf9acef606f3d2f7be4d6ba73b168084" 4372233e]:
{{{
#!CommitTicketReference repository=""
revision="4372233ebf9acef606f3d2f7be4d6ba73b168084"
Refs #32355 -- Restored PY36 and PY37 version constants.
Partially reverts ec0ff406311de88f4e2a135d784363424fe602aa.
PY36 should be removed when Django 2.2 is EOL.
PY37 should be removed when Django 3.2 is EOL.
Thanks to Tim Graham for the report.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:9>
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):
In [changeset:"cecdec91cf08fa8ad70a22d2a03bec3e86692350" cecdec91]:
{{{
#!CommitTicketReference repository=""
revision="cecdec91cf08fa8ad70a22d2a03bec3e86692350"
Refs #32355 -- Corrected comments about Python's _NamespacePath.
_NamespacePath supports indexing in Python 3.8+.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:10>
Comment (by GitHub <noreply@…>):
In [changeset:"213850b4b9641bdcb714172999725ec9aa9c9e84" 213850b]:
{{{
#!CommitTicketReference repository=""
revision="213850b4b9641bdcb714172999725ec9aa9c9e84"
Refs #32355 -- Used addClassCleanup() in tests.
Inspired by Adam Johnson talk on DjangoCon Europe 2021.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:11>
Comment (by GitHub <noreply@…>):
In [changeset:"faba5b702a9c5bb9452a543100928bcb5f66ebcf" faba5b7]:
{{{
#!CommitTicketReference repository=""
revision="faba5b702a9c5bb9452a543100928bcb5f66ebcf"
Refs #32355 -- Used addClassCleanup() in SimpleTestCase and
SerializeMixin.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:12>
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):
In [changeset:"840ad06300ac38e0e0e18ea36d6969cc03c875a9" 840ad063]:
{{{
#!CommitTicketReference repository=""
revision="840ad06300ac38e0e0e18ea36d6969cc03c875a9"
Refs #32355 -- Modernized subprocess.run() calls.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:13>
Comment (by GitHub <noreply@…>):
In [changeset:"5bac1719a2fcbee5cb8b9e22c3480e3a24ed6c4c" 5bac1719]:
{{{
#!CommitTicketReference repository=""
revision="5bac1719a2fcbee5cb8b9e22c3480e3a24ed6c4c"
Refs #32355 -- Used @functools.lru_cache as a straight decorator.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:14>
Comment (by GitHub <noreply@…>):
In [changeset:"ca04659b4b3f042c1bc7e557c25ed91e3c56c745" ca04659]:
{{{
#!CommitTicketReference repository=""
revision="ca04659b4b3f042c1bc7e557c25ed91e3c56c745"
Refs #32355 -- Bumped required psycopg2 version to 2.8.4.
psycopg2 2.8.4 is the first release to support Python 3.8.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:15>
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):
In [changeset:"b5f60ef5a74a86bf8d7fbebf2000284bffb61aac" b5f60ef5]:
{{{
#!CommitTicketReference repository=""
revision="b5f60ef5a74a86bf8d7fbebf2000284bffb61aac"
[4.0.x] Refs #32355 -- Bumped required psycopg2 version to 2.8.4.
psycopg2 2.8.4 is the first release to support Python 3.8.
Backport of ca04659b4b3f042c1bc7e557c25ed91e3c56c745 from main
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:16>
Comment (by GitHub <noreply@…>):
In [changeset:"7346c288e307e1821e3ceb757d686c9bd879389c" 7346c28]:
{{{
#!CommitTicketReference repository=""
revision="7346c288e307e1821e3ceb757d686c9bd879389c"
Refs #32355 -- Removed unnecessary list() calls before reversed() on
dictviews.
Dict and dictviews are iterable in reversed insertion order using
reversed() in Python 3.8+.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:17>
Comment (by GitHub <noreply@…>):
In [changeset:"7d9329935a842510fab5eb2634bf08e40e1cb2cb" 7d93299]:
{{{
#!CommitTicketReference repository=""
revision="7d9329935a842510fab5eb2634bf08e40e1cb2cb"
Refs #32355 -- Bumped mysqlclient requirement to >= 1.4.3.
mysqlclient 1.4.3 is the first release to support Python 3.8.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:18>
Comment (by GitHub <noreply@…>):
In [changeset:"63d1cb0092f8933a92f471c5150d61140f33882c" 63d1cb0]:
{{{
#!CommitTicketReference repository=""
revision="63d1cb0092f8933a92f471c5150d61140f33882c"
Refs #32355 -- Bumped minimum supported versions of 3rd-party packages.
This bumps minimum supported versions of 3rd-party packages to the first
releases to support Python 3.8.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:19>
Comment (by GitHub <noreply@…>):
In [changeset:"fbe850106b2e4b85f838219cb9e1df95fba6c164" fbe85010]:
{{{
#!CommitTicketReference repository=""
revision="fbe850106b2e4b85f838219cb9e1df95fba6c164"
Refs #32355 -- Bumped required version of sqlparse in setup.cfg.
Follow up to 63d1cb0092f8933a92f471c5150d61140f33882c.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:20>
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):
In [changeset:"69a3890c2aca02cf5563a663696ba219dce34e8b" 69a3890c]:
{{{
#!CommitTicketReference repository=""
revision="69a3890c2aca02cf5563a663696ba219dce34e8b"
[4.2.x] Refs #32355 -- Bumped required version of sqlparse in setup.cfg.
Follow up to 63d1cb0092f8933a92f471c5150d61140f33882c.
Backport of fbe850106b2e4b85f838219cb9e1df95fba6c164 from main.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:21>
Comment (by GitHub <noreply@…>):
In [changeset:"c74a6fad5475495756a5bdb18b2cab2b68d429bc" c74a6fa]:
{{{
#!CommitTicketReference repository=""
revision="c74a6fad5475495756a5bdb18b2cab2b68d429bc"
Refs #32355 -- Removed unnecessary getattr() call.
options.test_name_patterns is always defined.
Follow up to ec0ff406311de88f4e2a135d784363424fe602aa.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32355#comment:22>