diff --git a/django/utils/encoding.py b/django/utils/encoding.py index e1ebacef47..39d44aed0d 100644 --- a/django/utils/encoding.py +++ b/django/utils/encoding.py @@ -1,11 +1,9 @@ import codecs import datetime import locale -import warnings from decimal import Decimal from urllib.parse import quote -from django.utils.deprecation import RemovedInDjango40Warning from django.utils.functional import Promise @@ -99,22 +97,6 @@ def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'): return str(s).encode(encoding, errors) -def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'): - 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): """ Convert an Internationalized Resource Identifier (IRI) portion to a URI diff --git a/docs/ref/utils.txt b/docs/ref/utils.txt index f88fc7f9e7..b04e1196d4 100644 --- a/docs/ref/utils.txt +++ b/docs/ref/utils.txt @@ -248,20 +248,6 @@ The functions defined in this module share the following properties: If ``strings_only`` is ``True``, don't convert (some) non-string-like objects. -.. 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 - that supports Python 2. - -.. 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 - that supports Python 2. - .. function:: iri_to_uri(iri) Convert an Internationalized Resource Identifier (IRI) portion to a URI diff --git a/docs/releases/4.0.txt b/docs/releases/4.0.txt index 970a5ff126..9865f59d6e 100644 --- a/docs/releases/4.0.txt +++ b/docs/releases/4.0.txt @@ -249,6 +249,8 @@ to remove usage of these features. * ``django.utils.http.urlquote()``, ``urlquote_plus()``, ``urlunquote()``, and ``urlunquote_plus()`` are removed. +* ``django.utils.encoding.force_text()`` and ``smart_text()`` are removed. + See :ref:`deprecated-features-3.1` for details on these changes, including how to remove usage of these features. diff --git a/tests/utils_tests/test_encoding_deprecations.py b/tests/utils_tests/test_encoding_deprecations.py deleted file mode 100644 index c775ce5f66..0000000000 --- a/tests/utils_tests/test_encoding_deprecations.py +++ /dev/null @@ -1,24 +0,0 @@ -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')