Merge pull request #6199 from tk0miya/refactor_pyobject

refactor PyObject class
This commit is contained in:
Takeshi KOMIYA 2019-03-23 23:01:19 +09:00 committed by GitHub
commit 2adeb68af1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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