Skip to content

Doesn't like $$ #148

Description

@AstraLuma

From https://codeberg.org/teahouse/stampede

Versions
========

* Platform:         linux; (Linux-6.17.10-300.fc43.x86_64-x86_64-with-glibc2.42)
* Python version:   3.14.2 (CPython)
* Sphinx version:   9.1.0
* Docutils version: 0.22.4
* Jinja2 version:   3.1.6
* Pygments version: 2.19.2

Last Messages
=============

    Writing evaluated template result to /home/astraluma/code/stampede/docs/_build/html/_static/language_data.js
    Writing evaluated template result to /home/astraluma/code/stampede/docs/_build/html/_static/copybutton.js
    copying static files: done
    copying extra files...
    copying extra files: done
    copying assets: done

    writing output... [ 33%]
    api

Loaded Extensions
=================

* sphinx.ext.mathjax (9.1.0)
* alabaster (1.0.0)
* sphinxcontrib.applehelp (2.0.0)
* sphinxcontrib.devhelp (2.0.0)
* sphinxcontrib.htmlhelp (2.1.0)
* sphinxcontrib.serializinghtml (2.0.0)
* sphinxcontrib.qthelp (2.0.0)
* sphinxext.opengraph (0.13.0)
* sphinx_copybutton (0.5.2)
* sphinx.ext.viewcode (9.1.0)
* sphinx.ext.todo (9.1.0)
* furo (2025.12.19)
* sphinx_basic_ng (1.0.0.beta2)

