👌 Make ExtensionMetadata type public and use it in internal extensions (#12153)

This type alias has now been fully documented for public consumption.

This will be beneficial to the sphinx ecosystem,
to aide/encourage extension developers to provide the correct metadata.

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
Chris Sewell
2024-03-21 16:19:26 +01:00
committed by GitHub
parent ace9d97500
commit d59b158371
75 changed files with 200 additions and 122 deletions

View File

@@ -1,6 +1,9 @@
from docutils import nodes
from docutils.parsers.rst import Directive
from sphinx.application import Sphinx
from sphinx.util.typing import ExtensionMetadata
class HelloWorld(Directive):
def run(self):
@@ -8,7 +11,7 @@ class HelloWorld(Directive):
return [paragraph_node]
def setup(app):
def setup(app: Sphinx) -> ExtensionMetadata:
app.add_directive('helloworld', HelloWorld)
return {

View File

@@ -3,10 +3,12 @@ from collections import defaultdict
from docutils.parsers.rst import directives
from sphinx import addnodes
from sphinx.application import Sphinx
from sphinx.directives import ObjectDescription
from sphinx.domains import Domain, Index
from sphinx.roles import XRefRole
from sphinx.util.nodes import make_refnode
from sphinx.util.typing import ExtensionMetadata
class RecipeDirective(ObjectDescription):
@@ -153,7 +155,7 @@ class RecipeDomain(Domain):
self.data['recipes'].append((name, signature, 'Recipe', self.env.docname, anchor, 0))
def setup(app):
def setup(app: Sphinx) -> ExtensionMetadata:
app.add_domain(RecipeDomain)
return {

View File

@@ -1,8 +1,10 @@
from docutils import nodes
from docutils.parsers.rst import Directive
from sphinx.application import Sphinx
from sphinx.locale import _
from sphinx.util.docutils import SphinxDirective
from sphinx.util.typing import ExtensionMetadata
class todo(nodes.Admonition, nodes.Element):
@@ -111,7 +113,7 @@ def process_todo_nodes(app, doctree, fromdocname):
node.replace_self(content)
def setup(app):
def setup(app: Sphinx) -> ExtensionMetadata:
app.add_config_value('todo_include_todos', False, 'html')
app.add_node(todolist)