Skip to content

Commit 595104f

Browse files
committed
Make parameter nodes inherit from sig classes
1 parent c45bdf5 commit 595104f

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

sphinx/addnodes.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,13 +181,6 @@ class desc_content(nodes.General, nodes.Element):
181181
"""
182182

183183

184-
class desc_compact_content(nodes.General, nodes.Element):
185-
"""Node for compact object description content.
186-
187-
Must be the last child node in a :py:class:`desc` node.
188-
"""
189-
190-
191184
class desc_inline(_desc_classes_injector, nodes.Inline, nodes.TextElement):
192185
"""Node for a signature fragment in inline text.
193186
@@ -254,6 +247,15 @@ def astext(self):
254247
return f'({super().astext()})'
255248

256249

250+
class desc_multiline_parameterlist(nodes.Part, nodes.Inline, nodes.FixedTextElement):
251+
"""Node for a multiline parameter list.
252+
"""
253+
child_text_separator = ', '
254+
255+
def astext(self):
256+
return f'({super().astext()})'
257+
258+
257259
class desc_parameter(nodes.Part, nodes.Inline, nodes.FixedTextElement):
258260
"""Node for a single parameter."""
259261

sphinx/domains/python.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,11 @@ def _parse_arglist(
228228
arglist: str, env: Optional[BuildEnvironment] = None, multiline=False
229229
) -> addnodes.desc_parameterlist:
230230
"""Parse a list of arguments using AST parser"""
231-
params = addnodes.desc_parameterlist(arglist)
231+
params = addnodes.desc_multiline_parameterlist(arglist) if multiline else addnodes.desc_parameterlist(arglist)
232232
sig = signature_from_str('(%s)' % arglist)
233233
last_kind = None
234234
for param in sig.parameters.values():
235-
param_node = addnodes.desc_compact_content() if multiline else params
235+
param_node = addnodes.desc_content() if multiline else params
236236
if param.kind != param.POSITIONAL_ONLY and last_kind == param.POSITIONAL_ONLY:
237237
# PEP-570: Separator for Positional Only Parameter: /
238238
param_node += addnodes.desc_parameter('', '', addnodes.desc_sig_operator('', '/'))

sphinx/themes/basic/static/basic.css_t

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ dd {
670670
margin-left: 30px;
671671
}
672672

673-
dd.compact {
673+
.sig dd {
674674
margin-top: 0px;
675675
margin-bottom: 0px;
676676
}

sphinx/writers/html5.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,6 @@ def visit_desc_content(self, node: Element) -> None:
112112
def depart_desc_content(self, node: Element) -> None:
113113
self.body.append('</dd>')
114114

115-
def visit_desc_compact_content(self, node: Element) -> None:
116-
self.body.append(self.starttag(node, 'dd', '', classes=['compact']))
117-
118-
def depart_desc_compact_content(self, node: Element) -> None:
119-
self.body.append('</dd>')
120-
121115
def visit_desc_inline(self, node: Element) -> None:
122116
self.body.append(self.starttag(node, 'span', ''))
123117

@@ -165,6 +159,20 @@ def visit_desc_parameterlist(self, node: Element) -> None:
165159
def depart_desc_parameterlist(self, node: Element) -> None:
166160
self.body.append('<span class="sig-paren">)</span>')
167161

162+
def visit_desc_multiline_parameterlist(self, node: Element) -> None:
163+
self.body.append('<span class="sig-paren">(</span>')
164+
self.first_param = 1
165+
self.optional_param_level = 0
166+
# How many required parameters are left.
167+
self.required_params_left = sum([isinstance(c, addnodes.desc_parameter)
168+
for c in node.children])
169+
self.param_separator = node.child_text_separator
170+
self.body.append(self.starttag(node, 'dl'))
171+
172+
def depart_desc_multiline_parameterlist(self, node: Element) -> None:
173+
self.body.append('</dl>\n\n')
174+
self.body.append('<span class="sig-paren">)</span>')
175+
168176
# If required parameters are still to come, then put the comma after
169177
# the parameter. Otherwise, put the comma before. This ensures that
170178
# signatures like the following render correctly (see issue #1001):

0 commit comments

Comments
 (0)