Cleanups for when we drop Python 2 compatibility
— at Version 64
This is a tracking ticket of things that we can remove when we drop Python 2 compatibility in Django 2.0. Please edit the description of the ticket as you come across new items.
django.core.mail.message.make_msgid()
#23905
django.dispatch.weakref_backports
django.http.cookie
workarounds (remains for Python 3.4)
django.utils.2to3_fixes
django.utils.decorators.ContextDecorator
django.utils.encoding
@python_2_unicode_compatible
force/smart _unicode
- either force/smart _text or force/smart _str
django.utils.html_parser.use_workaround
django.utils.http
functions like urlquote_plus
-- I think the versions of these functions on Python 3 don't have the unicode characters bug we are working around.
Stop using django.utils.lru_cache
Figure the deprecation plan for django.utils.lru_cache
(staying for now)
django.utils.six
- Remaining: PR 7878
from __future__ import unicode_literals
str()
stuff for environment variables, e.g. 0bfb53866199f366ed140d49938fd185e5898156
str()
stuff for type(name)
and __name__
Inheriting from object
in django.core.servers.basehttp
(and perhaps other places) ala 4ee06ec3fc8e94d164afbd2f9c880c60c658a9ac
git grep 'long int'
(mostly docs)
django.utils._os [npath,upath]
In tests: contextlib.closing(self.urlopen
(contextlib.closing
no longer needed)
- Support for pysqlite (doesn't support Python 3) PR
- Replace
super(ClassName, self)
with super()
PR
Remove # -*- coding: utf-8 -*-
source file encoding (that's the default on Python 3)
- Evaluate replacement of custom
__del__
methods by weakref.finalize
Remove __ne__
from objects already defining a __eq__
Remove note about PYTHONHASHSEED (see #26243)
- Remove Field.creation_counter (replace by metaclass
__prepare__
returning OrderedDict()
, https://docs.python.org/3/reference/datamodel.html#preparing-the-class-namespace)
django.test.utils.reset_warning_registry()
- Replace
errno
checks by IOError
subclasses defined by PEP 3151
django.utils.glob
django.utils.cookies.SimpleCookie
(remains for Python 3.4 compatibility)
django.test.mock
- Replace
tempfile.mkdtemp
+ remove with tempfile.TemporaryDirectory
context manager
Replace io.open()
by a plain open()
Evaluate need for assertRegex
, assertRaisesRegex
in tests. Some usage is merely to account for differences in messages between Python 2 and 3.
re.U
, re.UNICODE
(default behavior of Python 3) - PR 7879
Change History
(64)
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Cc: |
cmawebsite@… added
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Triage Stage: |
Someday/Maybe → Accepted
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Various
nonlocal
workarounds (example).