Parcourir la source

[utils] Stop argument to mro_lookup is now a set

Ask Solem il y a 9 ans
Parent
commit
61a2427fa5
4 fichiers modifiés avec 6 ajouts et 6 suppressions
  1. 1 1
      celery/app/base.py
  2. 1 1
      celery/app/trace.py
  3. 1 1
      celery/tests/worker/test_request.py
  4. 3 3
      celery/utils/objects.py

+ 1 - 1
celery/app/base.py

@@ -71,7 +71,7 @@ a configuration module."""
 
 
 def app_has_custom(app, attr):
-    return mro_lookup(app.__class__, attr, stop=(Celery, object),
+    return mro_lookup(app.__class__, attr, stop={Celery, object},
                       monkey_patched=[__name__])
 
 

+ 1 - 1
celery/app/trace.py

@@ -117,7 +117,7 @@ trace_ok_t = namedtuple('trace_ok_t', ('retval', 'info', 'runtime', 'retstr'))
 def task_has_custom(task, attr):
     """Return true if the task or one of its bases
     defines ``attr`` (excluding the one in BaseTask)."""
-    return mro_lookup(task.__class__, attr, stop=(BaseTask, object),
+    return mro_lookup(task.__class__, attr, stop={BaseTask, object},
                       monkey_patched=['celery.app.task'])
 
 

+ 1 - 1
celery/tests/worker/test_request.py

@@ -107,7 +107,7 @@ class test_mro_lookup(Case):
 
         A.x = 10
         self.assertEqual(mro_lookup(C, 'x'), A)
-        self.assertIsNone(mro_lookup(C, 'x', stop=(A,)))
+        self.assertIsNone(mro_lookup(C, 'x', stop={A}))
         B.x = 10
         self.assertEqual(mro_lookup(C, 'x'), B)
         C.x = 10

+ 3 - 3
celery/utils/objects.py

@@ -18,7 +18,7 @@ class Bunch(object):
         self.__dict__.update(kwargs)
 
 
-def mro_lookup(cls, attr, stop=(), monkey_patched=[]):
+def mro_lookup(cls, attr, stop=set(), monkey_patched=[]):
     """Return the first node by MRO order that defines an attribute.
 
     :keyword stop: A list of types that if reached will stop the search.
@@ -32,8 +32,8 @@ def mro_lookup(cls, attr, stop=(), monkey_patched=[]):
     for node in cls.mro():
         if node in stop:
             try:
-                attr = node.__dict__[attr]
-                module_origin = attr.__module__
+                value = node.__dict__[attr]
+                module_origin = value.__module__
             except (AttributeError, KeyError):
                 pass
             else: