| Index: client/third_party/cachetools/abc.py
|
| diff --git a/client/third_party/cachetools/abc.py b/client/third_party/cachetools/abc.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..41ad7369fccf45bcfae9fb5b59227a4b4d8f79f4
|
| --- /dev/null
|
| +++ b/client/third_party/cachetools/abc.py
|
| @@ -0,0 +1,48 @@
|
| +from __future__ import absolute_import
|
| +
|
| +import collections
|
| +
|
| +from abc import abstractmethod
|
| +
|
| +
|
| +class DefaultMapping(collections.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)
|
|
|