|
@@ -11,8 +11,7 @@ from collections import (
|
|
|
)
|
|
|
from heapq import heapify, heappush, heappop
|
|
|
from itertools import chain, count
|
|
|
-
|
|
|
-from celery.five import Empty, items, keys, values
|
|
|
+from queue import Empty
|
|
|
|
|
|
from .functional import first, uniq
|
|
|
from .text import match_case
|
|
@@ -56,7 +55,7 @@ def lpmerge(L, R):
|
|
|
Keeps values from `L`, if the value in `R` is :const:`None`.
|
|
|
"""
|
|
|
setitem = L.__setitem__
|
|
|
- [setitem(k, v) for k, v in items(R) if v is not None]
|
|
|
+ [setitem(k, v) for k, v in R.items() if v is not None]
|
|
|
return L
|
|
|
|
|
|
|
|
@@ -66,7 +65,7 @@ class OrderedDict(_OrderedDict):
|
|
|
def _LRUkey(self):
|
|
|
# return value of od.keys does not support __next__,
|
|
|
# but this version will also not create a copy of the list.
|
|
|
- return next(iter(keys(self)))
|
|
|
+ return next(iter(self.keys()))
|
|
|
else:
|
|
|
if _dict_is_ordered: # pragma: no cover
|
|
|
def _LRUkey(self):
|
|
@@ -172,37 +171,19 @@ class DictAttribute:
|
|
|
def __contains__(self, key):
|
|
|
return hasattr(self.obj, key)
|
|
|
|
|
|
- def _iterate_keys(self):
|
|
|
+ def keys(self):
|
|
|
return iter(dir(self.obj))
|
|
|
- iterkeys = _iterate_keys
|
|
|
|
|
|
def __iter__(self):
|
|
|
- return self._iterate_keys()
|
|
|
+ return self.keys()
|
|
|
|
|
|
- def _iterate_items(self):
|
|
|
- for key in self._iterate_keys():
|
|
|
+ def items(self):
|
|
|
+ for key in self.keys():
|
|
|
yield key, getattr(self.obj, key)
|
|
|
- iteritems = _iterate_items
|
|
|
|
|
|
- def _iterate_values(self):
|
|
|
- for key in self._iterate_keys():
|
|
|
+ def values(self):
|
|
|
+ for key in self.keys():
|
|
|
yield getattr(self.obj, key)
|
|
|
- itervalues = _iterate_values
|
|
|
-
|
|
|
- if sys.version_info[0] == 3: # pragma: no cover
|
|
|
- items = _iterate_items
|
|
|
- keys = _iterate_keys
|
|
|
- values = _iterate_values
|
|
|
- else:
|
|
|
-
|
|
|
- def keys(self):
|
|
|
- return list(self)
|
|
|
-
|
|
|
- def items(self):
|
|
|
- return list(self._iterate_items())
|
|
|
-
|
|
|
- def values(self):
|
|
|
- return list(self._iterate_values())
|
|
|
MutableMapping.register(DictAttribute)
|
|
|
|
|
|
|
|
@@ -271,7 +252,7 @@ class ChainMap(MutableMapping):
|
|
|
return len(set().union(*self.maps))
|
|
|
|
|
|
def __iter__(self):
|
|
|
- return self._iterate_keys()
|
|
|
+ return self.keys()
|
|
|
|
|
|
def __contains__(self, key):
|
|
|
key = self._key(key)
|
|
@@ -309,32 +290,14 @@ class ChainMap(MutableMapping):
|
|
|
# changes take precedence.
|
|
|
return chain(*[op(d) for d in reversed(self.maps)])
|
|
|
|
|
|
- def _iterate_keys(self):
|
|
|
+ def keys(self):
|
|
|
return uniq(self._iter(lambda d: d.keys()))
|
|
|
- iterkeys = _iterate_keys
|
|
|
|
|
|
- def _iterate_items(self):
|
|
|
+ def items(self):
|
|
|
return ((key, self[key]) for key in self)
|
|
|
- iteritems = _iterate_items
|
|
|
|
|
|
- def _iterate_values(self):
|
|
|
+ def values(self):
|
|
|
return (self[key] for key in self)
|
|
|
- itervalues = _iterate_values
|
|
|
-
|
|
|
- if sys.version_info[0] == 3: # pragma: no cover
|
|
|
- keys = _iterate_keys
|
|
|
- items = _iterate_items
|
|
|
- values = _iterate_values
|
|
|
-
|
|
|
- else: # noqa
|
|
|
- def keys(self):
|
|
|
- return list(self._iterate_keys())
|
|
|
-
|
|
|
- def items(self):
|
|
|
- return list(self._iterate_items())
|
|
|
-
|
|
|
- def values(self):
|
|
|
- return list(self._iterate_values())
|
|
|
|
|
|
|
|
|
class ConfigurationView(ChainMap, AttributeDictMixin):
|
|
@@ -494,7 +457,7 @@ class LimitedSet:
|
|
|
|
|
|
def _refresh_heap(self):
|
|
|
"""Time consuming recreating of heap. Do not run this too often."""
|
|
|
- self._heap[:] = [entry for entry in values(self._data)]
|
|
|
+ self._heap[:] = [entry for entry in self._data.values()]
|
|
|
heapify(self._heap)
|
|
|
|
|
|
def _maybe_refresh_heap(self):
|
|
@@ -527,7 +490,7 @@ class LimitedSet:
|
|
|
self.purge()
|
|
|
elif isinstance(other, dict):
|
|
|
# revokes are sent as a dict
|
|
|
- for key, inserted in items(other):
|
|
|
+ for key, inserted in other.items():
|
|
|
if isinstance(inserted, (tuple, list)):
|
|
|
# in case someone uses ._data directly for sending update
|
|
|
inserted = inserted[0]
|
|
@@ -594,7 +557,7 @@ class LimitedSet:
|
|
|
>>> r == s
|
|
|
True
|
|
|
"""
|
|
|
- return {key: inserted for inserted, key in values(self._data)}
|
|
|
+ return {key: inserted for inserted, key in self._data.values()}
|
|
|
|
|
|
def __eq__(self, other):
|
|
|
return self._data == other._data
|
|
@@ -608,7 +571,7 @@ class LimitedSet:
|
|
|
)
|
|
|
|
|
|
def __iter__(self):
|
|
|
- return (i for _, i in sorted(values(self._data)))
|
|
|
+ return (i for _, i in sorted(self._data.values()))
|
|
|
|
|
|
def __len__(self):
|
|
|
return len(self._data)
|
|
@@ -730,7 +693,7 @@ class BufferMap(OrderedDict, Evictable):
|
|
|
self.bufmaxsize = 1000
|
|
|
if iterable:
|
|
|
self.update(iterable)
|
|
|
- self.total = sum(len(buf) for buf in items(self))
|
|
|
+ self.total = sum(len(buf) for buf in self.items())
|
|
|
|
|
|
def put(self, key, item):
|
|
|
self._get_or_create_buffer(key).put(item)
|