Shofel2_T124_python/venv/lib/python3.10/site-packages/dacite/frozen_dict.py

35 lines
839 B
Python
Raw Normal View History

2024-05-25 16:45:07 +00:00
from collections.abc import Mapping
class FrozenDict(Mapping):
dict_cls = dict
def __init__(self, *args, **kwargs):
self._dict = self.dict_cls(*args, **kwargs)
self._hash = None
def __getitem__(self, key):
return self._dict[key]
def __contains__(self, key):
return key in self._dict
def copy(self, **add_or_replace):
return self.__class__(self, **add_or_replace)
def __iter__(self):
return iter(self._dict)
def __len__(self):
return len(self._dict)
def __repr__(self):
return f"<{self.__class__.__name__} {repr(self._dict)}>"
def __hash__(self):
if self._hash is None:
self._hash = 0
for key, value in self._dict.items():
self._hash ^= hash((key, value))
return self._hash