mirror of
https://github.com/django/django.git
synced 2025-06-05 11:39:13 +00:00
Refs #27753 -- Deprecated django.utils.encoding.force_text() and smart_text().
This commit is contained in:
parent
3bb6a4390c
commit
d55e882927
@ -1,9 +1,11 @@
|
|||||||
import codecs
|
import codecs
|
||||||
import datetime
|
import datetime
|
||||||
import locale
|
import locale
|
||||||
|
import warnings
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
from django.utils.functional import Promise
|
from django.utils.functional import Promise
|
||||||
|
|
||||||
|
|
||||||
@ -97,8 +99,20 @@ def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):
|
|||||||
return str(s).encode(encoding, errors)
|
return str(s).encode(encoding, errors)
|
||||||
|
|
||||||
|
|
||||||
smart_text = smart_str
|
def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):
|
||||||
force_text = force_str
|
warnings.warn(
|
||||||
|
'smart_text() is deprecated in favor of smart_str().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return smart_str(s, encoding, strings_only, errors)
|
||||||
|
|
||||||
|
|
||||||
|
def force_text(s, encoding='utf-8', strings_only=False, errors='strict'):
|
||||||
|
warnings.warn(
|
||||||
|
'force_text() is deprecated in favor of force_str().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return force_str(s, encoding, strings_only, errors)
|
||||||
|
|
||||||
|
|
||||||
def iri_to_uri(iri):
|
def iri_to_uri(iri):
|
||||||
|
@ -18,6 +18,8 @@ details on these changes.
|
|||||||
* ``django.utils.http.urlquote()``, ``urlquote_plus()``, ``urlunquote()``, and
|
* ``django.utils.http.urlquote()``, ``urlquote_plus()``, ``urlunquote()``, and
|
||||||
``urlunquote_plus()`` will be removed.
|
``urlunquote_plus()`` will be removed.
|
||||||
|
|
||||||
|
* ``django.utils.encoding.force_text()`` and ``smart_text()`` will be removed.
|
||||||
|
|
||||||
.. _deprecation-removed-in-3.1:
|
.. _deprecation-removed-in-3.1:
|
||||||
|
|
||||||
3.1
|
3.1
|
||||||
|
@ -232,11 +232,15 @@ The functions defined in this module share the following properties:
|
|||||||
|
|
||||||
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
||||||
|
|
||||||
|
.. deprecated:: 3.0
|
||||||
|
|
||||||
Alias of :func:`force_str` for backwards compatibility, especially in code
|
Alias of :func:`force_str` for backwards compatibility, especially in code
|
||||||
that supports Python 2.
|
that supports Python 2.
|
||||||
|
|
||||||
.. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
.. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
||||||
|
|
||||||
|
.. deprecated:: 3.0
|
||||||
|
|
||||||
Alias of :func:`force_str` for backwards compatibility, especially in code
|
Alias of :func:`force_str` for backwards compatibility, especially in code
|
||||||
that supports Python 2.
|
that supports Python 2.
|
||||||
|
|
||||||
|
@ -292,6 +292,14 @@ Miscellaneous
|
|||||||
Features deprecated in 3.0
|
Features deprecated in 3.0
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|
``django.utils.encoding.force_text()`` and ``smart_text()``
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
The ``smart_text()`` and ``force_text()`` aliases (since Django 2.0) of
|
||||||
|
``smart_str()`` and ``force_str()`` are deprecated. Ignore this deprecation if
|
||||||
|
your code supports Python 2 as the behavior of ``smart_str()`` and
|
||||||
|
``force_str()`` is different there.
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
24
tests/utils_tests/test_encoding_deprecations.py
Normal file
24
tests/utils_tests/test_encoding_deprecations.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from django.test import SimpleTestCase, ignore_warnings
|
||||||
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
|
from django.utils.encoding import force_text, smart_text
|
||||||
|
from django.utils.functional import SimpleLazyObject
|
||||||
|
from django.utils.translation import gettext_lazy
|
||||||
|
|
||||||
|
|
||||||
|
@ignore_warnings(category=RemovedInDjango40Warning)
|
||||||
|
class TestDeprecatedEncodingUtils(SimpleTestCase):
|
||||||
|
|
||||||
|
def test_force_text(self):
|
||||||
|
s = SimpleLazyObject(lambda: 'x')
|
||||||
|
self.assertIs(type(force_text(s)), str)
|
||||||
|
|
||||||
|
def test_smart_text(self):
|
||||||
|
class Test:
|
||||||
|
def __str__(self):
|
||||||
|
return 'ŠĐĆŽćžšđ'
|
||||||
|
|
||||||
|
lazy_func = gettext_lazy('x')
|
||||||
|
self.assertIs(smart_text(lazy_func), lazy_func)
|
||||||
|
self.assertEqual(smart_text(Test()), '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
|
||||||
|
self.assertEqual(smart_text(1), '1')
|
||||||
|
self.assertEqual(smart_text('foo'), 'foo')
|
Loading…
x
Reference in New Issue
Block a user