|
14 | 14 | from docutils import nodes |
15 | 15 | from docutils.nodes import Node, make_id, system_message |
16 | 16 | from docutils.parsers.rst import directives |
17 | | -from docutils.parsers.rst.directives import html, images, tables |
| 17 | +from docutils.parsers.rst.directives import images, tables |
18 | 18 |
|
19 | 19 | from sphinx import addnodes |
20 | 20 | from sphinx.deprecation import RemovedInSphinx60Warning |
|
27 | 27 | from sphinx.util.osutil import SEP, os_path, relpath |
28 | 28 | from sphinx.util.typing import OptionSpec |
29 | 29 |
|
| 30 | +try: |
| 31 | + from docutils.nodes import meta as meta_node # type: ignore |
| 32 | + from docutils.parsers.rst.directives.misc import Meta as MetaBase # type: ignore |
| 33 | +except ImportError: |
| 34 | + # docutils-0.17 or older |
| 35 | + from docutils.parsers.rst.directives.html import Meta as MetaBase |
| 36 | + from docutils.parsers.rst.directives.html import MetaBody |
| 37 | + meta_node = MetaBody.meta |
| 38 | + |
30 | 39 | if TYPE_CHECKING: |
31 | 40 | from sphinx.application import Sphinx |
32 | 41 |
|
@@ -60,19 +69,19 @@ def run(self) -> List[Node]: |
60 | 69 | return [figure_node] |
61 | 70 |
|
62 | 71 |
|
63 | | -class Meta(html.Meta, SphinxDirective): |
| 72 | +class Meta(MetaBase, SphinxDirective): |
64 | 73 | def run(self) -> List[Node]: |
65 | 74 | result = super().run() |
66 | 75 | for node in result: |
67 | 76 | if (isinstance(node, nodes.pending) and |
68 | | - isinstance(node.details['nodes'][0], html.MetaBody.meta)): |
| 77 | + isinstance(node.details['nodes'][0], meta_node)): |
69 | 78 | meta = node.details['nodes'][0] |
70 | 79 | meta.source = self.env.doc2path(self.env.docname) |
71 | 80 | meta.line = self.lineno |
72 | | - meta.rawcontent = meta['content'] # type: ignore |
| 81 | + meta.rawcontent = meta['content'] |
73 | 82 |
|
74 | 83 | # docutils' meta nodes aren't picklable because the class is nested |
75 | | - meta.__class__ = addnodes.meta # type: ignore |
| 84 | + meta.__class__ = addnodes.meta |
76 | 85 |
|
77 | 86 | return result |
78 | 87 |
|
|
0 commit comments