mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
use UnicodeMixin for __str__, __unicode__ to support py2/py3 in one source. refs #1350.
This commit is contained in:
parent
00eff0b7f6
commit
9dbb6bf092
@ -22,6 +22,7 @@ from sphinx.domains import Domain, ObjType
|
|||||||
from sphinx.directives import ObjectDescription
|
from sphinx.directives import ObjectDescription
|
||||||
from sphinx.util.nodes import make_refnode
|
from sphinx.util.nodes import make_refnode
|
||||||
from sphinx.util.compat import Directive
|
from sphinx.util.compat import Directive
|
||||||
|
from sphinx.util.pycompat import UnicodeMixin
|
||||||
from sphinx.util.docfields import Field, GroupedField
|
from sphinx.util.docfields import Field, GroupedField
|
||||||
|
|
||||||
|
|
||||||
@ -104,19 +105,16 @@ _id_shortwords = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class DefinitionError(Exception):
|
class DefinitionError(UnicodeMixin, Exception):
|
||||||
|
|
||||||
def __init__(self, description):
|
def __init__(self, description):
|
||||||
self.description = description
|
self.description = description
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return text_type(self).encode('utf-8')
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.description
|
return self.description
|
||||||
|
|
||||||
|
|
||||||
class DefExpr(object):
|
class DefExpr(UnicodeMixin):
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
if type(self) is not type(other):
|
if type(self) is not type(other):
|
||||||
@ -162,9 +160,6 @@ class DefExpr(object):
|
|||||||
"""Prefix a name node (a node returned by :meth:`get_name`)."""
|
"""Prefix a name node (a node returned by :meth:`get_name`)."""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return text_type(self).encode('utf-8')
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@ -225,7 +220,7 @@ class PathDefExpr(PrimaryDefExpr):
|
|||||||
return u'::'.join(map(text_type, self.path))
|
return u'::'.join(map(text_type, self.path))
|
||||||
|
|
||||||
|
|
||||||
class ArrayTypeSuffixDefExpr(object):
|
class ArrayTypeSuffixDefExpr(UnicodeMixin):
|
||||||
|
|
||||||
def __init__(self, size_hint=None):
|
def __init__(self, size_hint=None):
|
||||||
self.size_hint = size_hint
|
self.size_hint = size_hint
|
||||||
|
@ -19,6 +19,7 @@ import six
|
|||||||
from six.moves import range
|
from six.moves import range
|
||||||
|
|
||||||
from sphinx.ext.napoleon.iterators import modify_iter
|
from sphinx.ext.napoleon.iterators import modify_iter
|
||||||
|
from sphinx.util.pycompat import UnicodeMixin
|
||||||
|
|
||||||
|
|
||||||
_directive_regex = re.compile(r'\.\. \S+::')
|
_directive_regex = re.compile(r'\.\. \S+::')
|
||||||
@ -26,7 +27,7 @@ _google_untyped_arg_regex = re.compile(r'\s*(\w+)\s*:\s*(.*)')
|
|||||||
_google_typed_arg_regex = re.compile(r'\s*(\w+)\s*\(\s*(.+?)\s*\)\s*:\s*(.*)')
|
_google_typed_arg_regex = re.compile(r'\s*(\w+)\s*\(\s*(.+?)\s*\)\s*:\s*(.*)')
|
||||||
|
|
||||||
|
|
||||||
class GoogleDocstring(object):
|
class GoogleDocstring(UnicodeMixin):
|
||||||
"""Parse Google style docstrings.
|
"""Parse Google style docstrings.
|
||||||
|
|
||||||
Convert Google style docstrings to reStructuredText.
|
Convert Google style docstrings to reStructuredText.
|
||||||
@ -149,20 +150,6 @@ class GoogleDocstring(object):
|
|||||||
}
|
}
|
||||||
self._parse()
|
self._parse()
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Return the parsed docstring in reStructuredText format.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
str
|
|
||||||
UTF-8 encoded version of the docstring.
|
|
||||||
|
|
||||||
"""
|
|
||||||
if six.PY3:
|
|
||||||
return self.__unicode__()
|
|
||||||
else:
|
|
||||||
return self.__unicode__().encode('utf8')
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""Return the parsed docstring in reStructuredText format.
|
"""Return the parsed docstring in reStructuredText format.
|
||||||
|
|
||||||
|
@ -48,6 +48,13 @@ if six.PY3:
|
|||||||
return six.text_type(tree)
|
return six.text_type(tree)
|
||||||
from html import escape as htmlescape # >= Python 3.2
|
from html import escape as htmlescape # >= Python 3.2
|
||||||
|
|
||||||
|
class UnicodeMixin:
|
||||||
|
"""Mixin class to handle defining the proper __str__/__unicode__
|
||||||
|
methods in Python 2 or 3."""
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.__unicode__()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Python 2
|
# Python 2
|
||||||
b = str
|
b = str
|
||||||
@ -65,6 +72,13 @@ else:
|
|||||||
# use Python 3 name
|
# use Python 3 name
|
||||||
from cgi import escape as htmlescape # 2.6, 2.7
|
from cgi import escape as htmlescape # 2.6, 2.7
|
||||||
|
|
||||||
|
class UnicodeMixin(object):
|
||||||
|
"""Mixin class to handle defining the proper __str__/__unicode__
|
||||||
|
methods in Python 2 or 3."""
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.__unicode__().encode('utf8')
|
||||||
|
|
||||||
|
|
||||||
def execfile_(filepath, _globals):
|
def execfile_(filepath, _globals):
|
||||||
from sphinx.util.osutil import fs_encoding
|
from sphinx.util.osutil import fs_encoding
|
||||||
|
Loading…
Reference in New Issue
Block a user