mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #6199 from tk0miya/refactor_pyobject
refactor PyObject class
This commit is contained in:
commit
2adeb68af1
@ -254,30 +254,29 @@ class PyObject(ObjectDescription):
|
|||||||
m = py_sig_re.match(sig)
|
m = py_sig_re.match(sig)
|
||||||
if m is None:
|
if m is None:
|
||||||
raise ValueError
|
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
|
# determine module and class name (if applicable), as well as full name
|
||||||
modname = self.options.get(
|
modname = self.options.get('module', self.env.ref_context.get('py:module'))
|
||||||
'module', self.env.ref_context.get('py:module'))
|
|
||||||
classname = self.env.ref_context.get('py:class')
|
classname = self.env.ref_context.get('py:class')
|
||||||
if classname:
|
if classname:
|
||||||
add_module = False
|
add_module = False
|
||||||
if name_prefix and name_prefix.startswith(classname):
|
if prefix and prefix.startswith(classname):
|
||||||
fullname = name_prefix + name
|
fullname = prefix + name
|
||||||
# class name is given again in the signature
|
# class name is given again in the signature
|
||||||
name_prefix = name_prefix[len(classname):].lstrip('.')
|
prefix = prefix[len(classname):].lstrip('.')
|
||||||
elif name_prefix:
|
elif prefix:
|
||||||
# class name is given in the signature, but different
|
# class name is given in the signature, but different
|
||||||
# (shouldn't happen)
|
# (shouldn't happen)
|
||||||
fullname = classname + '.' + name_prefix + name
|
fullname = classname + '.' + prefix + name
|
||||||
else:
|
else:
|
||||||
# class name is not given in the signature
|
# class name is not given in the signature
|
||||||
fullname = classname + '.' + name
|
fullname = classname + '.' + name
|
||||||
else:
|
else:
|
||||||
add_module = True
|
add_module = True
|
||||||
if name_prefix:
|
if prefix:
|
||||||
classname = name_prefix.rstrip('.')
|
classname = prefix.rstrip('.')
|
||||||
fullname = name_prefix + name
|
fullname = prefix + name
|
||||||
else:
|
else:
|
||||||
classname = ''
|
classname = ''
|
||||||
fullname = name
|
fullname = name
|
||||||
@ -290,36 +289,31 @@ class PyObject(ObjectDescription):
|
|||||||
if sig_prefix:
|
if sig_prefix:
|
||||||
signode += addnodes.desc_annotation(sig_prefix, sig_prefix)
|
signode += addnodes.desc_annotation(sig_prefix, sig_prefix)
|
||||||
|
|
||||||
if name_prefix:
|
if prefix:
|
||||||
signode += addnodes.desc_addname(name_prefix, name_prefix)
|
signode += addnodes.desc_addname(prefix, prefix)
|
||||||
|
elif add_module and self.env.config.add_module_names:
|
||||||
|
if modname and modname != 'exceptions':
|
||||||
# exceptions are a special case, since they are documented in the
|
# exceptions are a special case, since they are documented in the
|
||||||
# 'exceptions' module.
|
# 'exceptions' module.
|
||||||
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':
|
|
||||||
nodetext = modname + '.'
|
nodetext = modname + '.'
|
||||||
signode += addnodes.desc_addname(nodetext, nodetext)
|
signode += addnodes.desc_addname(nodetext, nodetext)
|
||||||
|
|
||||||
anno = self.options.get('annotation')
|
|
||||||
|
|
||||||
signode += addnodes.desc_name(name, name)
|
signode += addnodes.desc_name(name, name)
|
||||||
if not arglist:
|
if arglist:
|
||||||
|
_pseudo_parse_arglist(signode, arglist)
|
||||||
|
else:
|
||||||
if self.needs_arglist():
|
if self.needs_arglist():
|
||||||
# for callables, add an empty parameter list
|
# for callables, add an empty parameter list
|
||||||
signode += addnodes.desc_parameterlist()
|
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:
|
if retann:
|
||||||
signode += addnodes.desc_returns(retann, retann)
|
signode += addnodes.desc_returns(retann, retann)
|
||||||
|
|
||||||
|
anno = self.options.get('annotation')
|
||||||
if anno:
|
if anno:
|
||||||
signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
|
signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
|
||||||
return fullname, name_prefix
|
|
||||||
|
return fullname, prefix
|
||||||
|
|
||||||
def get_index_text(self, modname, name):
|
def get_index_text(self, modname, name):
|
||||||
# type: (str, str) -> str
|
# type: (str, str) -> str
|
||||||
|
Loading…
Reference in New Issue
Block a user