﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
23919	Cleanups for when we drop Python 2 compatibility	Tim Graham	nobody	"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: [https://github.com/django/django/pull/7878 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) [https://github.com/django/django/pull/7890 PR]
* Replace `super(ClassName, self)` with `super()` [https://github.com/django/django/pull/7905 PR]
* ~~Remove `# -*- coding: utf-8 -*-` source file encoding~~ (that's the default on Python 3)
* Evaluate replacement of custom `__del__` methods by [https://docs.python.org/3/library/weakref.html#weakref.finalize 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 [https://www.python.org/dev/peps/pep-3151/ 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) - [https://github.com/django/django/pull/7879 PR 7879]"	Cleanup/optimization	new	Core (Other)		Normal			cmawebsite@…	Accepted	0	0	0	0	0	0
