Skip to content

Commit 8d6dfba

Browse files
committed
Make parameter nodes inherit from sig classes
1 parent 82f1b98 commit 8d6dfba

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
@@ -183,13 +183,6 @@ class desc_content(nodes.General, nodes.Element):
183183
"""
184184

185185

186-
class desc_compact_content(nodes.General, nodes.Element):
187-
"""Node for compact object description content.
188-
189-
Must be the last child node in a :py:class:`desc` node.
190-
"""
191-
192-
193186
class desc_inline(_desc_classes_injector, nodes.Inline, nodes.TextElement):
194187
"""Node for a signature fragment in inline text.
195188
@@ -256,6 +249,15 @@ def astext(self):
256249
return f'({super().astext()})'
257250

258251

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

sphinx/domains/python.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,11 @@ def _parse_arglist(
254254
arglist: str, env: BuildEnvironment | None = None, multiline=False
255255
) -> addnodes.desc_parameterlist:
256256
"""Parse a list of arguments using AST parser"""
257-
params = addnodes.desc_parameterlist(arglist)
257+
params = addnodes.desc_multiline_parameterlist(arglist) if multiline else addnodes.desc_parameterlist(arglist)
258258
sig = signature_from_str('(%s)' % arglist)
259259
last_kind = None
260260
for param in sig.parameters.values():
261-
param_node = addnodes.desc_compact_content() if multiline else params
261+
param_node = addnodes.desc_content() if multiline else params
262262
if param.kind != param.POSITIONAL_ONLY and last_kind == param.POSITIONAL_ONLY:
263263
# PEP-570: Separator for Positional Only Parameter: /
264264
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
@@ -114,12 +114,6 @@ def visit_desc_content(self, node: Element) -> None:
114114
def depart_desc_content(self, node: Element) -> None:
115115
self.body.append('</dd>')
116116

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

@@ -167,6 +161,20 @@ def visit_desc_parameterlist(self, node: Element) -> None:
167161
def depart_desc_parameterlist(self, node: Element) -> None:
168162
self.body.append('<span class="sig-paren">)</span>')
169163

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

0 commit comments

Comments
 (0)