From cf26dea69897eed9e3556fcbc6f74870345507b5 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:07:21 +0000 Subject: [PATCH 1/2] Improve generation of meta nodes --- myst_parser/mdit_to_docutils/base.py | 13 ++----- .../fixtures/docutil_syntax_elements.md | 36 +++---------------- .../fixtures/sphinx_syntax_elements.md | 36 +++---------------- 3 files changed, 11 insertions(+), 74 deletions(-) diff --git a/myst_parser/mdit_to_docutils/base.py b/myst_parser/mdit_to_docutils/base.py index a17b423c..85d64be3 100644 --- a/myst_parser/mdit_to_docutils/base.py +++ b/myst_parser/mdit_to_docutils/base.py @@ -28,7 +28,6 @@ from docutils.parsers.rst.directives.misc import Include from docutils.parsers.rst.languages import get_language as get_language_rst from docutils.statemachine import StringList -from docutils.transforms.components import Filter from docutils.utils import Reporter, SystemMessage, new_document from docutils.utils.code_analyzer import Lexer, LexerError, NumberLines from markdown_it import MarkdownIt @@ -1883,7 +1882,7 @@ def render_substitution(self, token: SyntaxTreeNode, inline: bool) -> None: def html_meta_to_nodes( data: dict[str, Any], document: nodes.document, line: int, reporter: Reporter -) -> list[nodes.pending | nodes.system_message]: +) -> list[nodes.meta | nodes.system_message]: """Replicate the `meta` directive, by converting a dictionary to a list of pending meta nodes @@ -1917,14 +1916,8 @@ def html_meta_to_nodes( except ValueError as error: msg = reporter.error(f'Error parsing meta tag attribute "{key}": {error}.') output.append(msg) - continue - - pending = nodes.pending( - Filter, - {"component": "writer", "format": "html", "nodes": [meta_node]}, - ) - document.note_pending(pending) - output.append(pending) + else: + output.append(meta_node) return output diff --git a/tests/test_renderers/fixtures/docutil_syntax_elements.md b/tests/test_renderers/fixtures/docutil_syntax_elements.md index 67668bf3..8c323b52 100644 --- a/tests/test_renderers/fixtures/docutil_syntax_elements.md +++ b/tests/test_renderers/fixtures/docutil_syntax_elements.md @@ -672,38 +672,10 @@ myst: --- . - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - + + + + . Full Test: diff --git a/tests/test_renderers/fixtures/sphinx_syntax_elements.md b/tests/test_renderers/fixtures/sphinx_syntax_elements.md index 1f6e1fcb..eb40fc6f 100644 --- a/tests/test_renderers/fixtures/sphinx_syntax_elements.md +++ b/tests/test_renderers/fixtures/sphinx_syntax_elements.md @@ -674,38 +674,10 @@ myst: --- . - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - - - .. internal attributes: - .transform: docutils.transforms.components.Filter - .details: - component: 'writer' - format: 'html' - nodes: - + + + + . Full Test: From e9121017802de20096e584d5d84c41663e61cb00 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Wed, 14 Jan 2026 17:09:26 +0100 Subject: [PATCH 2/2] CJS: Add test for non-html builder --- tests/test_sphinx/test_sphinx_builds.py | 29 +++++++++ .../test_extended_syntaxes_text.txt | 63 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tests/test_sphinx/test_sphinx_builds/test_extended_syntaxes_text.txt diff --git a/tests/test_sphinx/test_sphinx_builds.py b/tests/test_sphinx/test_sphinx_builds.py index 1d01eaee..c0b4f186 100644 --- a/tests/test_sphinx/test_sphinx_builds.py +++ b/tests/test_sphinx/test_sphinx_builds.py @@ -242,6 +242,35 @@ def test_extended_syntaxes( ) +@pytest.mark.sphinx( + buildername="text", + srcdir=os.path.join(SOURCE_DIR, "extended_syntaxes"), + freshenv=True, +) +def test_extended_syntaxes_text( + app, + status, + warning, + get_sphinx_app_output, + monkeypatch, + file_regression, +): + """test setting addition configuration values.""" + from myst_parser.mdit_to_docutils.sphinx_ import SphinxRenderer + + monkeypatch.setattr(SphinxRenderer, "_random_label", lambda self: "mock-uuid") + app.build() + assert "build succeeded" in status.getvalue() # Build succeeded + warnings = warning.getvalue().strip() + assert warnings == "" + content = get_sphinx_app_output( + app, + buildername="text", + filename="index.txt", + ) + file_regression.check(content) + + @pytest.mark.sphinx( buildername="html", srcdir=os.path.join(SOURCE_DIR, "includes"), freshenv=True ) diff --git a/tests/test_sphinx/test_sphinx_builds/test_extended_syntaxes_text.txt b/tests/test_sphinx/test_sphinx_builds/test_extended_syntaxes_text.txt new file mode 100644 index 00000000..63cc2918 --- /dev/null +++ b/tests/test_sphinx/test_sphinx_builds/test_extended_syntaxes_text.txt @@ -0,0 +1,63 @@ +Test +**** + +*disabled* + +a=1 + + x=5 + + x=5 + +$ a=1 $ + +a + + c=3 + + b + + \begin{equation} b=2 \end{equation} + + c=3 d=4 + +Term **1** + Definition *1* + + second paragraph + +Term 2 + Definition 2a + + Definition 2b + +Term 3 + code block + + quote + + other + +term + definition + +other term + other definition + +*other term* + + [image: fun-fish][image]This is a caption in **Markdown** + + [image: fishy][image]This is a caption in **Markdown** + +Hallo *there* + +linkify URL: www.example.com + +* hallo + +* there + +Numbered code block: + + type Result = "pass" | "fail"