def test_Bug_2543(): # Test that it possible to add all values to itself / deepcopy # This was not possible because validate_bool_maybe_none did not # accept None as an argument. # https://github.com/matplotlib/matplotlib/issues/2543 # We filter warnings at this stage since a number of them are raised # for deprecated rcparams as they should. We don't want these in the # printed in the test suite. with cbook._suppress_matplotlib_deprecation_warning(): with mpl.rc_context(): _copy = mpl.rcParams.copy() for key in _copy: mpl.rcParams[key] = _copy[key] with mpl.rc_context(): copy.deepcopy(mpl.rcParams) # real test is that this does not raise assert validate_bool_maybe_none(None) is None assert validate_bool_maybe_none("none") is None with pytest.raises(ValueError): validate_bool_maybe_none("blah") with pytest.raises(ValueError): validate_bool(None) with pytest.raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
def test_Bug_2543(): # Test that it possible to add all values to itself / deepcopy # This was not possible because validate_bool_maybe_none did not # accept None as an argument. # https://github.com/matplotlib/matplotlib/issues/2543 # We filter warnings at this stage since a number of them are raised # for deprecated rcparams as they should. We don't want these in the # printed in the test suite. with warnings.catch_warnings(): warnings.filterwarnings('ignore', category=MatplotlibDeprecationWarning) with mpl.rc_context(): _copy = mpl.rcParams.copy() for key in _copy: mpl.rcParams[key] = _copy[key] with mpl.rc_context(): _deep_copy = copy.deepcopy(mpl.rcParams) # real test is that this does not raise assert validate_bool_maybe_none(None) is None assert validate_bool_maybe_none("none") is None with pytest.raises(ValueError): validate_bool_maybe_none("blah") with pytest.raises(ValueError): validate_bool(None) with pytest.raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
def test_Bug_2543(): # Test that it possible to add all values to itself / deepcopy # This was not possible because validate_bool_maybe_none did not # accept None as an argument. # https://github.com/matplotlib/matplotlib/issues/2543 # We filter warnings at this stage since a number of them are raised # for deprecated rcparams as they should. We don't want these in the # printed in the test suite. with warnings.catch_warnings(): warnings.filterwarnings('ignore', message='.*(deprecated|obsolete)', category=UserWarning) with mpl.rc_context(): _copy = mpl.rcParams.copy() for key in _copy: mpl.rcParams[key] = _copy[key] mpl.rcParams['text.dvipnghack'] = None with mpl.rc_context(): from copy import deepcopy _deep_copy = deepcopy(mpl.rcParams) # real test is that this does not raise assert validate_bool_maybe_none(None) is None assert validate_bool_maybe_none("none") is None with pytest.raises(ValueError): validate_bool_maybe_none("final-atom") with pytest.raises(ValueError): validate_bool(None) with pytest.raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
def test_Bug_2543_newer_python(): # only split from above because of the usage of assert_raises # as a context manager, which only works in 2.7 and above if sys.version_info[:2] < (2, 7): raise nose.SkipTest("assert_raises as context manager not supported with Python < 2.7") from matplotlib.rcsetup import validate_bool_maybe_none, validate_bool with assert_raises(ValueError): validate_bool_maybe_none("blah") with assert_raises(ValueError): validate_bool(None) with assert_raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
def test_Bug_2543(): # Test that it possible to add all values to itself / deepcopy # https://github.com/matplotlib/matplotlib/issues/2543 # We filter warnings at this stage since a number of them are raised # for deprecated rcparams as they should. We don't want these in the # printed in the test suite. with _api.suppress_matplotlib_deprecation_warning(): with mpl.rc_context(): _copy = mpl.rcParams.copy() for key in _copy: mpl.rcParams[key] = _copy[key] with mpl.rc_context(): copy.deepcopy(mpl.rcParams) with pytest.raises(ValueError): validate_bool(None) with pytest.raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
def validate_legend(value): if isinstance(value, dict): return value try: return {'loc': validate_int(value)} except (ValueError, TypeError) as e: pass try: return {'loc': validate_legend_loc(value)} except (ValueError, TypeError) as e: pass value = validate_bool(value) return {'loc': 'best' if value else False}
def test_Bug_2543(): # Test that it possible to add all values to itself / deepcopy # This was not possible because validate_bool_maybe_none did not # accept None as an argument. # https://github.com/matplotlib/matplotlib/issues/2543 # We filter warnings at this stage since a number of them are raised # for deprecated rcparams as they should. We dont want these in the # printed in the test suite. with warnings.catch_warnings(): warnings.filterwarnings('ignore', message='.*(deprecated|obsolete)', category=UserWarning) with mpl.rc_context(): _copy = mpl.rcParams.copy() for key in six.iterkeys(_copy): mpl.rcParams[key] = _copy[key] mpl.rcParams['text.dvipnghack'] = None with mpl.rc_context(): from copy import deepcopy _deep_copy = deepcopy(mpl.rcParams) # real test is that this does not raise assert_true(validate_bool_maybe_none(None) is None) assert_true(validate_bool_maybe_none("none") is None) _fonttype = mpl.rcParams['svg.fonttype'] assert_true(_fonttype == mpl.rcParams['svg.embed_char_paths']) with mpl.rc_context(): mpl.rcParams['svg.embed_char_paths'] = False assert_true(mpl.rcParams['svg.fonttype'] == "none") with assert_raises(ValueError): validate_bool_maybe_none("blah") with assert_raises(ValueError): validate_bool(None) with assert_raises(ValueError): with mpl.rc_context(): mpl.rcParams['svg.fonttype'] = True
# Setup of extra parameters in the matplotlic rc validate_scale_loc = ValidateInStrings('scale_loc', ['bottom', 'top', 'right', 'left'], ignorecase=True) validate_label_loc = ValidateInStrings('label_loc', ['bottom', 'top', 'right', 'left'], ignorecase=True) Params = { 'scalebar.length_fraction': validate_float(0.2), 'scalebar.height_fraction': validate_float(0.01), 'scalebar.location': validate_legend_loc('upper right'), 'scalebar.pad': validate_float(0.2), 'scalebar.border_pad': validate_float(0.1), 'scalebar.sep': validate_float(5), 'scalebar.frameon': validate_bool(True), 'scalebar.color': validate_color('k'), 'scalebar.box_color': validate_color('w'), 'scalebar.box_alpha': validate_float(1.0), 'scalebar.scale_loc': validate_scale_loc('bottom'), 'scalebar.label_loc': validate_label_loc('top'), } matplotlib.rcParams.validate = \ dict((key, converter) for key, (default, converter) in six.iteritems(defaultParams) if key not in matplotlib._all_deprecated) # Dimension lookup SI_LENGTH = 'si-length' SI_LENGTH_RECIPROCAL = 'si-length-reciprocal'