From 660c6eb7f580d2fab09b5dfd56cfdface00db527 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 13 Jun 2022 18:37:02 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=A7=20MAINTAIN:=20Minor=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improve integration with myst-nb --- myst_parser/config/dc_validators.py | 22 ++++++++++++++++++++++ myst_parser/mdit_to_docutils/base.py | 2 +- myst_parser/sphinx_ext/myst_refs.py | 6 +----- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/myst_parser/config/dc_validators.py b/myst_parser/config/dc_validators.py index 765cfb93..d27e2063 100644 --- a/myst_parser/config/dc_validators.py +++ b/myst_parser/config/dc_validators.py @@ -159,3 +159,25 @@ def _validator(inst, field: dc.Field, value, suffix=""): value_validator(inst, field, value[key], suffix=f"{suffix}[{key!r}]") return _validator + + +def has_items(*validators) -> ValidatorType: + """ + A validator that performs validation per item of a sequence. + + :param validators: Validator to apply per item + """ + + def _validator(inst, field: dc.Field, value, suffix=""): + if not isinstance(value, Sequence): + raise TypeError(f"{suffix}{field.name} must be a sequence: {value}") + if len(value) != len(validators): + raise TypeError( + f"{suffix}{field.name!r} must be a sequence of length " + f"{len(validators)}: {value}" + ) + + for idx, (validator, member) in enumerate(zip(validators, value)): + validator(inst, field, member, suffix=f"{suffix}[{idx}]") + + return _validator diff --git a/myst_parser/mdit_to_docutils/base.py b/myst_parser/mdit_to_docutils/base.py index 49c3fd22..ab720484 100644 --- a/myst_parser/mdit_to_docutils/base.py +++ b/myst_parser/mdit_to_docutils/base.py @@ -381,7 +381,7 @@ def add_line_and_source_path_r( """ for node in nodes: self.add_line_and_source_path(node, token) - for child in node.traverse(): + for child in findall(node)(): self.add_line_and_source_path(child, token) def update_section_level_state(self, section: nodes.section, level: int) -> None: diff --git a/myst_parser/sphinx_ext/myst_refs.py b/myst_parser/sphinx_ext/myst_refs.py index 9ba223d6..f3643459 100644 --- a/myst_parser/sphinx_ext/myst_refs.py +++ b/myst_parser/sphinx_ext/myst_refs.py @@ -151,11 +151,7 @@ def resolve_myst_ref( except NotImplementedError: # the domain doesn't yet support the new interface # we have to manually collect possible references (SLOW) - if not ( - getattr(domain, "__module__", "").startswith("sphinx.") - # TODO glue can be removed when myst-nb fixed - or "glue" in getattr(domain, "__module__", "") - ): + if not (getattr(domain, "__module__", "").startswith("sphinx.")): logger.warning( f"Domain '{domain.__module__}::{domain.name}' has not " "implemented a `resolve_any_xref` method [myst.domains]", From b3b7d68608ff3be7207dcb9a4d59a1ae7b67d818 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Tue, 14 Jun 2022 10:24:50 +0200 Subject: [PATCH 2/2] Update dc_validators.py --- myst_parser/config/dc_validators.py | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/myst_parser/config/dc_validators.py b/myst_parser/config/dc_validators.py index d27e2063..765cfb93 100644 --- a/myst_parser/config/dc_validators.py +++ b/myst_parser/config/dc_validators.py @@ -159,25 +159,3 @@ def _validator(inst, field: dc.Field, value, suffix=""): value_validator(inst, field, value[key], suffix=f"{suffix}[{key!r}]") return _validator - - -def has_items(*validators) -> ValidatorType: - """ - A validator that performs validation per item of a sequence. - - :param validators: Validator to apply per item - """ - - def _validator(inst, field: dc.Field, value, suffix=""): - if not isinstance(value, Sequence): - raise TypeError(f"{suffix}{field.name} must be a sequence: {value}") - if len(value) != len(validators): - raise TypeError( - f"{suffix}{field.name!r} must be a sequence of length " - f"{len(validators)}: {value}" - ) - - for idx, (validator, member) in enumerate(zip(validators, value)): - validator(inst, field, member, suffix=f"{suffix}[{idx}]") - - return _validator