8000 BUG : make rcParams.update validates inputs · matplotlib/matplotlib@ec7276c · GitHub
[go: up one dir, main page]

Skip to content

Commit ec7276c

Browse files
committed
BUG : make rcParams.update validates inputs
Close #3470 Over-ride `update` so that inputs are validated.
1 parent 5c9ccf0 commit ec7276c

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

lib/matplotlib/__init__.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@ class RcParams(dict):
821821
def __setitem__(self, key, val):
822822
try:
823823
if key in _deprecated_map:
824-
alt_key, alt_val = _deprecated_map[key]
824+
alt_key, alt_val = _deprecated_map[key]
825825
warnings.warn(self.msg_depr % (key, alt_key))
826826
key = alt_key
827827
val = alt_val(val)
@@ -840,7 +840,7 @@ def __setitem__(self, key, val):
840840

841841
def __getitem__(self, key):
842842
if key in _deprecated_map:
843-
alt_key, alt_val = _deprecated_map[key]
843+
alt_key, alt_val = _deprecated_map[key]
844844
warnings.warn(self.msg_depr % (key, alt_key))
845845
key = alt_key
846846
elif key in _deprecated_ignore_map:
@@ -849,6 +849,16 @@ def __getitem__(self, key):
849849
key = alt
850850
return dict.__getitem__(self, key)
851851

852+
# http://stackoverflow.com/questions/2390827/how-to-properly-subclass-dict-and-override-get-set
853+
# the default dict `update` does not use __setitem__
854+
# so rcParams.update(...) (such as in seaborn) side-steps
855+
# all of the validation over-ride update to force
856+
# through __setitem__
857+
def update(self, *args, **kwargs):
858+
859+
for k, v in six.iteritems(dict(*args, **kwargs)):
860+
self[k] = v
861+
852862
def __repr__(self):
853863
import pprint
854864
class_name = self.__class__.__name__

0 commit comments

Comments
 (0)
0