Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add collapsible option to admonition directives #12507

Merged
merged 14 commits into from
Jan 29, 2025
Prev Previous commit
Next Next commit
revert format
chrisjsewell committed Jul 3, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
commit 2c5d76658c29a84a24d2ea4c4be45457adad7eca
2 changes: 1 addition & 1 deletion .ruff.toml
Original file line number Diff line number Diff line change
@@ -445,7 +445,7 @@ exclude = [
"sphinx/builders/*",
"sphinx/cmd/*",
"sphinx/config.py",
"sphinx/directives/__init__.py ",
"sphinx/directives/__init__.py",
"sphinx/directives/code.py",
"sphinx/directives/other.py",
"sphinx/directives/patches.py",
37 changes: 13 additions & 24 deletions sphinx/directives/__init__.py
Original file line number Diff line number Diff line change
@@ -224,21 +224,18 @@ def run(self) -> list[Node]:
'no-index' in self.options
# xref RemovedInSphinx90Warning
# deprecate noindex in Sphinx 9.0
or 'noindex' in self.options
)
or 'noindex' in self.options)
node['no-index-entry'] = node['noindexentry'] = (
'no-index-entry' in self.options
# xref RemovedInSphinx90Warning
# deprecate noindexentry in Sphinx 9.0
or 'noindexentry' in self.options
)
or 'noindexentry' in self.options)
node['no-contents-entry'] = node['nocontentsentry'] = (
'no-contents-entry' in self.options
# xref RemovedInSphinx90Warning
# deprecate nocontentsentry in Sphinx 9.0
or 'nocontentsentry' in self.options
)
node['no-typesetting'] = 'no-typesetting' in self.options
or 'nocontentsentry' in self.options)
node['no-typesetting'] = ('no-typesetting' in self.options)
if self.domain:
node['classes'].append(self.domain)
node['classes'].append(node['objtype'])
@@ -285,9 +282,8 @@ def run(self) -> list[Node]:
content_node = addnodes.desc_content('', *content_children)
node.append(content_node)
self.transform_content(content_node)
self.env.app.emit(
'object-description-transform', self.domain, self.objtype, content_node
)
self.env.app.emit('object-description-transform',
self.domain, self.objtype, content_node)
DocFieldTransformer(self).transform_all(content_node)
self.env.temp_data['object'] = None
self.after_content()
@@ -298,11 +294,8 @@ def run(self) -> list[Node]:
# If ``:no-index:`` is set, or there are no ids on the node
# or any of its children, then just return the index node,
# as Docutils expects a target node to have at least one id.
if node_ids := [
node_id
for el in node.findall(nodes.Element) # type: ignore[var-annotated]
for node_id in el.get('ids', ())
]:
if node_ids := [node_id for el in node.findall(nodes.Element) # type: ignore[var-annotated]
for node_id in el.get('ids', ())]:
target_node = nodes.target(ids=node_ids)
self.set_source_info(target_node)
return [self.indexnode, target_node]
@@ -323,20 +316,16 @@ def run(self) -> list[Node]:
docutils.unregister_role('')
return []
role_name = self.arguments[0]
role, messages = roles.role(
role_name, self.state_machine.language, self.lineno, self.state.reporter
)
role, messages = roles.role(role_name, self.state_machine.language,
self.lineno, self.state.reporter)
if role:
docutils.register_role('', role) # type: ignore[arg-type]
self.env.temp_data['default_role'] = role_name
else:
literal_block = nodes.literal_block(self.block_text, self.block_text)
reporter = self.state.reporter
error = reporter.error(
'Unknown interpreted text role "%s".' % role_name,
literal_block,
line=self.lineno,
)
error = reporter.error('Unknown interpreted text role "%s".' % role_name,
literal_block, line=self.lineno)
messages += [error]

return cast(list[nodes.Node], messages)
@@ -366,7 +355,7 @@ def run(self) -> list[Node]:


def setup(app: Sphinx) -> ExtensionMetadata:
app.add_config_value('strip_signature_backslash', False, 'env')
app.add_config_value("strip_signature_backslash", False, 'env')
directives.register_directive('default-role', DefaultRole)
directives.register_directive('default-domain', DefaultDomain)
directives.register_directive('describe', ObjectDescription)