@@ -3012,13 +3012,12 @@ def _translate_deprecated(self, key):
30123012 test = self ._regex_suffix .sub ('' , key )
30133013 else :
30143014 test = None
3015- found = dict .__contains__ (self , test )
3016- if not found and test in CMAPS_REMOVED :
3015+ if not self ._has_item (test ) and test in CMAPS_REMOVED :
30173016 version = CMAPS_REMOVED [test ]
30183017 raise ValueError (
30193018 f'Proplot colormap { key !r} was removed in version { version } .'
30203019 )
3021- if not found and test in CMAPS_RENAMED :
3020+ if not self . _has_item ( test ) and test in CMAPS_RENAMED :
30223021 test_new , version = CMAPS_RENAMED [test ]
30233022 warnings ._warn_proplot (
30243023 f'Colormap { test !r} was renamed in version { version } and will be '
@@ -3031,34 +3030,44 @@ def _translate_key(self, key, mirror=True):
30313030 """
30323031 Return the sanitized colormap name. Used for lookups and assignments.
30333032 """
3033+ # Sanitize key
30343034 if not isinstance (key , str ):
30353035 raise KeyError (f'Invalid key { key !r} . Key must be a string.' )
30363036 key = key .lower ()
30373037 key = self ._regex_grays .sub (r'greys\2' , key )
3038+ # Mirror diverging
30383039 reverse = key [- 2 :] == '_r'
30393040 if reverse :
30403041 key = key [:- 2 ]
3041- if mirror and not dict . __contains__ ( self , key ): # avoid recursion here
3042+ if mirror and not self . _has_item ( key ): # avoid recursion here
30423043 key_mirror = CMAPS_DIVERGING .get (key , None )
3043- if key_mirror and dict . __contains__ ( self , key_mirror ):
3044+ if key_mirror and self . _has_item ( key_mirror ):
30443045 reverse = not reverse
30453046 key = key_mirror
30463047 if reverse :
30473048 key = key + '_r'
30483049 return key
30493050
3051+ def _has_item (self , key ):
3052+ """
3053+ Redirect to unsanitized `dict.__contains__`.
3054+ """
3055+ return dict .__contains__ (self , key )
3056+
30503057 def _get_item (self , key ):
30513058 """
30523059 Get the colormap with flexible input keys.
30533060 """
3061+ # Sanitize key
30543062 key = self ._translate_deprecated (key )
30553063 key = self ._translate_key (key , mirror = True )
3056- shift = key [- 2 :] == '_s'
3064+ shift = key [- 2 :] == '_s' and not self . _has_item ( key )
30573065 if shift :
30583066 key = key [:- 2 ]
3059- reverse = key [- 2 :] == '_r'
3067+ reverse = key [- 2 :] == '_r' and not self . _has_item ( key )
30603068 if reverse :
30613069 key = key [:- 2 ]
3070+ # Retrieve colormap
30623071 try :
30633072 value = dict .__getitem__ (self , key ) # may raise keyerror
30643073 except KeyError :
@@ -3067,6 +3076,7 @@ def _get_item(self, key):
30673076 + ', ' .join (map (repr , self ))
30683077 + '.'
30693078 )
3079+ # Modify colormap
30703080 if reverse :
30713081 value = value .reversed ()
30723082 if shift :
0 commit comments