Skip to content

[Bug]: Doc build is broken #29802

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
timhoffm opened this issue Mar 25, 2025 · 3 comments
Closed

[Bug]: Doc build is broken #29802

timhoffm opened this issue Mar 25, 2025 · 3 comments

Comments

@timhoffm
Copy link
Member

timhoffm commented Mar 25, 2025

Bug summary

UserWarning: Could not render math expression \sum_{\substack{1\leq i\leq 3\\ 1\leq j\leq 5}}

e.g. in #29801.

I suspect this may be a bug in pyparsing 3.2.2, which was released today. Ping @ptmcg

Code for reproduction

I've not yet created a minimal example from the docs, but can do so if additional insight is needed.

Actual outcome

    Traceback (most recent call last):
      File "/home/circleci/project/lib/matplotlib/sphinxext/mathmpl.py", line 134, in latex2png
        depth = mathtext.math_to_image(
                ^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/mathtext.py", line 134, in math_to_image
        width, height, depth, _, _ = parser.parse(s, dpi=72, prop=prop)
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/mathtext.py", line 86, in parse
        return self._parse_cached(s, dpi, prop, antialiased, load_glyph_flags)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/mathtext.py", line 100, in _parse_cached
        box = self._parser.parse(s, fontset, fontsize, dpi)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/_mathtext.py", line 2170, in parse
        result = self._expression.parseString(s)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/util.py", line 417, in _inner
        return fn(self, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 1207, in parse_string
        loc, tokens = self._parse(instring, 0)
                      ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4197, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5232, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5131, in parseImpl
        loc, tokens = self_expr_parse(instring, loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4175, in parseImpl
        loc, resultlist = self.exprs[0]._parse(
                          ^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 892, in _parseNoCache
        tokens = fn(instring, tokens_start, ret_tokens)  # type: ignore [call-arg, arg-type]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 280, in wrapper
        return func(*args[limit:])
               ^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/_mathtext.py", line 2197, in math_string
        return self._math_expression.parseString(toks[0][1:-1], parseAll=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/util.py", line 417, in _inner
        return fn(self, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 1207, in parse_string
        loc, tokens = self._parse(instring, 0)
                      ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5131, in parseImpl
        loc, tokens = self_expr_parse(instring, loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5666, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4197, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5131, in parseImpl
        loc, tokens = self_expr_parse(instring, loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4186, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5666, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4197, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5232, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5131, in parseImpl
        loc, tokens = self_expr_parse(instring, loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5666, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4175, in parseImpl
        loc, resultlist = self.exprs[0]._parse(
                          ^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5366, in parseImpl
        loc, tokens = self_expr._parse(
                      ^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5666, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4186, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5666, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4703, in parseImpl
        return self.expr._parse(instring, loc, do_actions, callPreParse=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4197, in parseImpl
        loc, exprtokens = e._parse(instring, loc, do_actions)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5232, in parseImpl
        return super().parseImpl(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 5131, in parseImpl
        loc, tokens = self_expr_parse(instring, loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 853, in _parseNoCache
        loc, tokens = self.parseImpl(instring, pre_loc, do_actions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 4431, in parseImpl
        return e._parse(instring, loc, do_actions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 991, in _parseCache
        value = self._parseNoCache(instring, loc, do_actions, callPreParse)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 892, in _parseNoCache
        tokens = fn(instring, tokens_start, ret_tokens)  # type: ignore [call-arg, arg-type]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/core.py", line 283, in wrapper
        ret = func(*args[limit:])
              ^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/pyparsing/helpers.py", line 549, in <lambda>
        lambda t: t[0].strip(ParserElement.DEFAULT_WHITE_CHARS)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    TypeError: 'str' object is not callable
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/circleci/.local/lib/python3.12/site-packages/sphinx/util/parallel.py", line 83, in _process
        ret = func(arg)  # type: ignore[call-arg]
              ^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 774, in write_process
        self.write_doc(docname, doctree)
      File "/home/circleci/.local/lib/python3.12/site-packages/sphinx/builders/html/__init__.py", line 670, in write_doc
        self.docwriter.write(doctree, destination)
      File "/home/circleci/.local/lib/python3.12/site-packages/docutils/writers/__init__.py", line 80, in write
        self.translate()
      File "/home/circleci/.local/lib/python3.12/site-packages/sphinx/writers/html.py", line 36, in translate
        self.document.walkabout(visitor)
      File "/home/circleci/.local/lib/python3.12/site-packages/docutils/nodes.py", line 186, in walkabout
        if child.walkabout(visitor):
           ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/docutils/nodes.py", line 186, in walkabout
        if child.walkabout(visitor):
           ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/.local/lib/python3.12/site-packages/docutils/nodes.py", line 186, in walkabout
        if child.walkabout(visitor):
           ^^^^^^^^^^^^^^^^^^^^^^^^
      [Previous line repeated 1 more time]
      File "/home/circleci/.local/lib/python3.12/site-packages/docutils/nodes.py", line 178, in walkabout
        visitor.dispatch_visit(self)
      File "/home/circleci/.local/lib/python3.12/site-packages/sphinx/util/docutils.py", line 767, in dispatch_visit
        method(node)
      File "/home/circleci/project/lib/matplotlib/sphinxext/mathmpl.py", line 214, in visit_latex_math_html
        self.body.append(latex2html(node, source))
                         ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/sphinxext/mathmpl.py", line 158, in latex2html
        depth = latex2png(latex, dest, fontset, fontsize=fontsize)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/circleci/project/lib/matplotlib/sphinxext/mathmpl.py", line 137, in latex2png
        _api.warn_external(f"Could not render math expression {latex}")
      File "/home/circleci/project/lib/matplotlib/_api/__init__.py", line 391, in warn_external
        warnings.warn(message, category, **kwargs)
    UserWarning: Could not render math expression \sum_{\substack{1\leq i\leq 3\\ 1\leq j\leq 5}}

Expected outcome

No error.

Additional information

No response

Operating system

No response

Matplotlib Version

main

Matplotlib Backend

No response

Python version

No response

Jupyter version

No response

Installation

None

@QuLogic
Copy link
Member

QuLogic commented Mar 25, 2025

This affects all CI, not just docs: pyparsing/pyparsing#600

@ptmcg
Copy link

ptmcg commented Mar 25, 2025

Just pushed pyparsing version 3.2.3 to pypi with fix to pyparsing/pyparsing#600.

Please verify that this has fixed your issue.

@QuLogic
Copy link
Member

QuLogic commented Mar 25, 2025

Everything is good now.

@QuLogic QuLogic closed this as completed Mar 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants