Skip to content

Commit a8d5f96

Browse files
committed
Bump minimum pyparsing version to 2.0.1, replace deprecated << with <<= and remove no longer relevant work around.
1 parent 1b3106c commit a8d5f96

File tree

2 files changed

+52
-74
lines changed

2 files changed

+52
-74
lines changed

lib/matplotlib/mathtext.py

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,7 @@
4040
ParseResults, Suppress, oneOf, StringEnd, ParseFatalException, \
4141
FollowedBy, Regex, ParserElement, QuotedString, ParseBaseException
4242

43-
# Enable packrat parsing
44-
if (sys.version_info[0] >= 3 and
45-
[int(x) for x in pyparsing.__version__.split('.')] < [2, 0, 0]):
46-
warn("Due to a bug in pyparsing <= 2.0.0 on Python 3.x, packrat parsing "
47-
"has been disabled. Mathtext rendering will be much slower as a "
48-
"result. Install pyparsing 2.0.0 or later to improve performance.")
49-
else:
50-
ParserElement.enablePackrat()
43+
ParserElement.enablePackrat()
5144

5245
from matplotlib.afm import AFM
5346
from matplotlib.cbook import Bunch, get_realpath_and_stat, \
@@ -2179,69 +2172,69 @@ def __init__(self):
21792172
if key != 'self':
21802173
val.setName(key)
21812174

2182-
float_literal << Regex(r"[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)")
2183-
int_literal << Regex("[-+]?[0-9]+")
2175+
float_literal <<= Regex(r"[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)")
2176+
int_literal <<= Regex("[-+]?[0-9]+")
21842177

2185-
lbrace << Literal('{').suppress()
2186-
rbrace << Literal('}').suppress()
2187-
lbracket << Literal('[').suppress()
2188-
rbracket << Literal(']').suppress()
2189-
bslash << Literal('\\')
2178+
lbrace <<= Literal('{').suppress()
2179+
rbrace <<= Literal('}').suppress()
2180+
lbracket <<= Literal('[').suppress()
2181+
rbracket <<= Literal(']').suppress()
2182+
bslash <<= Literal('\\')
21902183

