Skip to content
Browse files

[py3] Deprecated StrAndUnicode.

This mix-in is superseded by the @python_2_unicode_compatible decorator.
  • Loading branch information...
1 parent d4a0b27 commit 4e68e861533846010e372ecf58e3cd0439081754 @aaugustin aaugustin committed
Showing with 14 additions and 0 deletions.
  1. +7 −0 django/utils/
  2. +7 −0 docs/releases/1.5.txt
7 django/utils/
@@ -8,6 +8,7 @@
from urllib.parse import quote
except ImportError: # Python 2
from urllib import quote
+import warnings
from django.utils.functional import Promise
from django.utils import six
@@ -32,6 +33,12 @@ class StrAndUnicode(object):
Useful as a mix-in. If you support Python 2 and 3 with a single code base,
you can inherit this mix-in and just define __unicode__.
+ def __init__(self, *args, **kwargs):
+ warnings.warn("StrAndUnicode is deprecated. Define a __str__ method "
+ "and apply the @python_2_unicode_compatible decorator "
+ "instead.", PendingDeprecationWarning, stacklevel=2)
+ super(StrAndUnicode, self).__init__(*args, **kwargs)
if six.PY3:
def __str__(self):
return self.__unicode__()
7 docs/releases/1.5.txt
@@ -273,3 +273,10 @@ our own copy of ``simplejson``. You can safely change any use of
The :func:`~django.utils.itercompat.product` function has been deprecated. Use
the built-in :func:`itertools.product` instead.
+The :class:`~django.utils.encoding.StrAndUnicode` mix-in has been deprecated.
+Define a ``__str__`` method and apply the
+:func:`~django.utils.encoding.python_2_unicode_compatible` decorator instead.

0 comments on commit 4e68e86

Please sign in to comment.
Something went wrong with that request. Please try again.