|
3 | 3 | import base64 |
4 | 4 | from pathlib import Path |
5 | 5 | from functools import partial |
6 | | -import sphinx |
7 | | - |
8 | 6 |
|
9 | 7 | from docutils import nodes |
10 | 8 | from docutils.parsers.rst import directives |
|
27 | 25 | LEXER_MAP[short_name] = lexer[0] |
28 | 26 |
|
29 | 27 |
|
| 28 | +def _get_env_app(env): |
| 29 | + """Return Sphinx app without triggering deprecated BuildEnvironment.app.""" |
| 30 | + return getattr(env, "_app", None) or env.app |
| 31 | + |
| 32 | + |
30 | 33 | def get_compatible_builders(app): |
31 | 34 | builders = [ |
32 | 35 | "html", |
@@ -103,7 +106,8 @@ def run(self): |
103 | 106 |
|
104 | 107 | self.state.nested_parse(self.content, self.content_offset, node) |
105 | 108 |
|
106 | | - if self.env.app.builder.name in get_compatible_builders(self.env.app): |
| 109 | + app = _get_env_app(self.env) |
| 110 | + if app.builder.name in get_compatible_builders(app): |
107 | 111 | tablist = SphinxTabsTablist() |
108 | 112 | tablist["role"] = "tablist" |
109 | 113 | tablist["aria-label"] = "Tabbed content" |
@@ -187,7 +191,8 @@ def run(self): |
187 | 191 |
|
188 | 192 | self.state.nested_parse(self.content[1:], self.content_offset, panel) |
189 | 193 |
|
190 | | - if self.env.app.builder.name not in get_compatible_builders(self.env.app): |
| 194 | + app = _get_env_app(self.env) |
| 195 | + if app.builder.name not in get_compatible_builders(app): |
191 | 196 | # Use base docutils classes |
192 | 197 | outer_node = nodes.container() |
193 | 198 | tab = nodes.container() |
@@ -304,9 +309,7 @@ def update_context(app, pagename, templatename, context, doctree): |
304 | 309 | visitor = _FindTabsDirectiveVisitor(doctree) |
305 | 310 | doctree.walk(visitor) |
306 | 311 |
|
307 | | - include_assets_in_all_pages = False |
308 | | - if sphinx.version_info >= (4, 1, 0): |
309 | | - include_assets_in_all_pages = app.registry.html_assets_policy == "always" |
| 312 | + include_assets_in_all_pages = app.registry.html_assets_policy == "always" |
310 | 313 |
|
311 | 314 | if visitor.found_tabs_directive or include_assets_in_all_pages: |
312 | 315 | if not app.config.sphinx_tabs_disable_css_loading: |
|
0 commit comments