Traceback
=========

    Traceback (most recent call last):
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/events.py", line 441, in emit
        results.append(listener.handler(self._app, *args))
                       ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinxext/opengraph/__init__.py", line 72, in html_page_context
        context['metatags'] += get_tags(
                               ~~~~~~~~^
            context,
            ^^^^^^^^
        ...<5 lines>...
            env=app.env,
            ^^^^^^^^^^^^
        )
        ^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinxext/opengraph/__init__.py", line 180, in get_tags
        image_url = social_card_for_page(
            config_social=config_social,
        ...<9 lines>...
            env=env,
        )
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinxext/opengraph/__init__.py", line 308, in social_card_for_page
        image_path = create_social_card(
            config_social,
        ...<8 lines>...
            html_logo=config.html_logo,
        )
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinxext/opengraph/_social_cards.py", line 135, in create_social_card
        plt_objects = render_social_card(
            path_image,
        ...<4 lines>...
            plt_objects,
        )
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinxext/opengraph/_social_cards.py", line 167, in render_social_card
        fig.savefig(path, facecolor=None)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/figure.py", line 3490, in savefig
        self.canvas.print_figure(fname, **kwargs)
        ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backend_bases.py", line 2186, in print_figure
        result = print_method(
            filename,
        ...<3 lines>...
            bbox_inches_restore=_bbox_inches_restore,
            **kwargs)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backend_bases.py", line 2042, in <lambda>
        print_method = functools.wraps(meth)(lambda *args, **kwargs: meth(
                                                                     ~~~~^
            *args, **{k: v for k, v in kwargs.items() if k not in skip}))
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backends/backend_agg.py", line 481, in print_png
        self._print_pil(filename_or_obj, "png", pil_kwargs, metadata)
        ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backends/backend_agg.py", line 429, in _print_pil
        FigureCanvasAgg.draw(self)
        ~~~~~~~~~~~~~~~~~~~~^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backends/backend_agg.py", line 382, in draw
        self.figure.draw(self.renderer)
        ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/artist.py", line 94, in draw_wrapper
        result = draw(artist, renderer, *args, **kwargs)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/artist.py", line 71, in draw_wrapper
        return draw(artist, renderer)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/figure.py", line 3257, in draw
        mimage._draw_list_compositing_images(
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            renderer, self, artists, self.suppressComposite)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/image.py", line 134, in _draw_list_compositing_images
        a.draw(renderer)
        ~~~~~~^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/artist.py", line 71, in draw_wrapper
        return draw(artist, renderer)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/axes/_base.py", line 3226, in draw
        mimage._draw_list_compositing_images(
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            renderer, self, artists, self.get_figure(root=True).suppressComposite)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/image.py", line 134, in _draw_list_compositing_images
        a.draw(renderer)
        ~~~~~~^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/artist.py", line 71, in draw_wrapper
        return draw(artist, renderer)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/text.py", line 751, in draw
        with self._cm_set(text=self._get_wrapped_text()):
                               ~~~~~~~~~~~~~~~~~~~~~~^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/text.py", line 721, in _get_wrapped_text
        current_width = self._get_rendered_text_width(line)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/text.py", line 681, in _get_rendered_text_width
        w, h, d = _get_text_metrics_with_cache(
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            self._renderer, text, self.get_fontproperties(),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            cbook.is_math_text(text),
            ^^^^^^^^^^^^^^^^^^^^^^^^^
            self.get_figure(root=True).dpi)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/text.py", line 69, in _get_text_metrics_with_cache
        return _get_text_metrics_with_cache_impl(
            weakref.ref(renderer), text, fontprop.copy(), ismath, dpi)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/text.py", line 77, in _get_text_metrics_with_cache_impl
        return renderer_ref().get_text_width_height_descent(text, fontprop, ismath)
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/backends/backend_agg.py", line 215, in get_text_width_height_descent
        self.mathtext_parser.parse(s, self.dpi, prop)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/mathtext.py", line 86, in parse
        return self._parse_cached(s, dpi, prop, antialiased, load_glyph_flags)
               ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/mathtext.py", line 100, in _parse_cached
        box = self._parser.parse(s, fontset, fontsize, dpi)
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib64/python3.14/site-packages/matplotlib/_mathtext.py", line 2167, in parse
        raise ValueError("\n" + ParseException.explain(err, 0)) from None
    ValueError: 
    The default export is helpful, and the suggested usage is import $$
                                                                     ^
    ParseException: Expected end of text, found '$'  (at char 65), (line:1, col:66)
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/cmd/build.py", line 432, in build_main
        app.build(args.force_all, args.filenames)
        ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/application.py", line 442, in build
        self.builder.build_update()
        ~~~~~~~~~~~~~~~~~~~~~~~~~^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 381, in build_update
        self.build(
        ~~~~~~~~~~^
            to_build,
            ^^^^^^^^^
        ...<2 lines>...
            method='update',
            ^^^^^^^^^^^^^^^^
        )
        ^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 460, in build
        self.write(docnames, updated_docnames, method)
        ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 748, in write
        self.write_documents(docnames)
        ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 762, in write_documents
        self._write_serial(sorted_docnames)
        ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 777, in _write_serial
        _write_docname(docname, env=self.env, builder=self, tags=self.tags)
        ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/__init__.py", line 890, in _write_docname
        builder.write_doc(docname, doctree)
        ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/html/__init__.py", line 665, in write_doc
        self.handle_page(docname, ctx, event_arg=doctree)
        ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/builders/html/__init__.py", line 1187, in handle_page
        if new_template := self.events.emit_firstresult(
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            'html-page-context', pagename, templatename, ctx, event_arg
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        ):
        ^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/events.py", line 482, in emit_firstresult
        for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
                      ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/astraluma/.cache/pypoetry/virtualenvs/non-package-mode-_-gRgf3P-py3.14/lib/python3.14/site-packages/sphinx/events.py", line 452, in emit
        raise ExtensionError(
        ...<3 lines>...
        ) from exc
    sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fc01e3337f0> for event 'html-page-context' threw an exception (exception: 
    The default export is helpful, and the suggested usage is import $$
                                                                     ^
    ParseException: Expected end of text, found '$'  (at char 65), (line:1, col:66))

I'm reasonably certain this is sphinxext.opengraph because if I disable the extension in conf.py, the error disappears.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions