Skip to content

Commit f42d451

Browse files
authored
Merge pull request matplotlib#29565 from anntzer/rcd
Remove rcParams deprecation machinery
2 parents 991ae8a + 461d106 commit f42d451

File tree

2 files changed

+11
-88
lines changed

2 files changed

+11
-88
lines changed

lib/matplotlib/__init__.py

Lines changed: 11 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -639,18 +639,6 @@ def gen_candidates():
639639
"install is broken")
640640

641641

642-
# rcParams deprecated and automatically mapped to another key.
643-
# Values are tuples of (version, new_name, f_old2new, f_new2old).
644-
_deprecated_map = {}
645-
# rcParams deprecated; some can manually be mapped to another key.
646-
# Values are tuples of (version, new_name_or_None).
647-
_deprecated_ignore_map = {}
648-
# rcParams deprecated; can use None to suppress warnings; remain actually
649-
# listed in the rcParams.
650-
# Values are tuples of (version,)
651-
_deprecated_remain_as_none = {}
652-
653-
654642
@_docstring.Substitution(
655643
"\n".join(map("- {}".format, sorted(rcsetup._validators, key=str.lower)))
656644
)
@@ -747,56 +735,28 @@ def _ensure_has_backend(self):
747735
dict.setdefault(self, "backend", rcsetup._auto_backend_sentinel)
748736

749737
def __setitem__(self, key, val):
738+
if (key == "backend"
739+
and val is rcsetup._auto_backend_sentinel
740+
and "backend" in self):
741+
return
750742
try:
751-
if key in _deprecated_map:
752-
version, alt_key, alt_val, inverse_alt = _deprecated_map[key]
753-
_api.warn_deprecated(
754-
version, name=key, obj_type="rcparam", alternative=alt_key)
755-
key = alt_key
756-
val = alt_val(val)
757-
elif key in _deprecated_remain_as_none and val is not None:
758-
version, = _deprecated_remain_as_none[key]
759-
_api.warn_deprecated(version, name=key, obj_type="rcparam")
760-
elif key in _deprecated_ignore_map:
761-
version, alt_key = _deprecated_ignore_map[key]
762-
_api.warn_deprecated(
763-
version, name=key, obj_type="rcparam", alternative=alt_key)
764-
return
765-
elif key == 'backend':
766-
if val is rcsetup._auto_backend_sentinel:
767-
if 'backend' in self:
768-
return
769-
try:
770-
cval = self.validate[key](val)
771-
except ValueError as ve:
772-
raise ValueError(f"Key {key}: {ve}") from None
773-
self._set(key, cval)
743+
cval = self.validate[key](val)
774744
except KeyError as err:
775745
raise KeyError(
776746
f"{key} is not a valid rc parameter (see rcParams.keys() for "
777747
f"a list of valid parameters)") from err
748+
except ValueError as ve:
749+
raise ValueError(f"Key {key}: {ve}") from None
750+
self._set(key, cval)
778751

779752
def __getitem__(self, key):
780-
if key in _deprecated_map:
781-
version, alt_key, alt_val, inverse_alt = _deprecated_map[key]
782-
_api.warn_deprecated(
783-
version, name=key, obj_type="rcparam", alternative=alt_key)
784-
return inverse_alt(self._get(alt_key))
785-
786-
elif key in _deprecated_ignore_map:
787-
version, alt_key = _deprecated_ignore_map[key]
788-
_api.warn_deprecated(
789-
version, name=key, obj_type="rcparam", alternative=alt_key)
790-
return self._get(alt_key) if alt_key else None
791-
792753
# In theory, this should only ever be used after the global rcParams
793754
# has been set up, but better be safe e.g. in presence of breakpoints.
794-
elif key == "backend" and self is globals().get("rcParams"):
755+
if key == "backend" and self is globals().get("rcParams"):
795756
val = self._get(key)
796757
if val is rcsetup._auto_backend_sentinel:
797758
from matplotlib import pyplot as plt
798759
plt.switch_backend(rcsetup._auto_backend_sentinel)
799-
800760
return self._get(key)
801761

802762
def _get_backend_or_none(self):
@@ -818,6 +778,8 @@ def __str__(self):
818778

819779
def __iter__(self):
820780
"""Yield sorted list of keys."""
781+
# Deprecation warnings are silenced to cover the case where some
782+
# rcParams entries are being deprecated.
821783
with _api.suppress_matplotlib_deprecation_warning():
822784
yield from sorted(dict.__iter__(self))
823785

@@ -939,11 +901,6 @@ def _rc_params_in_file(fname, transform=lambda x: x, fail_on_error=False):
939901
except Exception as msg:
940902
_log.warning('Bad value in file %r, line %d (%r): %s',
941903
fname, line_no, line.rstrip('\n'), msg)
942-
elif key in _deprecated_ignore_map:
943-
version, alt_key = _deprecated_ignore_map[key]
944-
_api.warn_deprecated(
945-
version, name=key, alternative=alt_key, obj_type='rcparam',
946-
addendum="Please update your matplotlibrc.")
947904
else:
948905
# __version__ must be looked up as an attribute to trigger the
949906
# module-level __getattr__.

lib/matplotlib/tests/test_rcparams.py

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -564,40 +564,6 @@ def test_backend_fallback_headful(tmp_path):
564564

565565

566566
def test_deprecation(monkeypatch):
567-
monkeypatch.setitem(
568-
mpl._deprecated_map, "patch.linewidth",
569-
("0.0", "axes.linewidth", lambda old: 2 * old, lambda new: new / 2))
570-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
571-
assert mpl.rcParams["patch.linewidth"] \
572-
== mpl.rcParams["axes.linewidth"] / 2
573-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
574-
mpl.rcParams["patch.linewidth"] = 1
575-
assert mpl.rcParams["axes.linewidth"] == 2
576-
577-
monkeypatch.setitem(
578-
mpl._deprecated_ignore_map, "patch.edgecolor",
579-
("0.0", "axes.edgecolor"))
580-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
581-
assert mpl.rcParams["patch.edgecolor"] \
582-
== mpl.rcParams["axes.edgecolor"]
583-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
584-
mpl.rcParams["patch.edgecolor"] = "#abcd"
585-
assert mpl.rcParams["axes.edgecolor"] != "#abcd"
586-
587-
monkeypatch.setitem(
588-
mpl._deprecated_ignore_map, "patch.force_edgecolor",
589-
("0.0", None))
590-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
591-
assert mpl.rcParams["patch.force_edgecolor"] is None
592-
593-
monkeypatch.setitem(
594-
mpl._deprecated_remain_as_none, "svg.hashsalt",
595-
("0.0",))
596-
with pytest.warns(mpl.MatplotlibDeprecationWarning):
597-
mpl.rcParams["svg.hashsalt"] = "foobar"
598-
assert mpl.rcParams["svg.hashsalt"] == "foobar" # Doesn't warn.
599-
mpl.rcParams["svg.hashsalt"] = None # Doesn't warn.
600-
601567
mpl.rcParams.update(mpl.rcParams.copy()) # Doesn't warn.
602568
# Note that the warning suppression actually arises from the
603569
# iteration over the updater rcParams being protected by

0 commit comments

Comments
 (0)