[Django] #27753: Cleanups when no supported version of Django supports Python 2 anymore

42 views
Skip to first unread message

Django

unread,
Jan 20, 2017, 2:46:32 AM1/20/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
------------------------------------------------+------------------------
Reporter: Aymeric Augustin | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------------+------------------------
Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

--
Ticket URL: <https://code.djangoproject.com/ticket/27753>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jan 20, 2017, 7:40:31 AM1/20/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master
Severity: Normal | Resolution:

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Simon Charette):

Should we revert the removal of eb0b921c29ace8643a5a4cd136c433727c53dead
in this case?

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

Django

unread,
Jan 20, 2017, 7:59:43 AM1/20/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | 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 Tim Graham):

* stage: Unreviewed => Someday/Maybe


Comment:

Those methods don't work on Python 3 (`AttributeError: 'dict' object has
no attribute 'iterkeys'`) so I don't think they have value for the use
case described in the ticket description. A third-party app should use
`six.iterkeys()` as the old test did (which uses `keys()` etc. on Python
3), or am I missing something?

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:2>

Django

unread,
Jan 20, 2017, 8:00:30 AM1/20/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Claude Paroz):

The question we discussed on IRC and GitHub with Tim is about deprecating
or not deprecating those items.

I would be for a standard deprecation process as I don't see how this is
different from any other deprecation. But I'm open to read about use cases
which would push for a delayed deprecation process for items related to
Python 2.

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

Django

unread,
Jan 21, 2017, 1:12:53 PM1/21/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Tim Graham:

Old description:

> Compatibility with Python 2 is currently being removed in master as part
> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>
> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:4>

Django

unread,
Jan 21, 2017, 3:44:05 PM1/21/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Tim Graham:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>
> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:5>

Django

unread,
Jan 26, 2017, 4:12:00 AM1/26/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Aymeric Augustin:

Old description:

> Compatibility with Python 2 is currently being removed in master as part
> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:6>

Django

unread,
Jan 26, 2017, 1:53:31 PM1/26/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Claude Paroz:

Old description:

> Compatibility with Python 2 is currently being removed in master as part
> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text

- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:7>

Django

unread,
Jan 28, 2017, 10:17:49 AM1/28/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------

Reporter: Aymeric Augustin | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Claude Paroz:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])

- django.utils.safestring.SafeBytes

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:8>

Django

unread,
Feb 15, 2017, 1:30:20 PM2/15/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: Luong
Type: | Dang Hai
Cleanup/optimization | Status: assigned
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | 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 Luong Dang Hai):

* owner: nobody => Luong Dang Hai
* status: new => assigned


--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:9>

Django

unread,
Feb 15, 2017, 1:41:05 PM2/15/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | 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 Tim Graham):

* status: assigned => new
* owner: Luong Dang Hai => (none)


Comment:

Please don't work on this ticket -- the timetable for these removals isn't
decided but it's not for some years. The "Someday/Maybe" "Triage Stage" of
the ticket indicates that it's not appropriate to work on right now.

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:10>

Django

unread,
Apr 26, 2017, 10:57:46 AM4/26/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Jon Dufresne:

Old description:

> Compatibility with Python 2 is currently being removed in master as part
> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])
> - django.utils.safestring.SafeBytes

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])
- django.utils.safestring.SafeBytes

- One of either
[https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
django.utils.safestring.SafeString] or django.utils.safestring.SafeText

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:11>

Django

unread,
Apr 27, 2017, 10:06:51 AM4/27/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Tim Graham:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])
> - django.utils.safestring.SafeBytes
> - One of either
> [https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
> django.utils.safestring.SafeString] or django.utils.safestring.SafeText

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])
- django.utils.safestring.SafeBytes
- One of either
[https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
django.utils.safestring.SafeString] or django.utils.safestring.SafeText

- django.test.utils.str_prefix()

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:12>

Django

unread,
Apr 29, 2017, 1:10:08 PM4/29/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Jon Dufresne:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])
> - django.utils.safestring.SafeBytes
> - One of either
> [https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
> django.utils.safestring.SafeString] or django.utils.safestring.SafeText
> - django.test.utils.str_prefix()

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])
- django.utils.safestring.SafeBytes
- One of either
[https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
django.utils.safestring.SafeString] or django.utils.safestring.SafeText
- django.test.utils.str_prefix()

- django.utils.encoding.DjangoUnicodeDecodeError

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:13>

Django

unread,
Jun 3, 2017, 9:07:20 PM6/3/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"0a66aa158a47564fa11ff7aa99ffd3d7d73890ed" 0a66aa15]:
{{{
#!CommitTicketReference repository=""
revision="0a66aa158a47564fa11ff7aa99ffd3d7d73890ed"
Refs #27308, #27753 -- Removed obsolete cookie test mixing bytes with str.

Python 3's SimpleCookie treats all values as strings. Passing a bytes
object coerces to the repr value.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:14>

Django

unread,
Sep 6, 2017, 1:12:29 PM9/6/17
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Tim Graham:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])
> - django.utils.safestring.SafeBytes
> - One of either
> [https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
> django.utils.safestring.SafeString] or django.utils.safestring.SafeText
> - django.test.utils.str_prefix()
> - django.utils.encoding.DjangoUnicodeDecodeError

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])
- django.utils.safestring.SafeBytes
- One of either
[https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
django.utils.safestring.SafeString] or django.utils.safestring.SafeText
- django.test.utils.str_prefix()
- django.utils.encoding.DjangoUnicodeDecodeError

- `django.utils.functional.curry()` (in favor of
`functools.partial()`/`partialmethod()`; see
5b1c389603a353625ae1603ba345147356336afb)

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:15>

Django

unread,
Jun 11, 2018, 3:10:20 PM6/11/18
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tim Graham):

I think this was discussed on the mailing list or in IRC but I can't find
the discussion so I'll state it here. The reason we don't want to
deprecate this stuff now is because that would add lots of non-actionable
warnings for Django libraries that want to support Python 2 and 3 until
2020.

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:16>

Django

unread,
Jun 12, 2018, 11:36:00 AM6/12/18
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Tim Graham:

Old description:

> Compatibility with Python 2 is currently being removed in master as part


> of the Django 2.0 development cycle: see #23919.
>
> However third-party apps may want to remain compatible with all supported
> version of Django and the corresponding versions of Python, which
> includes Python 2.
>
> To allow this, compatibility functions or modules aren't removed. They're
> still importable. They're usually just aliases or no-ops. Here's a list
> of things to deprecate and remove eventually:
>

> - django.utils.six


> - django.utils.lru_cache
> - django.utils._os.abspathu, upath, npath

> - django.utils.decorators.available_attrs
> - django.utils.encoding.python_2_unicode_compatible
> - django.utils.encoding.smart/force_text
> - django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
> ([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
> unmerged commit])
> - django.utils.safestring.SafeBytes
> - One of either
> [https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
> django.utils.safestring.SafeString] or django.utils.safestring.SafeText
> - django.test.utils.str_prefix()
> - django.utils.encoding.DjangoUnicodeDecodeError
> - `django.utils.functional.curry()` (in favor of
> `functools.partial()`/`partialmethod()`; see
> 5b1c389603a353625ae1603ba345147356336afb)

New description:

Compatibility with Python 2 is currently being removed in master as part
of the Django 2.0 development cycle: see #23919.

However third-party apps may want to remain compatible with all supported
version of Django and the corresponding versions of Python, which includes
Python 2.

To allow this, compatibility functions or modules aren't removed. They're
still importable. They're usually just aliases or no-ops. Here's a list of
things to deprecate and remove eventually:

- django.utils.six


- django.utils.lru_cache
- django.utils._os.abspathu, upath, npath

- django.utils.decorators.available_attrs
- django.utils.encoding.python_2_unicode_compatible
- django.utils.encoding.smart/force_text
- django.utils.http.urlquote/urlquote_plus/urlunquote/urlunquote_plus
([https://github.com/django/django/pull/7906/commits/5861ce799ddb3f5912f9e16503d4239fa9d80e66
unmerged commit])
- django.utils.safestring.SafeBytes
- One of either
[https://github.com/django/django/blob/9718fa2e8abe430c3526a9278dd976443d4ae3c6/django/utils/safestring.py#L61
django.utils.safestring.SafeString] or django.utils.safestring.SafeText
- django.test.utils.str_prefix()
- django.utils.encoding.DjangoUnicodeDecodeError
- `django.utils.functional.curry()` (in favor of
`functools.partial()`/`partialmethod()`; see
5b1c389603a353625ae1603ba345147356336afb)

- django.test.utils.patch_logger()

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:17>

Django

unread,
Aug 2, 2018, 10:19:46 PM8/2/18
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Simon Charette):

I just wanted to mention that in my opinion it would make more sense for
`SafeText` to go away instead of `SafeString` to be consistent with the
`(smart|force)_text` removal.

Given we're currently publicly documenting that `SafeText` is an alias for
`SafeString` we should adjust the code and documentation for it to be
other way around instead before we move forward with the `SafeText`
removal or deprecation.

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:18>

Django

unread,
Feb 4, 2019, 6:53:40 PM2/4/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: | Status: new
Cleanup/optimization |
Component: Utilities | Version: master

Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Someday/Maybe
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:"83c2bc52c2bf6da682989867b09c753ec1a2e5b3" 83c2bc52]:
{{{
#!CommitTicketReference repository=""
revision="83c2bc52c2bf6da682989867b09c753ec1a2e5b3"
Refs #27753 -- Deprecated django.utils.http urllib aliases.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:19>

Django

unread,
Feb 4, 2019, 8:32:42 PM2/4/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------

Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Tim Graham):

* has_patch: 0 => 1
* stage: Someday/Maybe => Accepted


Comment:

[https://github.com/django/django/pull/10935 PR] for some removals.

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:20>

Django

unread,
Feb 5, 2019, 9:55:48 AM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham):

[https://github.com/django/django/pull/10938 PR] for
favoring`force_str()`, `smart_str()`, and `SafeString` over
`force_text()`, `smart_text()`, and `SafeText`. It also deprecates the
former functions. No deprecation for `SafeText` because it seems more
trouble than it's worth right now (deprecation warnings in `__init__()`
and `__isinstance__()`?).

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:21>

Django

unread,
Feb 5, 2019, 10:01:02 AM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Tim Graham):

* cc: Jon Dufresne (added)


Comment:

My PRs address everything in this ticket except `DjangoUnicodeDecodeError`
-- I'm not sure about the rationale for removing it as it still may
provide some value:
`DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in
position 0: invalid start byte. You passed in b'\xff' (<class 'bytes'>)`
vs. `UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position
0: invalid start byte`.

Could you explain your thinking, Jon? Maybe the mistake leading to this
exception (#5640) isn't common enough in Python 3 to continue with the
special handling?

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:22>

Django

unread,
Feb 5, 2019, 11:59:17 AM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Jon Dufresne):

I can't recall exactly, but I suspect my thinking was along the lines of:

1. After dropping Python 2, `force_text()` & friends would eventually be
removed from Django and replaced by stricter type contracts at the
boundaries. This has proved to be time consuming and difficult to
accomplish, so this isn't yet complete (but we're getting there).

2. `DjangoUnicodeDecodeError` looks like a close duplicate of
`UnicodeDecodeError`. As you pointed out, it is not as it provides more
information. Although, if the Python version is insufficient, perhaps
effort could be spent improving that message.

So, given the above, I'm OK for it to stick around. No need to remove it.

> Maybe the mistake leading to this exception (#5640) isn't common enough
in Python 3 to continue with the special handling?

I suspect that is probably true, but I can't say for certain.

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:23>

Django

unread,
Feb 5, 2019, 1:53:21 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"c679f357a8127d7776b60679071a7b791d39a5b3" c679f357]:
{{{
#!CommitTicketReference repository=""
revision="c679f357a8127d7776b60679071a7b791d39a5b3"
Refs #27753 -- Removed django.utils.lru_cache.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:25>

Django

unread,
Feb 5, 2019, 1:53:21 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"6d2ae49f254ee485101ef29f6d9521d0b7a39749" 6d2ae49]:
{{{
#!CommitTicketReference repository=""
revision="6d2ae49f254ee485101ef29f6d9521d0b7a39749"
Refs #27753 -- Removed django.test.utils.patch_logger() and str_prefix().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:24>

Django

unread,
Feb 5, 2019, 1:53:21 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"d1f4b3c68aec092051392b64e993db3ce0e5acbf" d1f4b3c]:
{{{
#!CommitTicketReference repository=""
revision="d1f4b3c68aec092051392b64e993db3ce0e5acbf"
Refs #27753 -- Removed django.utils.decorators.available_attrs().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:26>

Django

unread,
Feb 5, 2019, 1:53:21 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"9a750cbd5c2a003c5680ab049c39ef3de218f5ce" 9a750cb]:
{{{
#!CommitTicketReference repository=""
revision="9a750cbd5c2a003c5680ab049c39ef3de218f5ce"
Refs #27753 -- Removed django.utils.decorators.ContextDecorator alias.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:29>

Django

unread,
Feb 5, 2019, 1:53:22 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"41384812efe209c8295a50d78b45e0ffb2992436" 41384812]:
{{{
#!CommitTicketReference repository=""
revision="41384812efe209c8295a50d78b45e0ffb2992436"
Refs #27753 -- Removed django.utils.six.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:28>

Django

unread,
Feb 5, 2019, 1:53:22 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"f09b0f6483351bdbe85598b942c9ecfc91f046a5" f09b0f6]:
{{{
#!CommitTicketReference repository=""
revision="f09b0f6483351bdbe85598b942c9ecfc91f046a5"
Refs #27753 -- Removed django.utils.safestring.SafeBytes.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:31>

Django

unread,
Feb 5, 2019, 1:53:22 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"3004d7057f2798c348e263d5d902eeb1e20464d5" 3004d705]:
{{{
#!CommitTicketReference repository=""
revision="3004d7057f2798c348e263d5d902eeb1e20464d5"
Refs #27753 -- Removed django.utils.functional.curry().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:30>

Django

unread,
Feb 5, 2019, 1:53:22 PM2/5/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"efe28d3f566a00e76ae589a3f93be8079a638ca8" efe28d3]:
{{{
#!CommitTicketReference repository=""
revision="efe28d3f566a00e76ae589a3f93be8079a638ca8"
Refs #27753 -- Removed django.utils._os.abspathu(), upath(), and npath().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:27>

Django

unread,
Feb 6, 2019, 2:37:27 PM2/6/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"d55e88292723764a16f0689c73bc7e739dfa6047" d55e8829]:
{{{
#!CommitTicketReference repository=""
revision="d55e88292723764a16f0689c73bc7e739dfa6047"
Refs #27753 -- Deprecated django.utils.encoding.force_text() and
smart_text().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:33>

Django

unread,
Feb 6, 2019, 2:37:27 PM2/6/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"3bb6a4390c0a57da991fcb1c0642b9b3fccff751" 3bb6a439]:
{{{
#!CommitTicketReference repository=""
revision="3bb6a4390c0a57da991fcb1c0642b9b3fccff751"
Refs #27753 -- Favored force/smart_str() over force/smart_text().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:32>

Django

unread,
Feb 6, 2019, 2:37:27 PM2/6/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: new
Component: Utilities | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"77d25dbd0f20d6a907c805ffae8aaadd87edbacf" 77d25dbd]:
{{{
#!CommitTicketReference repository=""
revision="77d25dbd0f20d6a907c805ffae8aaadd87edbacf"
Refs #27753 -- Favored SafeString over SafeText.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:34>

Django

unread,
Feb 6, 2019, 2:43:54 PM2/6/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: master
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Tim Graham):

* status: new => closed
* resolution: => fixed


--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:35>

Django

unread,
May 8, 2019, 2:27:09 AM5/8/19
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: master
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

In [changeset:"b915b9f10f1110bf6b8468060ce9753ff78ffb07" b915b9f]:
{{{
#!CommitTicketReference repository=""
revision="b915b9f10f1110bf6b8468060ce9753ff78ffb07"
Refs #27753 -- Deprecated django.utils.text.unescape_entities().

The function was undocumented and only required for compatibility with
Python 2.

Code should use Python's html.unescape() that was added in Python 3.4.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:36>

Django

unread,
Jan 14, 2021, 2:12:17 PM1/14/21
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: master
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

In [changeset:"810f037b29402f848a766f6900b4ebfbaf64cc88" 810f037b]:
{{{
#!CommitTicketReference repository=""
revision="810f037b29402f848a766f6900b4ebfbaf64cc88"
Refs #27753 -- Removed django.utils.encoding.force_text() and smart_text()
per deprecation timeline.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:38>

Django

unread,
Jan 14, 2021, 2:12:17 PM1/14/21
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: master
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

In [changeset:"88ed1c8d08c70fd3e7943fc8383459545f726dcd" 88ed1c8d]:
{{{
#!CommitTicketReference repository=""
revision="88ed1c8d08c70fd3e7943fc8383459545f726dcd"
Refs #27753 -- Removed django.utils.http urllib aliases per deprecation
timeline.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:37>

Django

unread,
Jan 14, 2021, 2:12:17 PM1/14/21
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: master
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

In [changeset:"157ab32f3446da7fa1f9d716509c290069a2a156" 157ab32f]:
{{{
#!CommitTicketReference repository=""
revision="157ab32f3446da7fa1f9d716509c290069a2a156"
Refs #27753 -- Removed django.utils.text.unescape_entities() per
deprecation timeline.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:39>

Django

unread,
Dec 30, 2021, 7:19:35 AM12/30/21
to django-...@googlegroups.com
#27753: Cleanups when no supported version of Django supports Python 2 anymore
--------------------------------------+------------------------------------
Reporter: Aymeric Augustin | Owner: (none)
Type: Cleanup/optimization | Status: closed
Component: Utilities | Version: dev

Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by GitHub <noreply@…>):

In [changeset:"a21a63cc288ba51bcf8c227a49de6f5bb9a72cc3" a21a63cc]:
{{{
#!CommitTicketReference repository=""
revision="a21a63cc288ba51bcf8c227a49de6f5bb9a72cc3"
Refs #27753 -- Removed unused django.utils.text._replace_entity() and
_entity_re.

Unused since 157ab32f3446da7fa1f9d716509c290069a2a156.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:40>

Reply all
Reply to author
Forward
0 new messages