Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8014599

Browse files
anntzerchahak13
authored andcommitted
Simplify/add pyparsing error messages on mathtext/fontconfig errors.
`ParseBaseException.explain(0)` sets up the same "line and caret and error message" as we previously did manually in _mathtext. It requires pyparsing 3.0.0 (2021), which is now permissible. Also use the same detailed explanation on fontconfig pattern parse failures. Also suppress expression chaining in these cases, as the explain() string already contains everything relevant.
1 parent 9d12a26 commit 8014599

File tree

7 files changed

+18
-18
lines changed

7 files changed

+18
-18
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pyparsing>=2.3.1 is now required
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

doc/devel/dependencies.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ reference.
2424
* `NumPy <https://numpy.org>`_ (>= 1.19)
2525
* `packaging <https://pypi.org/project/packaging/>`_ (>= 20.0)
2626
* `Pillow <https://pillow.readthedocs.io/en/latest/>`_ (>= 6.2)
27-
* `pyparsing <https://pypi.org/project/pyparsing/>`_ (>= 2.2.1)
27+
* `pyparsing <https://pypi.org/project/pyparsing/>`_ (>= 2.3.1)
2828
* `setuptools <https://setuptools.readthedocs.io/en/latest/>`_
2929

3030

lib/matplotlib/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def _check_versions():
203203
("dateutil", "2.7"),
204204
("kiwisolver", "1.0.1"),
205205
("numpy", "1.19"),
206-
("pyparsing", "2.2.1"),
206+
("pyparsing", "2.3.1"),
207207
]:
208208
module = importlib.import_module(modname)
209209
if parse_version(module.__version__) < parse_version(minver):

lib/matplotlib/_fontconfig_pattern.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111

1212
from functools import lru_cache
1313
import re
14+
1415
import numpy as np
15-
from pyparsing import (Literal, ZeroOrMore, Optional, Regex, StringEnd,
16-
ParseException, Suppress)
16+
from pyparsing import (
17+
Literal, Optional, ParseException, Regex, StringEnd, Suppress, ZeroOrMore,
18+
)
1719

1820
family_punc = r'\\\-:,'
1921
family_unescape = re.compile(r'\\([%s])' % family_punc).sub
@@ -125,14 +127,11 @@ def parse(self, pattern):
125127
props = self._properties = {}
126128
try:
127129
self._parser.parseString(pattern)
128-
except self.ParseException as e:
129-
raise ValueError(
130-
"Could not parse font string: '%s'\n%s" % (pattern, e)) from e
131-
130+
except ParseException as err:
131+
# explain becomes a plain method on pyparsing 3 (err.explain(0)).
132+
raise ValueError("\n" + ParseException.explain(err, 0)) from None
132133
self._properties = None
133-
134134
self._parser.resetCache()
135-
136135
return props
137136

138137
def _family(self, s, loc, tokens):

lib/matplotlib/_mathtext.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
import numpy as np
1616
from pyparsing import (
1717
Empty, Forward, Literal, NotAny, oneOf, OneOrMore, Optional,
18-
ParseBaseException, ParseExpression, ParseFatalException, ParserElement,
19-
ParseResults, QuotedString, Regex, StringEnd, ZeroOrMore, pyparsing_common)
18+
ParseBaseException, ParseException, ParseExpression, ParseFatalException,
19+
ParserElement, ParseResults, QuotedString, Regex, StringEnd, ZeroOrMore,
20+
pyparsing_common)
2021

2122
import matplotlib as mpl
2223
from . import _api, cbook
@@ -1990,10 +1991,8 @@ def parse(self, s, fonts_object, fontsize, dpi):
19901991
try:
19911992
result = self._expression.parseString(s)
19921993
except ParseBaseException as err:
1993-
raise ValueError("\n".join(["",
1994-
err.line,
1995-
" " * (err.column - 1) + "^",
1996-
str(err)])) from err
1994+
# explain becomes a plain method on pyparsing 3 (err.explain(0)).
1995+
raise ValueError("\n" + ParseException.explain(err, 0)) from None
19971996
self._state_stack = None
19981997
self._in_subscript_or_superscript = False
19991998
# prevent operator spacing from leaking into a new expression

requirements/testing/minver.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ kiwisolver==1.0.1
66
numpy==1.19.0
77
packaging==20.0
88
pillow==6.2.1
9-
pyparsing==2.2.1
9+
pyparsing==2.3.1
1010
python-dateutil==2.7
1111
fonttools==4.22.0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def make_release_tree(self, base_dir, files):
318318
"numpy>=1.19",
319319
"packaging>=20.0",
320320
"pillow>=6.2.0",
321-
"pyparsing>=2.2.1",
321+
"pyparsing>=2.3.1",
322322
"python-dateutil>=2.7",
323323
] + (
324324
# Installing from a git checkout that is not producing a wheel.

0 commit comments

Comments
 (0)