|
@@ -28,7 +28,9 @@ from inspect import getargspec
|
|
|
from itertools import islice
|
|
|
from pprint import pprint
|
|
|
|
|
|
-from kombu.utils import cached_property, gen_unique_id # noqa
|
|
|
+from kombu.utils import cached_property, gen_unique_id, kwdict # noqa
|
|
|
+from kombu.utils import reprcall, reprkwargs # noqa
|
|
|
+from kombu.utils.functional import promise, maybe_promise # noqa
|
|
|
uuid = gen_unique_id
|
|
|
|
|
|
from ..exceptions import CPendingDeprecationWarning, CDeprecationWarning
|
|
@@ -86,52 +88,6 @@ def lpmerge(L, R):
|
|
|
return dict(L, **dict((k, v) for k, v in R.iteritems() if v is not None))
|
|
|
|
|
|
|
|
|
-class promise(object):
|
|
|
- """A promise.
|
|
|
-
|
|
|
- Evaluated when called or if the :meth:`evaluate` method is called.
|
|
|
- The function is evaluated on every access, so the value is not
|
|
|
- memoized (see :class:`mpromise`).
|
|
|
-
|
|
|
- Overloaded operations that will evaluate the promise:
|
|
|
- :meth:`__str__`, :meth:`__repr__`, :meth:`__cmp__`.
|
|
|
-
|
|
|
- """
|
|
|
-
|
|
|
- def __init__(self, fun, *args, **kwargs):
|
|
|
- self._fun = fun
|
|
|
- self._args = args
|
|
|
- self._kwargs = kwargs
|
|
|
-
|
|
|
- def __call__(self):
|
|
|
- return self.evaluate()
|
|
|
-
|
|
|
- def evaluate(self):
|
|
|
- return self._fun(*self._args, **self._kwargs)
|
|
|
-
|
|
|
- def __str__(self):
|
|
|
- return str(self())
|
|
|
-
|
|
|
- def __repr__(self):
|
|
|
- return repr(self())
|
|
|
-
|
|
|
- def __cmp__(self, rhs):
|
|
|
- if isinstance(rhs, self.__class__):
|
|
|
- return -cmp(rhs, self())
|
|
|
- return cmp(self(), rhs)
|
|
|
-
|
|
|
- def __eq__(self, rhs):
|
|
|
- return self() == rhs
|
|
|
-
|
|
|
- def __deepcopy__(self, memo):
|
|
|
- memo[id(self)] = self
|
|
|
- return self
|
|
|
-
|
|
|
- def __reduce__(self):
|
|
|
- return (self.__class__, (self._fun, ), {"_args": self._args,
|
|
|
- "_kwargs": self._kwargs})
|
|
|
-
|
|
|
-
|
|
|
class mpromise(promise):
|
|
|
"""Memoized promise.
|
|
|
|
|
@@ -153,13 +109,6 @@ class mpromise(promise):
|
|
|
return self._value
|
|
|
|
|
|
|
|
|
-def maybe_promise(value):
|
|
|
- """Evaluates if the value is a promise."""
|
|
|
- if isinstance(value, promise):
|
|
|
- return value.evaluate()
|
|
|
- return value
|
|
|
-
|
|
|
-
|
|
|
def noop(*args, **kwargs):
|
|
|
"""No operation.
|
|
|
|
|
@@ -169,22 +118,6 @@ def noop(*args, **kwargs):
|
|
|
pass
|
|
|
|
|
|
|
|
|
-if sys.version_info >= (2, 6):
|
|
|
-
|
|
|
- def kwdict(kwargs):
|
|
|
- return kwargs
|
|
|
-else:
|
|
|
- def kwdict(kwargs): # noqa
|
|
|
- """Make sure keyword arguments are not in unicode.
|
|
|
-
|
|
|
- This should be fixed in newer Python versions,
|
|
|
- see: http://bugs.python.org/issue4978.
|
|
|
-
|
|
|
- """
|
|
|
- return dict((key.encode("utf-8"), value)
|
|
|
- for key, value in kwargs.items())
|
|
|
-
|
|
|
-
|
|
|
def first(predicate, iterable):
|
|
|
"""Returns the first element in `iterable` that `predicate` returns a
|
|
|
:const:`True` value for."""
|
|
@@ -486,16 +419,6 @@ def cry(): # pragma: no cover
|
|
|
return out.getvalue()
|
|
|
|
|
|
|
|
|
-def reprkwargs(kwargs, sep=', ', fmt="%s=%s"):
|
|
|
- return sep.join(fmt % (k, _safe_repr(v)) for k, v in kwargs.iteritems())
|
|
|
-
|
|
|
-
|
|
|
-def reprcall(name, args=(), kwargs=(), sep=', '):
|
|
|
- return "%s(%s%s%s)" % (name, sep.join(map(_safe_repr, args)),
|
|
|
- (args and kwargs) and sep or "",
|
|
|
- reprkwargs(kwargs, sep))
|
|
|
-
|
|
|
-
|
|
|
def uniq(it):
|
|
|
seen = set()
|
|
|
for obj in it:
|