|
9 | 9 | from docutils.parsers.rst import Directive
|
10 | 10 | from docutils.statemachine import ViewList
|
11 | 11 | from sphinx import addnodes
|
| 12 | +from sphinx import version_info as sphinx_version |
12 | 13 | from sphinx.builders.html import StandaloneHTMLBuilder
|
13 | 14 | from sphinx.directives.code import CodeBlock
|
14 | 15 | from sphinx.domains.std import Cmdoption
|
@@ -127,12 +128,23 @@ def depart_table(self, node):
|
127 | 128 |
|
128 | 129 | def visit_desc_parameterlist(self, node):
|
129 | 130 | self.body.append("(") # by default sphinx puts <big> around the "("
|
130 |
| - self.first_param = 1 |
131 | 131 | self.optional_param_level = 0
|
132 | 132 | self.param_separator = node.child_text_separator
|
133 |
| - self.required_params_left = sum( |
| 133 | + # Counts 'parameter groups' being either a required parameter, or a set |
| 134 | + # of contiguous optional ones. |
| 135 | + required_params = [ |
134 | 136 | isinstance(c, addnodes.desc_parameter) for c in node.children
|
135 |
| - ) |
| 137 | + ] |
| 138 | + # How many required parameters are left. |
| 139 | + self.required_params_left = sum(required_params) |
| 140 | + if sphinx_version < (7, 1): |
| 141 | + self.first_param = 1 |
| 142 | + else: |
| 143 | + self.is_first_param = True |
| 144 | + self.params_left_at_level = 0 |
| 145 | + self.param_group_index = 0 |
| 146 | + self.list_is_required_param = required_params |
| 147 | + self.multi_line_parameter_list = False |
136 | 148 |
|
137 | 149 | def depart_desc_parameterlist(self, node):
|
138 | 150 | self.body.append(")")
|
|
0 commit comments