Skip to content

Commit 2f77516

Browse files
committed
upgrade myst-parser dep to 1.0
1 parent 385c4a7 commit 2f77516

9 files changed

Lines changed: 34 additions & 61 deletions

File tree

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ repos:
4848
args: [--config-file=pyproject.toml]
4949
additional_dependencies:
5050
- importlib_metadata
51-
- myst-parser~=0.18.0
51+
- myst-parser~=1.0.0
5252
- "sphinx~=5.0"
5353
- nbclient
5454
- types-PyYAML

myst_nb/core/config.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def __post_init__(self):
130130
default_factory=dict,
131131
metadata={
132132
"help": "Custom formats for reading notebook; suffix -> reader",
133-
"docutils_exclude": True,
133+
"omit": ["docutils"],
134134
"sections": (Section.global_lvl, Section.read),
135135
},
136136
)
@@ -184,7 +184,7 @@ def __post_init__(self):
184184
"validator": deep_mapping(instance_of(str), instance_of(str)),
185185
"help": "Mapping of kernel name regex to replacement kernel name"
186186
"(applied before execution)",
187-
"docutils_exclude": True,
187+
"omit": ["docutils"],
188188
"sections": (Section.global_lvl, Section.execute),
189189
},
190190
)
@@ -220,7 +220,7 @@ def __post_init__(self):
220220
"validator": deep_iterable(instance_of(str)),
221221
"help": "Exclude (POSIX) glob patterns for notebooks",
222222
"legacy_name": "execution_excludepatterns",
223-
"docutils_exclude": True,
223+
"omit": ["docutils"],
224224
"sections": (Section.global_lvl, Section.execute),
225225
},
226226
)
@@ -387,7 +387,7 @@ def __post_init__(self):
387387
"help": "Overrides for the base render priority of mime types: "
388388
"list of (builder name, mime type, priority)",
389389
# TODO how to allow this in docutils?
390-
"docutils_exclude": True,
390+
"omit": ["docutils"],
391391
"sections": (Section.global_lvl, Section.file_lvl, Section.render),
392392
},
393393
repr=False,
@@ -454,7 +454,7 @@ def __post_init__(self):
454454
metadata={
455455
"validator": deep_mapping(instance_of(str), instance_of((str, int))),
456456
"help": "Options for image outputs (class|alt|height|width|scale|align)",
457-
"docutils_exclude": True,
457+
"omit": ["docutils"],
458458
# TODO backward-compatible change to "image_options"?
459459
"cell_key": "image",
460460
"sections": (
@@ -471,7 +471,7 @@ def __post_init__(self):
471471
metadata={
472472
"validator": deep_mapping(instance_of(str), instance_of((str, int))),
473473
"help": "Options for figure outputs (classes|name|caption|caption_before)",
474-
"docutils_exclude": True,
474+
"omit": ["docutils"],
475475
"cell_key": "figure",
476476
"sections": (
477477
Section.global_lvl,
@@ -505,7 +505,7 @@ def __post_init__(self):
505505
instance_of(str), deep_mapping(instance_of(str), instance_of(str))
506506
),
507507
"help": "Javascript to be loaded on pages containing ipywidgets",
508-
"docutils_exclude": True,
508+
"omit": ["docutils"],
509509
"sections": (Section.global_lvl, Section.render),
510510
},
511511
repr=False,

myst_nb/core/read.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ def _flush_markdown(start_line, token, md_metadata):
242242
md_metadata: dict = {}
243243

244244
for token in tokens:
245-
246245
nesting_level += token.nesting
247246

248247
if nesting_level != 0:
@@ -313,25 +312,22 @@ class _MockDirective:
313312

314313

315314
def _read_fenced_cell(token, cell_index, cell_type):
316-
from myst_parser.parsers.directives import (
317-
DirectiveParsingError,
318-
parse_directive_text,
319-
)
315+
from myst_parser.parsers.directives import parse_directive_text
320316

321-
try:
322-
_, options, body_lines, _ = parse_directive_text(
323-
directive_class=_MockDirective,
324-
first_line="",
325-
content=token.content,
326-
validate_options=False,
327-
)
328-
except DirectiveParsingError as err:
317+
result = parse_directive_text(
318+
directive_class=_MockDirective,
319+
first_line="",
320+
content=token.content,
321+
validate_options=False,
322+
)
323+
if result.warnings:
329324
raise MystMetadataParsingError(
330325
"{} cell {} at line {} could not be read: {}".format(
331-
cell_type, cell_index, token.map[0] + 1, err
326+
cell_type, cell_index, token.map[0] + 1, result.warnings[0]
332327
)
333328
)
334-
return options, body_lines
329+
330+
return result.options, result.body
335331

336332

337333
def _read_cell_metadata(token, cell_index):

myst_nb/core/render.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ def render_nb_cell_code(self: SelfType, token: SyntaxTreeNode) -> None:
192192

193193
self.add_line_and_source_path(cell_container, token)
194194
with self.current_node_context(cell_container, append=True):
195-
196195
# render the code source code
197196
if not remove_input:
198197
cell_input = nodes.container(
@@ -311,11 +310,6 @@ class MimeData:
311310
"""Index of the output in the cell"""
312311
line: int | None = None
313312
"""Source line of the cell"""
314-
md_headings: bool = False
315-
"""Whether to render headings in text/markdown blocks."""
316-
# we can only do this if know the content will be rendered into the main body
317-
# of the document, e.g. not inside a container node
318-
# (otherwise it will break the structure of the AST)
319313

320314
@property
321315
def string(self) -> str:
@@ -599,9 +593,7 @@ def render_markdown(self, data: MimeData) -> list[nodes.Element]:
599593
fmt = self.renderer.get_cell_level_config(
600594
"render_markdown_format", data.cell_metadata, line=data.line
601595
)
602-
return self._render_markdown_base(
603-
data, fmt=fmt, inline=False, allow_headings=data.md_headings
604-
)
596+
return self._render_markdown_base(data, fmt=fmt, inline=False)
605597

606598
def render_text_plain(self, data: MimeData) -> list[nodes.Element]:
607599
"""Render a notebook text/plain mime data output."""
@@ -754,9 +746,7 @@ def render_markdown_inline(self, data: MimeData) -> list[nodes.Element]:
754746
fmt = self.renderer.get_cell_level_config(
755747
"render_markdown_format", data.cell_metadata, line=data.line
756748
)
757-
return self._render_markdown_base(
758-
data, fmt=fmt, inline=True, allow_headings=data.md_headings
759-
)
749+
return self._render_markdown_base(data, fmt=fmt, inline=True)
760750

761751
def render_text_plain_inline(self, data: MimeData) -> list[nodes.Element]:
762752
"""Render a notebook text/plain mime data output."""
@@ -797,7 +787,7 @@ def render_widget_view_inline(self, data: MimeData) -> list[nodes.Element]:
797787
return self.render_widget_view(data)
798788

799789
def _render_markdown_base(
800-
self, data: MimeData, *, fmt: str, inline: bool, allow_headings: bool
790+
self, data: MimeData, *, fmt: str, inline: bool
801791
) -> list[nodes.Element]:
802792
"""Base render for a notebook markdown mime output (block or inline)."""
803793
psuedo_element = nodes.Element() # element to hold the parsed markdown
@@ -833,7 +823,6 @@ def _render_markdown_base(
833823
data.string,
834824
data.line or 0,
835825
inline=inline,
836-
allow_headings=allow_headings,
837826
)
838827
finally:
839828
# restore the parser

myst_nb/docutils_.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
create_warning,
2020
token_line,
2121
)
22-
from myst_parser.parsers.docutils_ import (
23-
DOCUTILS_EXCLUDED_ARGS as DOCUTILS_EXCLUDED_ARGS_MYST,
24-
)
2522
from myst_parser.parsers.docutils_ import Parser as MystParser
2623
from myst_parser.parsers.docutils_ import create_myst_config, create_myst_settings_spec
2724
from myst_parser.parsers.mdit import create_md_parser
@@ -81,7 +78,7 @@ class Parser(MystParser):
8178
settings_spec = (
8279
"MyST-NB options",
8380
None,
84-
create_myst_settings_spec(DOCUTILS_EXCLUDED_ARGS, NbParserConfig, "nb_"),
81+
create_myst_settings_spec(NbParserConfig, "nb_"),
8582
*MystParser.settings_spec,
8683
)
8784
"""Runtime settings specification."""
@@ -116,18 +113,14 @@ def _parse(self, inputstring: str, document: nodes.document) -> None:
116113

117114
# get markdown parsing configuration
118115
try:
119-
md_config = create_myst_config(
120-
document.settings, DOCUTILS_EXCLUDED_ARGS_MYST
121-
)
116+
md_config = create_myst_config(document.settings)
122117
except (TypeError, ValueError) as error:
123118
logger.error(f"myst configuration invalid: {error.args[0]}")
124119
md_config = MdParserConfig()
125120

126121
# get notebook rendering configuration
127122
try:
128-
nb_config = create_myst_config(
129-
document.settings, DOCUTILS_EXCLUDED_ARGS, NbParserConfig, "nb_"
130-
)
123+
nb_config = create_myst_config(document.settings, NbParserConfig, "nb_")
131124
except (TypeError, ValueError) as error:
132125
logger.error(f"myst-nb configuration invalid: {error.args[0]}")
133126
nb_config = NbParserConfig()
@@ -301,7 +294,6 @@ def _render_nb_cell_code_outputs(
301294
self.add_line_and_source_path_r(_nodes, token)
302295
self.current_node.extend(_nodes)
303296
elif output.output_type in ("display_data", "execute_result"):
304-
305297
# Note, this is different to the sphinx implementation,
306298
# here we directly select a single output, based on the mime_priority,
307299
# as opposed to output all mime types, and select in a post-transform

myst_nb/ext/glue/directives.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ def run(self) -> List[nodes.Node]:
106106
},
107107
output_metadata=result.metadata,
108108
line=self.line,
109-
md_headings=True,
110109
)
111110
_nodes = result.nb_renderer.render_markdown(mime)
112111
self.set_source_info(_nodes)

myst_nb/sphinx_.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
from markdown_it.tree import SyntaxTreeNode
1414
from myst_parser.config.main import MdParserConfig, merge_file_level
1515
from myst_parser.mdit_to_docutils.base import token_line
16-
from myst_parser.mdit_to_docutils.sphinx_ import SphinxRenderer, create_warning
16+
from myst_parser.mdit_to_docutils.sphinx_ import SphinxRenderer
17+
from myst_parser.warnings_ import create_warning
1718
from myst_parser.parsers.mdit import create_md_parser
1819
from myst_parser.parsers.sphinx_ import MystParser
1920
import nbformat
@@ -262,7 +263,6 @@ def _render_nb_cell_code_outputs(
262263
self.add_line_and_source_path_r(_nodes, token)
263264
self.current_node.extend(_nodes)
264265
elif output.output_type in ("display_data", "execute_result"):
265-
266266
# Note, this is different to the docutils implementation,
267267
# where we directly select a single output, based on the mime_priority.
268268
# Here, we do not know the mime priority until we know the output format
@@ -504,9 +504,7 @@ class HideInputCells(SphinxPostTransform):
504504
formats = ("html",)
505505

506506
def run(self, **kwargs):
507-
508507
for node in findall(self.document)(nodes.container):
509-
510508
if (
511509
node.get("nb_element") == "cell_code"
512510
and node.get("hide_mode")

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies = [
3939
"ipython",
4040
"jupyter-cache~=0.5.0",
4141
"nbclient", # nbclient version pinned by jupyter-client
42-
"myst-parser~=0.18.0",
42+
"myst-parser~=1.0.0",
4343
"nbformat~=5.0",
4444
"pyyaml",
4545
"sphinx>=4,<6",
@@ -80,9 +80,9 @@ rtd = [
8080
"numpy",
8181
"pandas",
8282
"plotly",
83-
"sphinx-book-theme~=0.3.0",
83+
"sphinx-book-theme~=1.0.0",
8484
"sphinx-copybutton",
85-
"sphinx-design~=0.1.0",
85+
"sphinx-design~=0.3.0",
8686
"sphinxcontrib-bibtex",
8787
"sympy",
8888
]

tests/nb_fixtures/reporter_warnings.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ cells:
1010
source: |
1111
{unknown}`a`
1212
.
13-
<string>:20002: (ERROR/3) Unknown interpreted text role "unknown".
13+
<string>:20002: (WARNING/2) Unknown interpreted text role "unknown". [myst.role_unknown]
1414
.
1515

16-
1716
Unknown directive:
1817
.
1918
cells:
@@ -24,7 +23,7 @@ cells:
2423
```{xyz}
2524
```
2625
.
27-
<string>:10003: (ERROR/3) Unknown directive type "xyz".
26+
<string>:10003: (WARNING/2) Unknown directive type: 'xyz' [myst.directive_unknown]
2827
.
2928

3029
Directive parsing error:
@@ -66,5 +65,5 @@ cells:
6665

6766
[a]: c
6867
.
69-
<string>:20004: (WARNING/2) Duplicate reference definition: A [myst.ref]
70-
.
68+
<string>:20004: (WARNING/2) Duplicate reference definition: A [myst.duplicate_def]
69+
.

0 commit comments

Comments
 (0)