Fix #6196: py domain: unexpected prefix is generated

This commit is contained in:
Takeshi KOMIYA 2019-03-23 22:32:37 +09:00
parent 8980f637c9
commit 700be75a73
3 changed files with 21 additions and 1 deletions

View File

@ -16,6 +16,8 @@ Features added
Bugs fixed Bugs fixed
---------- ----------
* #6196: py domain: unexpected prefix is generated
Testing Testing
-------- --------

View File

@ -262,7 +262,8 @@ class PyObject(ObjectDescription):
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 name_prefix and (name_prefix == classname or
name_prefix.startswith(classname + ".")):
fullname = name_prefix + name fullname = name_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('.') name_prefix = name_prefix[len(classname):].lstrip('.')

View File

@ -273,3 +273,20 @@ def test_pydata_signature(app):
desc_content)])) desc_content)]))
assert_node(doctree[1], addnodes.desc, desctype="data", assert_node(doctree[1], addnodes.desc, desctype="data",
domain="py", objtype="data", noindex=False) domain="py", objtype="data", noindex=False)
def test_pyobject_prefix(app):
text = (".. py:class:: Foo\n"
"\n"
" .. py:method:: Foo.say\n"
" .. py:method:: FooBar.say")
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (addnodes.index,
[desc, ([desc_signature, ([desc_annotation, "class "],
[desc_name, "Foo"])],
[desc_content, (addnodes.index,
desc,
addnodes.index,
desc)])]))
assert doctree[1][1][1].astext().strip() == 'say' # prefix is stripped
assert doctree[1][1][3].astext().strip() == 'FooBar.say' # not stripped