Closed
Description
See: MacPython/matplotlib-wheels#3
Errors occur testing 1.5.3 and current v2.x
branch on Python 3.6, OSX.
======================================================================
ERROR: matplotlib.tests.test_mathtext.test_mathtext_cm_53.test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/nose/case.py", line 198, in runTest
self.test(*self.arg)
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/matplotlib/testing/decorators.py", line 53, in failer
result = f(*args, **kwargs)
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/matplotlib/testing/decorators.py", line 207, in do_test
figure.savefig(actual_fname, **self._savefig_kwarg)
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/matplotlib/figure.py", line 1563, in savefig
[snip]
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/pyparsing.py", line 1510, in _parseCache
value = cache.get(lookup)
File "/Users/travis/build/MacPython/matplotlib-wheels/venv/lib/python3.6/site-packages/pyparsing.py", line 1459, in get
return cache.get(key, not_in_cache)
RecursionError: maximum recursion depth exceeded
https://s3.amazonaws.com/archive.travis-ci.org/jobs/187592465/log.txt
Further investigation reveals:
- error does not occur when running the individual mathtext tests, e.g. with
python tests.py matplotlib.tests.test_mathtext
, but only when running these tests as part of a full test suitepython tests.py
; - when dropping into the debugger on the test failure -
python tests.py --pdb
- this sequence of commands also cause the recursion error:
from matplotlib.font_manager import FontProperties
from matplotlib import mathtext as mt
my_p = mt.Parser()
backend = mt.MathtextBackendPath()
font_output = mt.BakomaFonts(FontProperties(), backend)
my_str = '$\\sqrt{1+\\sqrt{1+\\sqrt{1+\\sqrt{1+\\sqrt{1+\\sqrt{1+\\sqrt{1+x}}}}}}}$'
my_p._state_stack = [my_p.State(font_output, 'default', 'rm', 100, 72)]
my_p._em_width_cache = {}
result = my_p._expression.parseString(my_str)
print(result)
The same sequence of commands run on its own in Python 3.6, passes.
This string also generates the recursion errors, when dropped into the debugger:
r'$\cos{1 + \sqrt{1 + \sqrt{1 + \sqrt{1 + \sqrt{1 + \sqrt{1+\cos{1+x}}}}}}}$'
but not:
r'$\cos{1 + \sqrt{1 + \sqrt{1 + \sqrt{1 + \sqrt{1 + \cos{1+\cos{1+x}}}}}}}$'
r'$\cos{1 + \cos{1 + \cos{1 + \cos{1 + \cos{1 + \cos{1+\cos{1+x}}}}}}}$'
r'$\sqrt{1 + \sqrt{1 + \sqrt{1 + \sqrt{1 + \sqrt{1+\sqrt{1+x}}}}}}$'
It looks like there is some horrible global state in the MathText module or pyparsing that is being triggered only under certain circumstances.
@mdboom - can you reproduce? Any insights into the problem?
Metadata
Metadata
Assignees
Labels
No labels