aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Kemmer <tkemmer@computer.org>2020-09-08 09:52:27 +0200
committerThomas Kemmer <tkemmer@computer.org>2020-12-09 23:38:17 +0100
commit992c42327b993a96853cfed8dd9a0b196a0c18c4 (patch)
treec812c6156302757b25b3016be2ae697bb714732c
parent26afdc4b6c50e56801df55ba47f487d228cb425d (diff)
downloadcachetools-992c42327b993a96853cfed8dd9a0b196a0c18c4.tar.gz
Remove DefaultMapping abstract base class.
-rw-r--r--cachetools/abc.py46
-rw-r--r--cachetools/cache.py32
2 files changed, 30 insertions, 48 deletions
diff --git a/cachetools/abc.py b/cachetools/abc.py
deleted file mode 100644
index b61e49b..0000000
--- a/cachetools/abc.py
+++ /dev/null
@@ -1,46 +0,0 @@
-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)
diff --git a/cachetools/cache.py b/cachetools/cache.py
index 4354ca6..ed3d268 100644
--- a/cachetools/cache.py
+++ b/cachetools/cache.py
@@ -1,7 +1,10 @@
-from .abc import DefaultMapping
+from collections.abc import MutableMapping
class _DefaultSize(object):
+
+ __slots__ = ()
+
def __getitem__(self, _):
return 1
@@ -12,9 +15,11 @@ class _DefaultSize(object):
return 1
-class Cache(DefaultMapping):
+class Cache(MutableMapping):
"""Mutable mapping to serve as a simple cache or cache base class."""
+ __marker = object()
+
__size = _DefaultSize()
def __init__(self, maxsize, getsizeof=None):
@@ -73,6 +78,29 @@ class Cache(DefaultMapping):
def __len__(self):
return len(self.__data)
+ def get(self, key, default=None):
+ if key in self:
+ return self[key]
+ else:
+ return default
+
+ 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
+
@property
def maxsize(self):
"""The maximum size of the cache."""