2191-
space << oneOf(self._space_widths.keys())
2192-
customspace << (Suppress(Literal(r'\hspace'))
2184+
space <<= oneOf(self._space_widths.keys())
2185+
customspace <<= (Suppress(Literal(r'\hspace'))
21932186
- ((lbrace + float_literal + rbrace)
21942187
| Error(r"Expected \hspace{n}")))
21952188

21962189
unicode_range = u"\U00000080-\U0001ffff"
2197-
single_symbol << Regex(UR"([a-zA-Z0-9 +\-*/<>=:,.;!\?&'@()\[\]|%s])|(\\[%%${}\[\]_|])" %
2190+
single_symbol <<= Regex(UR"([a-zA-Z0-9 +\-*/<>=:,.;!\?&'@()\[\]|%s])|(\\[%%${}\[\]_|])" %
21982191
unicode_range)
2199-
symbol_name << (Combine(bslash + oneOf(tex2uni.keys())) +
2192+
symbol_name <<= (Combine(bslash + oneOf(tex2uni.keys())) +
22002193
FollowedBy(Regex("[^A-Za-z]").leaveWhitespace() | StringEnd()))
2201-
symbol << (single_symbol | symbol_name).leaveWhitespace()
2194+
symbol <<= (single_symbol | symbol_name).leaveWhitespace()
22022195

2203-
apostrophe << Regex("'+")
2196+
apostrophe <<= Regex("'+")
22042197

2205-
c_over_c << Suppress(bslash) + oneOf(self._char_over_chars.keys())
2198+
c_over_c <<= Suppress(bslash) + oneOf(self._char_over_chars.keys())
22062199

2207-
accent << Group(
2200+
accent <<= Group(
22082201
Suppress(bslash)
22092202
+ oneOf(self._accent_map.keys() + list(self._wide_accents))
22102203
- placeable
22112204
)
22122205

2213-
function << Suppress(bslash) + oneOf(list(self._function_names))
2206+
function <<= Suppress(bslash) + oneOf(list(self._function_names))
22142207

2215-
start_group << Optional(latexfont) + lbrace
2216-
end_group << rbrace.copy()
2217-
simple_group << Group(lbrace + ZeroOrMore(token) + rbrace)
2218-
required_group<< Group(lbrace + OneOrMore(token) + rbrace)
2219-
group << Group(start_group + ZeroOrMore(token) + end_group)
2208+
start_group <<= Optional(latexfont) + lbrace
2209+
end_group <<= rbrace.copy()
2210+
simple_group <<= Group(lbrace + ZeroOrMore(token) + rbrace)
2211+
required_group<<= Group(lbrace + OneOrMore(token) + rbrace)
2212+
group <<= Group(start_group + ZeroOrMore(token) + end_group)
22202213

2221-
font << Suppress(bslash) + oneOf(list(self._fontnames))
2222-
latexfont << Suppress(bslash) + oneOf(['math' + x for x in self._fontnames])
2214+
font <<= Suppress(bslash) + oneOf(list(self._fontnames))
2215+
latexfont <<= Suppress(bslash) + oneOf(['math' + x for x in self._fontnames])
22232216

2224-
frac << Group(
2217+
frac <<= Group(
22252218
Suppress(Literal(r"\frac"))
22262219
- ((required_group + required_group) | Error(r"Expected \frac{num}{den}"))
22272220
)
22282221

2229-
stackrel << Group(
2222+
stackrel <<= Group(
22302223
Suppress(Literal(r"\stackrel"))
22312224
- ((required_group + required_group) | Error(r"Expected \stackrel{num}{den}"))
22322225
)
22332226

2234-
binom << Group(
2227+
binom <<= Group(
22352228
Suppress(Literal(r"\binom"))
22362229
- ((required_group + required_group) | Error(r"Expected \binom{num}{den}"))
22372230
)
22382231

2239-
ambi_delim << oneOf(list(self._ambi_delim))
2240-
left_delim << oneOf(list(self._left_delim))
2241-
right_delim << oneOf(list(self._right_delim))
2242-
right_delim_safe << oneOf(list(self._right_delim - set(['}'])) + [r'\}'])
2232+
ambi_delim <<= oneOf(list(self._ambi_delim))
2233+
left_delim <<= oneOf(list(self._left_delim))
2234+
right_delim <<= oneOf(list(self._right_delim))
2235+
right_delim_safe <<= oneOf(list(self._right_delim - set(['}'])) + [r'\}'])
22432236

2244-
genfrac << Group(
2237+
genfrac <<= Group(
22452238
Suppress(Literal(r"\genfrac"))
22462239
- (((lbrace + Optional(ambi_delim | left_delim, default='') + rbrace)
22472240
+ (lbrace + Optional(ambi_delim | right_delim_safe, default='') + rbrace)
@@ -2250,27 +2243,27 @@ def __init__(self):
22502243
| Error(r"Expected \genfrac{ldelim}{rdelim}{rulesize}{style}{num}{den}"))
22512244
)
22522245

2253-
sqrt << Group(
2246+
sqrt <<= Group(
22542247
Suppress(Literal(r"\sqrt"))
22552248
- ((Optional(lbracket + int_literal + rbracket, default=None)
22562249
+ required_group)
22572250
| Error("Expected \sqrt{value}"))
22582251
)
22592252

2260-
overline << Group(
2253+
overline <<= Group(
22612254
Suppress(Literal(r"\overline"))
22622255
- (required_group | Error("Expected \overline{value}"))
22632256
)
22642257

2265-
unknown_symbol<< Combine(bslash + Regex("[A-Za-z]*"))
2258+
unknown_symbol<<= Combine(bslash + Regex("[A-Za-z]*"))
22662259

2267-
operatorname << Group(
2260+
operatorname <<= Group(
22682261
Suppress(Literal(r"\operatorname"))
22692262
- ((lbrace + ZeroOrMore(simple | unknown_symbol) + rbrace)
22702263
| Error("Expected \operatorname{value}"))
22712264
)
22722265

2273-
placeable << ( accent # Must be first
2266+
placeable <<= ( accent # Must be first
22742267
| symbol # Must be second
22752268
| c_over_c
22762269
| function
@@ -2284,39 +2277,39 @@ def __init__(self):
22842277
| operatorname
22852278
)
22862279

2287-
simple << ( space
2280+
simple <<= ( space
22882281
| customspace
22892282
| font
22902283
| subsuper
22912284
)
22922285

2293-
subsuperop << oneOf(["_", "^"])
2286+
subsuperop <<= oneOf(["_", "^"])
22942287

2295-
subsuper << Group(
2288+
subsuper <<= Group(
22962289
(Optional(placeable) + OneOrMore(subsuperop - placeable) + Optional(apostrophe))
22972290
| (placeable + Optional(apostrophe))
22982291
| apostrophe
22992292
)
23002293

2301-
token << ( simple
2294+
token <<= ( simple
23022295
| auto_delim
23032296
| unknown_symbol # Must be last
23042297
)
23052298

2306-
auto_delim << (Suppress(Literal(r"\left"))
2299+
auto_delim <<= (Suppress(Literal(r"\left"))
23072300
- ((left_delim | ambi_delim) | Error("Expected a delimiter"))
23082301
+ Group(ZeroOrMore(simple | auto_delim))
23092302
+ Suppress(Literal(r"\right"))
23102303
- ((right_delim | ambi_delim) | Error("Expected a delimiter"))
23112304
)
23122305

2313-
math << OneOrMore(token)
2306+
math <<= OneOrMore(token)
23142307

2315-
math_string << QuotedString('$', '\\', unquoteResults=False)
2308+
math_string <<= QuotedString('$', '\\', unquoteResults=False)
23162309

2317-
non_math << Regex(r"(?:(?:\\[$])|[^$])*").leaveWhitespace()
2310+
non_math <<= Regex(r"(?:(?:\\[$])|[^$])*").leaveWhitespace()
23182311

2319-
main << (non_math + ZeroOrMore(math_string + non_math)) + StringEnd()
2312+
main <<= (non_math + ZeroOrMore(math_string + non_math)) + StringEnd()
23202313

23212314
# Set actions
23222315
for key, val in locals().items():

setupext.py

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -971,30 +971,15 @@ def check(self):
971971
"support. pip/easy_install may attempt to install it "
972972
"after matplotlib.")
973973

974-
if sys.version_info[0] >= 3:
975-
required = [2, 0, 0]
976-
if [int(x) for x in pyparsing.__version__.split('.')] < required:
977-
return (
978-
"matplotlib requires pyparsing >= {0} on Python 3.x".format(
979-
'.'.join(str(x) for x in required)))
980-
else:
981-
required = [1, 5, 6]
982-
if [int(x) for x in pyparsing.__version__.split('.')] < required:
983-
return (
984-
"matplotlib requires pyparsing >= {0} on Python 2.x".format(
985-
'.'.join(str(x) for x in required)))
986-
if pyparsing.__version__ == "2.0.0":
987-
return (
988-
"pyparsing 2.0.0 is not compatible with Python 2.x")
989-
974+
required = [2, 0, 1]
975+
if [int(x) for x in pyparsing.__version__.split('.')] < required:
976+
return (
977+
"matplotlib requires pyparsing >= {0}".format(
978+
'.'.join(str(x) for x in required)))
990979
return "using pyparsing version %s" % pyparsing.__version__
991980

992981
def get_install_requires(self):
993-
if sys.version_info[0] >= 3:
994-
return ['pyparsing>=1.5.6']
995-
else:
996-
# pyparsing >= 2.0.0 is not compatible with Python 2
997-
return ['pyparsing>=1.5.6,!=2.0.0']
982+
return ['pyparsing>=2.0.1']
998983

999984

1000985
class BackendAgg(OptionalBackendPackage):

0 commit comments

Comments
 (0)