diff options
Diffstat (limited to 'sphinx/domains/python.py')
-rw-r--r-- | sphinx/domains/python.py | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 4e08eba9..692010c1 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -84,13 +84,14 @@ def _pseudo_parse_arglist(signode, arglist): # This override allows our inline type specifiers to behave like :class: link # when it comes to handling "." and "~" prefixes. -class PyTypedField(TypedField): - def make_xref(self, rolename, domain, target, innernode=nodes.emphasis): - result = super(PyTypedField, self).make_xref(rolename, domain, target, - innernode) +class PyXrefMixin(object): + def make_xref(self, rolename, domain, target, innernode=nodes.emphasis, + contnode=None): + result = super(PyXrefMixin, self).make_xref(rolename, domain, target, + innernode, contnode) + result['refspecific'] = True if target.startswith('.'): result['reftarget'] = target[1:] - result['refspecific'] = True result[0][0] = nodes.Text(target[1:]) if target.startswith('~'): result['reftarget'] = target[1:] @@ -99,6 +100,14 @@ class PyTypedField(TypedField): return result +class PyField(PyXrefMixin, Field): + pass + + +class PyTypedField(PyXrefMixin, TypedField): + pass + + class PyObject(ObjectDescription): """ Description of a general Python object. @@ -111,21 +120,21 @@ class PyObject(ObjectDescription): doc_field_types = [ PyTypedField('parameter', label=l_('Parameters'), - names=('param', 'parameter', 'arg', 'argument', - 'keyword', 'kwarg', 'kwparam'), - typerolename='obj', typenames=('paramtype', 'type'), - can_collapse=True), - TypedField('variable', label=l_('Variables'), rolename='obj', - names=('var', 'ivar', 'cvar'), - typerolename='obj', typenames=('vartype',), - can_collapse=True), + names=('param', 'parameter', 'arg', 'argument', + 'keyword', 'kwarg', 'kwparam'), + typerolename='obj', typenames=('paramtype', 'type'), + can_collapse=True), + PyTypedField('variable', label=l_('Variables'), rolename='obj', + names=('var', 'ivar', 'cvar'), + typerolename='obj', typenames=('vartype',), + can_collapse=True), GroupedField('exceptions', label=l_('Raises'), rolename='exc', names=('raises', 'raise', 'exception', 'except'), can_collapse=True), Field('returnvalue', label=l_('Returns'), has_arg=False, names=('returns', 'return')), - Field('returntype', label=l_('Return type'), has_arg=False, - names=('rtype',)), + PyField('returntype', label=l_('Return type'), has_arg=False, + names=('rtype',), bodyrolename='obj'), ] def get_signature_prefix(self, sig): |