summaryrefslogtreecommitdiff
path: root/sphinx/domains/python.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/domains/python.py')
-rw-r--r--sphinx/domains/python.py50
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