Merge pull request #7663 from jakobandersen/astext

Fix astext() for two Sphinx nodes
This commit is contained in:
Jakob Lykke Andersen 2020-05-16 10:09:22 +02:00 committed by GitHub
commit 97accc931d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 9 deletions

View File

@ -112,6 +112,13 @@ class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement):
In that case all child nodes must be ``desc_signature_line`` nodes.
"""
@property
def child_text_separator(self):
if self.get('is_multiline'):
return ' '
else:
return super().child_text_separator
class desc_signature_line(nodes.Part, nodes.Inline, nodes.FixedTextElement):
"""Node for a line in a multi-line object signatures.
@ -150,6 +157,9 @@ class desc_parameterlist(nodes.Part, nodes.Inline, nodes.FixedTextElement):
"""Node for a general parameter list."""
child_text_separator = ', '
def astext(self):
return '({})'.format(super().astext())
class desc_parameter(nodes.Part, nodes.Inline, nodes.FixedTextElement):
"""Node for a single parameter."""

View File

@ -40,22 +40,22 @@ def parse(sig):
def test_function_signatures():
rv = parse('func(a=1) -> int object')
assert rv == 'a=1'
assert rv == '(a=1)'
rv = parse('func(a=1, [b=None])')
assert rv == 'a=1, [b=None]'
assert rv == '(a=1, [b=None])'
rv = parse('func(a=1[, b=None])')
assert rv == 'a=1, [b=None]'
assert rv == '(a=1, [b=None])'
rv = parse("compile(source : string, filename, symbol='file')")
assert rv == "source : string, filename, symbol='file'"
assert rv == "(source : string, filename, symbol='file')"
rv = parse('func(a=[], [b=None])')
assert rv == 'a=[], [b=None]'
assert rv == '(a=[], [b=None])'
rv = parse('func(a=[][, b=None])')
assert rv == 'a=[], [b=None]'
assert rv == '(a=[], [b=None])'
@pytest.mark.sphinx('dummy', testroot='domain-py')
@ -453,8 +453,8 @@ def test_pyobject_prefix(app):
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
assert doctree[1][1][1].astext().strip() == 'say()' # prefix is stripped
assert doctree[1][1][3].astext().strip() == 'FooBar.say()' # not stripped
def test_pydata(app):

View File

@ -1798,7 +1798,7 @@ def test_autodoc(app, status, warning):
content = app.env.get_doctree('index')
assert isinstance(content[3], addnodes.desc)
assert content[3][0].astext() == 'autodoc_dummy_module.test'
assert content[3][0].astext() == 'autodoc_dummy_module.test()'
assert content[3][1].astext() == 'Dummy function using dummy.*'
# issue sphinx-doc/sphinx#2437