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.
Comment (by Simon Charette):
Should we revert the removal of eb0b921c29ace8643a5a4cd136c433727c53dead
in this case?
--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:1>
* 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>
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>
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>
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>
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>
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>
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>
* owner: nobody => Luong Dang Hai
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:9>
* 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
* 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>
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>
* 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
* status: new => closed
* resolution: => fixed
--
Ticket URL: <https://code.djangoproject.com/ticket/27753#comment:35>
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>
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>
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>
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>
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>