diff options
Diffstat (limited to 'sphinx/domains/python.py')
-rw-r--r-- | sphinx/domains/python.py | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 73d6d2c11..ea71aa976 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -254,31 +254,30 @@ class PyObject(ObjectDescription): m = py_sig_re.match(sig) if m is None: raise ValueError - name_prefix, name, arglist, retann = m.groups() + prefix, name, arglist, retann = m.groups() # determine module and class name (if applicable), as well as full name - modname = self.options.get( - 'module', self.env.ref_context.get('py:module')) + modname = self.options.get('module', self.env.ref_context.get('py:module')) classname = self.env.ref_context.get('py:class') if classname: add_module = False - if name_prefix and (name_prefix == classname or - name_prefix.startswith(classname + ".")): - fullname = name_prefix + name + if prefix and (prefix == classname or + prefix.startswith(classname + ".")): + fullname = prefix + name # class name is given again in the signature - name_prefix = name_prefix[len(classname):].lstrip('.') - elif name_prefix: + prefix = prefix[len(classname):].lstrip('.') + elif prefix: # class name is given in the signature, but different # (shouldn't happen) - fullname = classname + '.' + name_prefix + name + fullname = classname + '.' + prefix + name else: # class name is not given in the signature fullname = classname + '.' + name else: add_module = True - if name_prefix: - classname = name_prefix.rstrip('.') - fullname = name_prefix + name + if prefix: + classname = prefix.rstrip('.') + fullname = prefix + name else: classname = '' fullname = name @@ -291,36 +290,31 @@ class PyObject(ObjectDescription): if sig_prefix: signode += addnodes.desc_annotation(sig_prefix, sig_prefix) - if name_prefix: - signode += addnodes.desc_addname(name_prefix, name_prefix) - # exceptions are a special case, since they are documented in the - # 'exceptions' module. + if prefix: + signode += addnodes.desc_addname(prefix, prefix) elif add_module and self.env.config.add_module_names: - modname = self.options.get( - 'module', self.env.ref_context.get('py:module')) if modname and modname != 'exceptions': + # exceptions are a special case, since they are documented in the + # 'exceptions' module. nodetext = modname + '.' signode += addnodes.desc_addname(nodetext, nodetext) - anno = self.options.get('annotation') - signode += addnodes.desc_name(name, name) - if not arglist: + if arglist: + _pseudo_parse_arglist(signode, arglist) + else: if self.needs_arglist(): # for callables, add an empty parameter list signode += addnodes.desc_parameterlist() - if retann: - signode += addnodes.desc_returns(retann, retann) - if anno: - signode += addnodes.desc_annotation(' ' + anno, ' ' + anno) - return fullname, name_prefix - _pseudo_parse_arglist(signode, arglist) if retann: signode += addnodes.desc_returns(retann, retann) + + anno = self.options.get('annotation') if anno: signode += addnodes.desc_annotation(' ' + anno, ' ' + anno) - return fullname, name_prefix + + return fullname, prefix def get_index_text(self, modname, name): # type: (str, str) -> str |