Parcourir la source

Use custom implementation of functools.partial (curry) for Python 2.4 support

Ask Solem il y a 15 ans
Parent
commit
d3fbcd503a
5 fichiers modifiés avec 20 ajouts et 4 suppressions
  1. 1 1
      celery/execute.py
  2. 1 1
      celery/pool.py
  3. 1 1
      celery/serialization.py
  4. 1 1
      celery/utils/__init__.py
  5. 16 0
      celery/utils/functional.py

+ 1 - 1
celery/execute.py

@@ -4,7 +4,7 @@ from celery.result import AsyncResult, EagerResult
 from celery.messaging import TaskPublisher
 from celery.registry import tasks
 from celery.utils import gen_unique_id, noop, fun_takes_kwargs
-from functools import partial as curry
+from celery.utils.functional import curry
 from datetime import datetime, timedelta
 from celery.exceptions import RetryTaskError
 from celery.datastructures import ExceptionInfo

+ 1 - 1
celery/pool.py

@@ -11,7 +11,7 @@ import multiprocessing
 from multiprocessing.pool import Pool, worker
 from celery.datastructures import ExceptionInfo
 from celery.utils import noop
-from functools import partial as curry
+from celery.utils.functional import curry
 from operator import isNumberType
 
 

+ 1 - 1
celery/serialization.py

@@ -1,4 +1,4 @@
-from functools import partial as curry
+from celery.utils.functional import curry
 import operator
 try:
     import cPickle as pickle

+ 1 - 1
celery/utils.py → celery/utils/__init__.py

@@ -6,8 +6,8 @@ Utility functions
 import time
 from itertools import repeat
 from inspect import getargspec
-from functools import partial as curry
 from uuid import UUID, uuid4, _uuid_generate_random
+from celery.utils.functional import curry
 import operator
 try:
     import ctypes

+ 16 - 0
celery/utils/functional.py

@@ -0,0 +1,16 @@
+"""Functional utilities for Python 2.4 compatability."""
+
+
+def _compat_curry(fun, *args, **kwargs):
+    """New function with partial application of the given arguments
+    and keywords."""
+
+    def _curried(*addargs, **addkwargs):
+        return fun(*(args+addargs), **dict(kwargs, **addkwargs))
+    return _curried
+
+
+try:
+    from functools import partial as curry
+except ImportError:
+    curry = _compat_curry