mirror of https://github.com/django/django.git
[py3] Added python_2_unicode_compatible decorator.
This commit is contained in:
parent
e7e08fd48b
commit
a0a0203a39
|
@ -39,6 +39,19 @@ class StrAndUnicode(object):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.__unicode__().encode('utf-8')
|
return self.__unicode__().encode('utf-8')
|
||||||
|
|
||||||
|
def python_2_unicode_compatible(klass):
|
||||||
|
"""
|
||||||
|
A decorator that defines __unicode__ and __str__ methods under Python 2.
|
||||||
|
Under Python 3 it does nothing.
|
||||||
|
|
||||||
|
To support Python 2 and 3 with a single code base, define a __str__ method
|
||||||
|
returning text and apply this decorator to the class.
|
||||||
|
"""
|
||||||
|
if not six.PY3:
|
||||||
|
klass.__unicode__ = klass.__str__
|
||||||
|
klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
|
||||||
|
return klass
|
||||||
|
|
||||||
def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):
|
def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):
|
||||||
"""
|
"""
|
||||||
Returns a text object representing 's' -- unicode on Python 2 and str on
|
Returns a text object representing 's' -- unicode on Python 2 and str on
|
||||||
|
|
|
@ -187,6 +187,14 @@ The functions defined in this module share the following properties:
|
||||||
Useful as a mix-in. If you support Python 2 and 3 with a single code base,
|
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__``.
|
you can inherit this mix-in and just define ``__unicode__``.
|
||||||
|
|
||||||
|
.. function:: python_2_unicode_compatible
|
||||||
|
|
||||||
|
A decorator that defines ``__unicode__`` and ``__str__`` methods under
|
||||||
|
Python 2. Under Python 3 it does nothing.
|
||||||
|
|
||||||
|
To support Python 2 and 3 with a single code base, define a ``__str__``
|
||||||
|
method returning text and apply this decorator to the class.
|
||||||
|
|
||||||
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
|
||||||
|
|
||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
|
|
Loading…
Reference in New Issue