Source code for eppy.EPlusInterfaceFunctions.structures

"""Implements a case-insensitive dict, based on https://stackoverflow.com/a/32888599/1706564"""


[docs]class CaseInsensitiveDict(dict): @classmethod def _k(cls, key): return key.upper() if isinstance(key, str) else key def __init__(self, *args, **kwargs): super(CaseInsensitiveDict, self).__init__(*args, **kwargs) self._convert_keys() def __getitem__(self, key): return super(CaseInsensitiveDict, self).__getitem__(self.__class__._k(key)) def __setitem__(self, key, value): super(CaseInsensitiveDict, self).__setitem__(self.__class__._k(key), value) def __delitem__(self, key): return super(CaseInsensitiveDict, self).__delitem__(self.__class__._k(key)) def __contains__(self, key): return super(CaseInsensitiveDict, self).__contains__(self.__class__._k(key))
[docs] def has_key(self, key): return super(CaseInsensitiveDict, self).has_key(self.__class__._k(key))
[docs] def pop(self, key, *args, **kwargs): return super(CaseInsensitiveDict, self).pop( self.__class__._k(key), *args, **kwargs )
[docs] def get(self, key, *args, **kwargs): return super(CaseInsensitiveDict, self).get( self.__class__._k(key), *args, **kwargs )
[docs] def setdefault(self, key, *args, **kwargs): return super(CaseInsensitiveDict, self).setdefault( self.__class__._k(key), *args, **kwargs )
[docs] def update(self, E=None, **F): super(CaseInsensitiveDict, self).update(self.__class__(E)) super(CaseInsensitiveDict, self).update(self.__class__(**F))
def _convert_keys(self): for k in list(self.keys()): v = super(CaseInsensitiveDict, self).pop(k) self.__setitem__(k, v)