Skip to content

Commit 5e56e37

Browse files
committed
WIP: support new generic docutils nodes
1 parent c13d8e0 commit 5e56e37

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ code_style = [
3636
"pre-commit~=2.12",
3737
]
3838
myst = [
39-
"myst-nb>=0.13,<0.14",
39+
"myst-nb>=0.15,<0.16",
4040
]
4141
rtd = [
4242
"myst-parser",
@@ -46,7 +46,7 @@ rtd = [
4646
]
4747
testing = [
4848
"coverage<5.0",
49-
"myst-nb>=0.13,<0.14",
49+
"myst-nb>=0.15,<0.16",
5050
"pytest-cov~=2.8",
5151
"pytest-regressions",
5252
"pytest>=3.6,<4",

sphinx_jupyterbook_latex/transforms.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,27 @@ def is_root_document(document: docutils.nodes.document, app: Sphinx) -> bool:
6060
return app.project.path2doc(document["source"]) == app.config.master_doc
6161

6262

63+
def is_cell(node: nodes.Node) -> bool:
64+
return (
65+
isinstance(node, nodes.container)
66+
and node.attributes.get("nb_element") == "cell_code"
67+
)
68+
69+
70+
def is_input_cell(node: nodes.Node) -> bool:
71+
return (
72+
isinstance(node, nodes.container)
73+
and node.attributes.get("nb_element") == "cell_code_source"
74+
)
75+
76+
77+
def is_output_cell(node: nodes.Node) -> bool:
78+
return (
79+
isinstance(node, nodes.container)
80+
and node.attributes.get("nb_element") == "cell_code_output"
81+
)
82+
83+
6384
class LatexRootDocTransforms(SphinxTransform):
6485
"""Arrange the toctrees and sections in the required structure.
6586
@@ -113,11 +134,7 @@ def check_dependency(cls) -> bool:
113134
except ImportError:
114135
return False
115136
major, minor = __version__.split(".")[0:2]
116-
if major == "0" and minor in (
117-
"11",
118-
"12",
119-
"13",
120-
): # TODO: fetch this from pyproject.toml?
137+
if major == "0" and minor in ("15"): # TODO: fetch this from pyproject.toml?
121138
return True
122139
else:
123140
logger.warning(
@@ -127,16 +144,14 @@ def check_dependency(cls) -> bool:
127144
return False
128145

129146
def apply(self, **kwargs: Any) -> None:
130-
from myst_nb.nodes import CellInputNode, CellNode, CellOutputNode
131-
132-
for node in self.document.traverse(CellNode):
147+
for node in self.document.traverse(is_cell):
133148
if "tag_hide-cell" in node["classes"]:
134149
replace_node_cls(node, HiddenCellNode, True)
135150
if "tag_hide-input" in node["classes"]:
136-
for input_node in node.traverse(CellInputNode):
151+
for input_node in node.traverse(is_input_cell):
137152
replace_node_cls(input_node, HiddenCellNode, True)
138153
if "tag_hide-output" in node["classes"]:
139-
for output_node in node.traverse(CellOutputNode):
154+
for output_node in node.traverse(is_output_cell):
140155
replace_node_cls(output_node, HiddenCellNode, True)
141156

142157

@@ -425,14 +440,13 @@ class CodeBlockTransforms(SphinxPostTransform):
425440
def apply(self):
426441
if isinstance(self.env.app.builder, builders.latex.LaTeXBuilder):
427442
"""Wrapping myst_nb code cell nodes with nodes of this extension."""
428-
from myst_nb.nodes import CellInputNode, CellOutputNode
429443

430-
for node in self.document.traverse(CellOutputNode):
444+
for node in self.document.traverse(is_input_cell):
431445
celloutput = CellOutput()
432446
celloutput.append(node.deepcopy())
433447
node.replace_self(celloutput)
434448

435-
for node in self.document.traverse(CellInputNode):
449+
for node in self.document.traverse(is_output_cell):
436450
cellinput = CellInput()
437451
cellinput.append(node.deepcopy())
438452
node.replace_self(cellinput)

0 commit comments

Comments
 (0)