|
|
- from abc import abstractmethod
- from collections.abc import MutableMapping
-
-
- class DefaultMapping(MutableMapping):
-
- __slots__ = ()
-
- @abstractmethod
- def __contains__(self, key): # pragma: nocover
- return False
-
- @abstractmethod
- def __getitem__(self, key): # pragma: nocover
- if hasattr(self.__class__, '__missing__'):
- return self.__class__.__missing__(self, key)
- else:
- raise KeyError(key)
-
- def get(self, key, default=None):
- if key in self:
- return self[key]
- else:
- return default
-
- __marker = object()
-
- def pop(self, key, default=__marker):
- if key in self:
- value = self[key]
- del self[key]
- elif default is self.__marker:
- raise KeyError(key)
- else:
- value = default
- return value
-
- def setdefault(self, key, default=None):
- if key in self:
- value = self[key]
- else:
- self[key] = value = default
- return value
-
-
- DefaultMapping.register(dict)
|