From 6f47e3ec2b213421ddba37307fe583b0adca66ad Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 May 2016 23:11:44 -0400 Subject: [PATCH 1/5] FIX: do not allow CN color spec in prop_cycle This could create an infinite loop on mapping to rgb. --- lib/matplotlib/rcsetup.py | 25 +++++++++++++++++++++++-- lib/matplotlib/tests/test_rcparams.py | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 8b4e23547393..500d9d486ff3 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -29,11 +29,12 @@ import collections as abc from matplotlib.fontconfig_pattern import parse_fontconfig_pattern from matplotlib.colors import is_color_like +import re # Don't let the original cycler collide with our validating cycler from cycler import Cycler, cycler as ccycler -#interactive_bk = ['gtk', 'gtkagg', 'gtkcairo', 'qt4agg', +# interactive_bk = ['gtk', 'gtkagg', 'gtkcairo', 'qt4agg', # 'tkagg', 'wx', 'wxagg', 'cocoaagg', 'webagg'] # The capitalized forms are needed for ipython at present; this may # change for later versions. @@ -340,6 +341,22 @@ def validate_color_or_auto(s): return validate_color(s) +def validate_color_for_prop_cycle(s): + # Special-case the N-th color cycle syntax, this obviously can not + # go in the color cycle. + if isinstance(s, bytes): + match = re.match(b'^C[0-9]$', s) + if match is not None: + raise ValueError('Can not put cycle reference ({cn!r}) in ' + 'prop_cycler'.format(cn=s)) + elif isinstance(s, six.text_type): + match = re.match('^C[0-9]$', s) + if match is not None: + raise ValueError('Can not put cycle reference ({cn!r}) in ' + 'prop_cycler'.format(cn=s)) + return validate_color(s) + + def validate_color(s): 'return a valid color arg' try: @@ -661,7 +678,8 @@ def validate_hatch(s): _prop_validators = { - 'color': validate_colorlist, + 'color': _listify_validator(validate_color_for_prop_cycle, + allow_stringlist=True), 'linewidth': validate_floatlist, 'linestyle': validate_stringlist, 'facecolor': validate_colorlist, @@ -818,6 +836,9 @@ def validate_cycler(s): norm_prop = _prop_aliases.get(prop, prop) cycler_inst.change_key(prop, norm_prop) + for key, vals in cycler_inst.by_key().items(): + _prop_validators[key](vals) + return cycler_inst diff --git a/lib/matplotlib/tests/test_rcparams.py b/lib/matplotlib/tests/test_rcparams.py index b7a965062a31..1d5994d9f7e2 100644 --- a/lib/matplotlib/tests/test_rcparams.py +++ b/lib/matplotlib/tests/test_rcparams.py @@ -348,6 +348,7 @@ def test_validators(): ('cycler(c=[1, 2, 3])', ValueError), # invalid values ("cycler(lw=['a', 'b', 'c'])", ValueError), # invalid values (cycler('waka', [1, 3, 5]), ValueError), # not a property + (cycler('color', ['C1', 'r', 'g']), ValueError) # no CN ) }, {'validator': validate_hatch, @@ -417,6 +418,5 @@ def test_rcparams_reset_after_fail(): assert mpl.rcParams['text.usetex'] is False - if __name__ == '__main__': nose.runmodule(argv=['-s', '--with-doctest'], exit=False) From 6db04da9abce975b1c452be23acdf56c00bf0dba Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 May 2016 23:19:20 -0400 Subject: [PATCH 2/5] FIX: do not directly cache 'CN' color values --- lib/matplotlib/colors.py | 12 +++++++----- lib/matplotlib/tests/test_colors.py | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 2cc84c0475af..b40ad57575cc 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -54,11 +54,11 @@ """ from __future__ import (absolute_import, division, print_function, unicode_literals) - +import re from matplotlib.externals import six from matplotlib.externals.six.moves import zip import warnings -import re + import numpy as np from numpy import ma import matplotlib.cbook as cbook @@ -194,7 +194,6 @@ def to_rgb(self, arg): raise ValueError( 'to_rgb: arg "%s" is unhashable even inside a tuple' % (str(arg),)) - try: if cbook.is_string_like(arg): argl = arg.lower() @@ -202,6 +201,10 @@ def to_rgb(self, arg): if color is None: try: argl = self._parse_nth_color(arg) + # in this case we do not want to cache in case + # the rcparam changes, recurse with the actual color + # value + return self.to_rgb(argl) except ValueError: pass for cmapping in self.CN_LOOKUPS: @@ -215,7 +218,7 @@ def to_rgb(self, arg): if fl < 0 or fl > 1: raise ValueError( 'gray (string) must be in range 0-1') - color = (fl,)*3 + color = (fl,) * 3 elif cbook.iterable(arg): if len(arg) > 4 or len(arg) < 3: raise ValueError( @@ -228,7 +231,6 @@ def to_rgb(self, arg): else: raise ValueError( 'cannot convert argument to rgb sequence') - self.cache[arg] = color except (KeyError, ValueError, TypeError) as exc: diff --git a/lib/matplotlib/tests/test_colors.py b/lib/matplotlib/tests/test_colors.py index 44a818d76e4b..085d4d476e7d 100644 --- a/lib/matplotlib/tests/test_colors.py +++ b/lib/matplotlib/tests/test_colors.py @@ -17,6 +17,8 @@ from numpy.testing.utils import assert_array_equal, assert_array_almost_equal from nose.plugins.skip import SkipTest +from cycler import cycler +import matplotlib import matplotlib.colors as mcolors import matplotlib.cm as cm import matplotlib.cbook as cbook @@ -596,6 +598,23 @@ def test_pandas_iterable(): assert_sequence_equal(cm1.colors, cm2.colors) +@cleanup +def test_cn(): + matplotlib.rcParams['axes.prop_cycle'] = cycler('color', + ['blue', 'r']) + x11_blue = mcolors.rgb2hex(mcolors.colorConverter.to_rgb('C0')) + assert x11_blue == '#0000ff' + red = mcolors.rgb2hex(mcolors.colorConverter.to_rgb('C1')) + assert red == '#ff0000' + + matplotlib.rcParams['axes.prop_cycle'] = cycler('color', + ['XKCDblue', 'r']) + XKCD_blue = mcolors.rgb2hex(mcolors.colorConverter.to_rgb('C0')) + assert XKCD_blue == '#0343df' + red = mcolors.rgb2hex(mcolors.colorConverter.to_rgb('C1')) + assert red == '#ff0000' + + if __name__ == '__main__': import nose nose.runmodule(argv=['-s', '--with-doctest'], exit=False) From c9f38ced429f5adc089a957a9cdb73ad67b7d63f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 May 2016 23:49:08 -0400 Subject: [PATCH 3/5] TST: fix alias collision test --- .../test_cycles/property_collision_plot.png | Bin 30456 -> 37723 bytes lib/matplotlib/tests/test_cycles.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/baseline_images/test_cycles/property_collision_plot.png b/lib/matplotlib/tests/baseline_images/test_cycles/property_collision_plot.png index 2c962c843f64d35ddc8ff2b0e8e475aa062dc1ea..82b4ddac51013d607dba9a96e6106677b897a6b1 100644 GIT binary patch literal 37723 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≷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 LF+V(N_S*jf{|V(M literal 30456 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 rJx2NA$H8u*u)zHPkNVc-D|m5&4d33>mIZo diff --git a/lib/matplotlib/tests/test_cycles.py b/lib/matplotlib/tests/test_cycles.py index 67ce08b881dc..06b60caa81ca 100644 --- a/lib/matplotlib/tests/test_cycles.py +++ b/lib/matplotlib/tests/test_cycles.py @@ -129,7 +129,7 @@ def test_property_collision_plot(): fig, ax = plt.subplots() ax.set_prop_cycle('linewidth', [2, 4]) for c in range(1, 4): - ax.plot(np.arange(10), c * np.arange(10), lw=0.1) + ax.plot(np.arange(10), c * np.arange(10), lw=0.1, color='k') ax.plot(np.arange(10), 4 * np.arange(10)) ax.plot(np.arange(10), 5 * np.arange(10)) From eb86ed14e27b2b10ff8cb3161c4137950ee30591 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 6 May 2016 16:40:19 -0400 Subject: [PATCH 4/5] PEP8 --- lib/matplotlib/rcsetup.py | 4 +++- lib/matplotlib/tests/test_rcparams.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 500d9d486ff3..ea1adb7a4a7f 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -22,6 +22,8 @@ import operator import os import warnings +import re + try: import collections.abc as abc except ImportError: @@ -29,7 +31,7 @@ import collections as abc from matplotlib.fontconfig_pattern import parse_fontconfig_pattern from matplotlib.colors import is_color_like -import re + # Don't let the original cycler collide with our validating cycler from cycler import Cycler, cycler as ccycler diff --git a/lib/matplotlib/tests/test_rcparams.py b/lib/matplotlib/tests/test_rcparams.py index 1d5994d9f7e2..d37adfc2b00d 100644 --- a/lib/matplotlib/tests/test_rcparams.py +++ b/lib/matplotlib/tests/test_rcparams.py @@ -418,5 +418,6 @@ def test_rcparams_reset_after_fail(): assert mpl.rcParams['text.usetex'] is False + if __name__ == '__main__': nose.runmodule(argv=['-s', '--with-doctest'], exit=False) From e3165c5050a6f6844a944e38a255b456fdab71b4 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 7 May 2016 16:56:18 -0400 Subject: [PATCH 5/5] MNT: fix LPy issue --- lib/matplotlib/rcsetup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index ea1adb7a4a7f..d06f054a8409 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -178,6 +178,7 @@ def validate_string_or_None(s): except ValueError: raise ValueError('Could not convert "%s" to string' % s) + def validate_axisbelow(s): try: return validate_bool(s) @@ -668,7 +669,7 @@ def validate_hatch(s): characters: ``\\ / | - + * . x o O``. """ - if not isinstance(s, six.text_type): + if not isinstance(s, six.string_types): raise ValueError("Hatch pattern must be a string") unique_chars = set(s) unknown = (unique_chars -