Просмотр исходного кода

Merge branch 'master' into canvas_using_freeze

Ask Solem 12 лет назад
Родитель
Сommit
d73a2bfef7
100 измененных файлов с 1531 добавлено и 10841 удалено
  1. 2 2
      .gitignore
  2. 1 1
      LICENSE
  3. 3 2
      celery/__init__.py
  4. 2 1
      celery/app/base.py
  5. 7 6
      celery/app/task.py
  6. 1 1
      celery/app/utils.py
  7. 1 1
      celery/backends/base.py
  8. 1 1
      celery/backends/cache.py
  9. 9 16
      celery/bin/amqp.py
  10. 21 12
      celery/bin/base.py
  11. 2 11
      celery/bin/celery.py
  12. 1 1
      celery/bin/graph.py
  13. 3 5
      celery/bootsteps.py
  14. 2 2
      celery/canvas.py
  15. 0 15
      celery/concurrency/base.py
  16. 4 3
      celery/concurrency/eventlet.py
  17. 7 8
      celery/concurrency/gevent.py
  18. 7 28
      celery/concurrency/processes.py
  19. 2 0
      celery/contrib/abortable.py
  20. 1 1
      celery/contrib/migrate.py
  21. 4 2
      celery/events/__init__.py
  22. 2 3
      celery/events/dumper.py
  23. 9 8
      celery/events/state.py
  24. 4 4
      celery/five.py
  25. 20 21
      celery/fixups/django.py
  26. 3 3
      celery/loaders/base.py
  27. 1 1
      celery/loaders/default.py
  28. 5 81
      celery/local.py
  29. 24 6
      celery/platforms.py
  30. 9 8
      celery/result.py
  31. 1 1
      celery/schedules.py
  32. 1 1
      celery/task/__init__.py
  33. 8 12
      celery/task/trace.py
  34. 1 1
      celery/tests/app/test_amqp.py
  35. 1 1
      celery/tests/app/test_annotations.py
  36. 9 1
      celery/tests/app/test_app.py
  37. 81 40
      celery/tests/app/test_beat.py
  38. 46 43
      celery/tests/app/test_builtins.py
  39. 1 1
      celery/tests/app/test_celery.py
  40. 1 1
      celery/tests/app/test_control.py
  41. 1 1
      celery/tests/app/test_defaults.py
  42. 20 0
      celery/tests/app/test_exceptions.py
  43. 53 9
      celery/tests/app/test_loaders.py
  44. 43 15
      celery/tests/app/test_log.py
  45. 106 102
      celery/tests/app/test_routes.py
  46. 1 1
      celery/tests/app/test_utils.py
  47. 6 4
      celery/tests/backends/test_amqp.py
  48. 1 1
      celery/tests/backends/test_backends.py
  49. 2 4
      celery/tests/backends/test_base.py
  50. 2 2
      celery/tests/backends/test_cache.py
  51. 1 1
      celery/tests/backends/test_cassandra.py
  52. 1 1
      celery/tests/backends/test_database.py
  53. 1 1
      celery/tests/backends/test_mongodb.py
  54. 2 2
      celery/tests/backends/test_redis.py
  55. 1 4
      celery/tests/backends/test_rpc.py
  56. 5 0
      celery/tests/bin/proj/__init__.py
  57. 5 0
      celery/tests/bin/proj/app.py
  58. 15 1
      celery/tests/bin/test_amqp.py
  59. 177 3
      celery/tests/bin/test_base.py
  60. 1 2
      celery/tests/bin/test_beat.py
  61. 202 14
      celery/tests/bin/test_celery.py
  62. 1 1
      celery/tests/bin/test_celeryd_detach.py
  63. 24 2
      celery/tests/bin/test_celeryevdump.py
  64. 1 1
      celery/tests/bin/test_events.py
  65. 1 1
      celery/tests/bin/test_multi.py
  66. 21 1
      celery/tests/bin/test_worker.py
  67. 42 5
      celery/tests/case.py
  68. 6 1
      celery/tests/compat_modules/test_decorators.py
  69. 1 1
      celery/tests/compat_modules/test_messaging.py
  70. 9 2
      celery/tests/compat_modules/test_sets.py
  71. 30 1
      celery/tests/concurrency/test_concurrency.py
  72. 1 1
      celery/tests/concurrency/test_eventlet.py
  73. 42 1
      celery/tests/concurrency/test_gevent.py
  74. 3 2
      celery/tests/concurrency/test_pool.py
  75. 147 4
      celery/tests/concurrency/test_processes.py
  76. 1 1
      celery/tests/concurrency/test_solo.py
  77. 1 1
      celery/tests/concurrency/test_threads.py
  78. 1 1
      celery/tests/contrib/test_abortable.py
  79. 34 0
      celery/tests/contrib/test_methods.py
  80. 210 7
      celery/tests/contrib/test_migrate.py
  81. 1 1
      celery/tests/contrib/test_rdb.py
  82. 0 234
      celery/tests/cover/celery.html
  83. 0 194
      celery/tests/cover/celery___main__.html
  84. 0 296
      celery/tests/cover/celery__state.html
  85. 0 358
      celery/tests/cover/celery_app.html
  86. 0 948
      celery/tests/cover/celery_app_amqp.html
  87. 0 196
      celery/tests/cover/celery_app_annotations.html
  88. 0 1242
      celery/tests/cover/celery_app_base.html
  89. 0 850
      celery/tests/cover/celery_app_builtins.html
  90. 0 694
      celery/tests/cover/celery_app_control.html
  91. 0 596
      celery/tests/cover/celery_app_defaults.html
  92. 0 552
      celery/tests/cover/celery_app_log.html
  93. 0 222
      celery/tests/cover/celery_app_registry.html
  94. 0 264
      celery/tests/cover/celery_app_routes.html
  95. 0 1728
      celery/tests/cover/celery_app_task.html
  96. 0 466
      celery/tests/cover/celery_app_utils.html
  97. 0 84
      celery/tests/cover/celery_apps.html
  98. 0 382
      celery/tests/cover/celery_apps_beat.html
  99. 0 776
      celery/tests/cover/celery_apps_worker.html
  100. 0 200
      celery/tests/cover/celery_backends.html

+ 2 - 2
.gitignore

@@ -2,7 +2,7 @@
 *.pyc
 *.pyc
 *$py.class
 *$py.class
 *~
 *~
-.*.sw[po]
+.*.sw[pon]
 dist/
 dist/
 *.egg-info
 *.egg-info
 *.egg
 *.egg
@@ -20,4 +20,4 @@ Documentation/
 .project
 .project
 .pydevproject
 .pydevproject
 .idea/
 .idea/
-
+celery/tests/cover/

+ 1 - 1
LICENSE

@@ -1,5 +1,5 @@
 Copyright (c) 2009, 2010, 2011, 2012 Ask Solem, and individual contributors.  All Rights Reserved.
 Copyright (c) 2009, 2010, 2011, 2012 Ask Solem, and individual contributors.  All Rights Reserved.
-Copyright (c) 2012 VMware, Inc.  All rights reserved.
+Copyright (c) 2012-2013 GoPivotal, Inc.  All rights reserved.
 
 
 Celery is licensed under The BSD License (3 Clause, also known as
 Celery is licensed under The BSD License (3 Clause, also known as
 the new BSD license).  The license is an OSI approved Open Source
 the new BSD license).  The license is an OSI approved Open Source

+ 3 - 2
celery/__init__.py

@@ -2,7 +2,7 @@
 """Distributed Task Queue"""
 """Distributed Task Queue"""
 # :copyright: (c) 2009 - 2012 Ask Solem and individual contributors,
 # :copyright: (c) 2009 - 2012 Ask Solem and individual contributors,
 #                 All rights reserved.
 #                 All rights reserved.
-# :copyright: (c) 2012 VMware, Inc., All rights reserved.
+# :copyright: (c) 2012-2013 GoPivotal, Inc., All rights reserved.
 # :license:   BSD (3 Clause), see LICENSE for more details.
 # :license:   BSD (3 Clause), see LICENSE for more details.
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
@@ -66,7 +66,8 @@ old_module, new_module = recreate_module(  # pragma: no cover
                           'subtask', 'xmap', 'xstarmap'],
                           'subtask', 'xmap', 'xstarmap'],
         'celery.utils': ['uuid'],
         'celery.utils': ['uuid'],
     },
     },
-    direct={'task': 'celery.task'},
+    direct={'task': 'celery.task',
+            'datastructures': 'celery.utils.datastructures'},
     __package__='celery', __file__=__file__,
     __package__='celery', __file__=__file__,
     __path__=__path__, __doc__=__doc__, __version__=__version__,
     __path__=__path__, __doc__=__doc__, __version__=__version__,
     __author__=__author__, __contact__=__contact__,
     __author__=__author__, __contact__=__contact__,

+ 2 - 1
celery/app/base.py

@@ -213,11 +213,12 @@ class Celery(object):
 
 
     def _task_from_fun(self, fun, **options):
     def _task_from_fun(self, fun, **options):
         base = options.pop('base', None) or self.Task
         base = options.pop('base', None) or self.Task
+        bind = options.pop('bind', False)
 
 
         T = type(fun.__name__, (base, ), dict({
         T = type(fun.__name__, (base, ), dict({
             'app': self,
             'app': self,
             'accept_magic_kwargs': False,
             'accept_magic_kwargs': False,
-            'run': staticmethod(fun),
+            'run': fun if bind else staticmethod(fun),
             '__doc__': fun.__doc__,
             '__doc__': fun.__doc__,
             '__module__': fun.__module__}, **options))()
             '__module__': fun.__module__}, **options))()
         task = self._tasks[T.name]  # return global instance.
         task = self._tasks[T.name]  # return global instance.

+ 7 - 6
celery/app/task.py

@@ -10,11 +10,12 @@ from __future__ import absolute_import
 
 
 import sys
 import sys
 
 
+from billiard.einfo import ExceptionInfo
+
 from celery import current_app
 from celery import current_app
 from celery import states
 from celery import states
 from celery._state import get_current_worker_task, _task_stack
 from celery._state import get_current_worker_task, _task_stack
 from celery.canvas import subtask
 from celery.canvas import subtask
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import MaxRetriesExceededError, RetryTaskError
 from celery.exceptions import MaxRetriesExceededError, RetryTaskError
 from celery.five import class_property, items, with_metaclass
 from celery.five import class_property, items, with_metaclass
 from celery.result import EagerResult
 from celery.result import EagerResult
@@ -364,8 +365,8 @@ class Task(object):
         """The body of the task executed by workers."""
         """The body of the task executed by workers."""
         raise NotImplementedError('Tasks must define the run method.')
         raise NotImplementedError('Tasks must define the run method.')
 
 
-    def start_strategy(self, app, consumer):
-        return instantiate(self.Strategy, self, app, consumer)
+    def start_strategy(self, app, consumer, **kwargs):
+        return instantiate(self.Strategy, self, app, consumer, **kwargs)
 
 
     def delay(self, *args, **kwargs):
     def delay(self, *args, **kwargs):
         """Star argument version of :meth:`apply_async`.
         """Star argument version of :meth:`apply_async`.
@@ -744,7 +745,7 @@ class Task(object):
         :param args: Original arguments for the retried task.
         :param args: Original arguments for the retried task.
         :param kwargs: Original keyword arguments for the retried task.
         :param kwargs: Original keyword arguments for the retried task.
 
 
-        :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`
+        :keyword einfo: :class:`~billiard.einfo.ExceptionInfo`
                         instance, containing the traceback.
                         instance, containing the traceback.
 
 
         The return value of this handler is ignored.
         The return value of this handler is ignored.
@@ -763,7 +764,7 @@ class Task(object):
         :param kwargs: Original keyword arguments for the task
         :param kwargs: Original keyword arguments for the task
                        that failed.
                        that failed.
 
 
-        :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`
+        :keyword einfo: :class:`~billiard.einfo.ExceptionInfo`
                         instance, containing the traceback.
                         instance, containing the traceback.
 
 
         The return value of this handler is ignored.
         The return value of this handler is ignored.
@@ -781,7 +782,7 @@ class Task(object):
         :param kwargs: Original keyword arguments for the task
         :param kwargs: Original keyword arguments for the task
                        that failed.
                        that failed.
 
 
-        :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`
+        :keyword einfo: :class:`~billiard.einfo.ExceptionInfo`
                         instance, containing the traceback (if any).
                         instance, containing the traceback (if any).
 
 
         The return value of this handler is ignored.
         The return value of this handler is ignored.

+ 1 - 1
celery/app/utils.py

@@ -14,7 +14,7 @@ import re
 
 
 from celery.platforms import pyimplementation
 from celery.platforms import pyimplementation
 from celery.five import items
 from celery.five import items
-from celery.datastructures import ConfigurationView
+from celery.utils.datastructures import ConfigurationView
 from celery.utils.text import pretty
 from celery.utils.text import pretty
 from celery.utils.imports import qualname
 from celery.utils.imports import qualname
 
 

+ 1 - 1
celery/backends/base.py

@@ -24,11 +24,11 @@ from kombu.utils.encoding import bytes_to_str, ensure_bytes, from_utf8
 
 
 from celery import states
 from celery import states
 from celery.app import current_task
 from celery.app import current_task
-from celery.datastructures import LRUCache
 from celery.exceptions import ChordError, TimeoutError, TaskRevokedError
 from celery.exceptions import ChordError, TimeoutError, TaskRevokedError
 from celery.five import items
 from celery.five import items
 from celery.result import from_serializable, GroupResult
 from celery.result import from_serializable, GroupResult
 from celery.utils import timeutils
 from celery.utils import timeutils
+from celery.utils.functional import LRUCache
 from celery.utils.serialization import (
 from celery.utils.serialization import (
     get_pickled_exception,
     get_pickled_exception,
     get_pickleable_exception,
     get_pickleable_exception,

+ 1 - 1
celery/backends/cache.py

@@ -10,8 +10,8 @@ from __future__ import absolute_import
 
 
 from kombu.utils import cached_property
 from kombu.utils import cached_property
 
 
-from celery.datastructures import LRUCache
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
+from celery.utils.functional import LRUCache
 
 
 from .base import KeyValueStoreBackend
 from .base import KeyValueStoreBackend
 
 

+ 9 - 16
celery/bin/amqp.py

@@ -96,9 +96,7 @@ class Spec(object):
     def format_response(self, response):
     def format_response(self, response):
         """Format the return value of this command in a human-friendly way."""
         """Format the return value of this command in a human-friendly way."""
         if not self.returns:
         if not self.returns:
-            if response is None:
-                return 'ok.'
-            return response
+            return 'ok.' if response is None else response
         if isinstance(self.returns, Callable):
         if isinstance(self.returns, Callable):
             return self.returns(response)
             return self.returns(response)
         return self.returns.format(response)
         return self.returns.format(response)
@@ -296,20 +294,15 @@ class AMQShell(cmd.Cmd):
         cmd, arg, line = self.parseline(line)
         cmd, arg, line = self.parseline(line)
         if not line:
         if not line:
             return self.emptyline()
             return self.emptyline()
-        if cmd is None:
-            return self.default(line)
         self.lastcmd = line
         self.lastcmd = line
-        if cmd == '':
-            return self.default(line)
-        else:
-            self.counter = next(self.inc_counter)
-            try:
-                self.respond(self.dispatch(cmd, arg))
-            except (AttributeError, KeyError) as exc:
-                self.default(line)
-            except Exception as exc:
-                self.say(exc)
-                self.needs_reconnect = True
+        self.counter = next(self.inc_counter)
+        try:
+            self.respond(self.dispatch(cmd, arg))
+        except (AttributeError, KeyError) as exc:
+            self.default(line)
+        except Exception as exc:
+            self.say(exc)
+            self.needs_reconnect = True
 
 
     def respond(self, retval):
     def respond(self, retval):
         """What to do with the return value of a command."""
         """What to do with the return value of a command."""

+ 21 - 12
celery/bin/base.py

@@ -136,7 +136,7 @@ class Extensions(object):
     def load(self):
     def load(self):
         try:
         try:
             from pkg_resources import iter_entry_points
             from pkg_resources import iter_entry_points
-        except ImportError:
+        except ImportError:  # pragma: no cover
             return
             return
 
 
         for ep in iter_entry_points(self.namespace):
         for ep in iter_entry_points(self.namespace):
@@ -220,7 +220,7 @@ class Command(object):
     #: Set to true if this command doesn't have subcommands
     #: Set to true if this command doesn't have subcommands
     leaf = True
     leaf = True
 
 
-    # used by :meth:`say_remote_control_reply`.
+    # used by :meth:`say_remote_command_reply`.
     show_body = True
     show_body = True
     # used by :meth:`say_chat`.
     # used by :meth:`say_chat`.
     show_reply = True
     show_reply = True
@@ -470,21 +470,29 @@ class Command(object):
         opts = {}
         opts = {}
         for opt in self.preload_options:
         for opt in self.preload_options:
             for t in (opt._long_opts, opt._short_opts):
             for t in (opt._long_opts, opt._short_opts):
-                opts.update(dict(zip(t, [opt.dest] * len(t))))
+                opts.update(dict(zip(t, [opt] * len(t))))
         index = 0
         index = 0
         length = len(args)
         length = len(args)
         while index < length:
         while index < length:
             arg = args[index]
             arg = args[index]
-            if arg.startswith('--') and '=' in arg:
-                key, value = arg.split('=', 1)
-                dest = opts.get(key)
-                if dest:
-                    acc[dest] = value
+            if arg.startswith('--'):
+                if '=' in arg:
+                    key, value = arg.split('=', 1)
+                    opt = opts.get(key)
+                    if opt:
+                        acc[opt.dest] = value
+                else:
+                    opt = opts.get(arg)
+                    if opt and opt.action == 'store_true':
+                        acc[opt.dest] = True
             elif arg.startswith('-'):
             elif arg.startswith('-'):
-                dest = opts.get(arg)
-                if dest:
-                    acc[dest] = args[index + 1]
-                    index += 1
+                opt = opts.get(arg)
+                if opt:
+                    if opt.takes_value():
+                        acc[opt.dest] = args[index + 1]
+                        index += 1
+                    elif opt.action == 'store_true':
+                        acc[opt.dest] = True
             index += 1
             index += 1
         return acc
         return acc
 
 
@@ -517,6 +525,7 @@ class Command(object):
             name, _, domain = host.partition('.')
             name, _, domain = host.partition('.')
             keys = dict({'%': '%', 'h': host, 'n': name, 'd': domain}, **keys)
             keys = dict({'%': '%', 'h': host, 'n': name, 'd': domain}, **keys)
             return match.sub(lambda m: keys[m.expand(expand)], s)
             return match.sub(lambda m: keys[m.expand(expand)], s)
+        return s
 
 
     def _get_default_app(self, *args, **kwargs):
     def _get_default_app(self, *args, **kwargs):
         from celery._state import get_current_app
         from celery._state import get_current_app

+ 2 - 11
celery/bin/celery.py

@@ -52,7 +52,7 @@ command_classes = [
     ('Remote Control', ['status', 'inspect', 'control'], 'blue'),
     ('Remote Control', ['status', 'inspect', 'control'], 'blue'),
     ('Utils', ['purge', 'list', 'migrate', 'call', 'result', 'report'], None),
     ('Utils', ['purge', 'list', 'migrate', 'call', 'result', 'report'], None),
 ]
 ]
-if DEBUG:
+if DEBUG:  # pragma: no cover
     command_classes.append(
     command_classes.append(
         ('Debug', ['graph'], 'red'),
         ('Debug', ['graph'], 'red'),
     )
     )
@@ -330,15 +330,6 @@ class _RemoteControl(Command):
                              status=EX_UNAVAILABLE)
                              status=EX_UNAVAILABLE)
         return replies
         return replies
 
 
-    def say(self, direction, title, body=''):
-        c = self.colored
-        if direction == '<-' and self.quiet:
-            return
-        dirstr = not self.quiet and c.bold(c.white(direction), ' ') or ''
-        self.out(c.reset(dirstr, title))
-        if body and self.show_body:
-            self.out(body)
-
 
 
 class inspect(_RemoteControl):
 class inspect(_RemoteControl):
     """Inspect the worker at runtime.
     """Inspect the worker at runtime.
@@ -763,7 +754,7 @@ class CeleryCommand(Command):
         return '\n'.join(ret).strip()
         return '\n'.join(ret).strip()
 
 
     def with_pool_option(self, argv):
     def with_pool_option(self, argv):
-        if len(argv) > 1 and argv[1] == 'worker':
+        if len(argv) > 1 and 'worker' in argv[0:3]:
             # this command supports custom pools
             # this command supports custom pools
             # that may have to be loaded as early as possible.
             # that may have to be loaded as early as possible.
             return (['-P'], ['--pool'])
             return (['-P'], ['--pool'])

+ 1 - 1
celery/bin/graph.py

@@ -10,8 +10,8 @@ from __future__ import absolute_import, unicode_literals
 
 
 from operator import itemgetter
 from operator import itemgetter
 
 
-from celery.datastructures import DependencyGraph, GraphFormatter
 from celery.five import items
 from celery.five import items
+from celery.utils.datastructures import DependencyGraph, GraphFormatter
 
 
 from .base import Command
 from .base import Command
 
 

+ 3 - 5
celery/bootsteps.py

@@ -14,8 +14,8 @@ from threading import Event
 from kombu.common import ignore_errors
 from kombu.common import ignore_errors
 from kombu.utils import symbol_by_name
 from kombu.utils import symbol_by_name
 
 
-from .datastructures import DependencyGraph, GraphFormatter
 from .five import values, with_metaclass
 from .five import values, with_metaclass
+from .utils.datastructures import DependencyGraph, GraphFormatter
 from .utils.imports import instantiate, qualname
 from .utils.imports import instantiate, qualname
 from .utils.log import get_logger
 from .utils.log import get_logger
 from .utils.threads import default_socket_timeout
 from .utils.threads import default_socket_timeout
@@ -208,9 +208,7 @@ class Blueprint(object):
         return self.steps[name]
         return self.steps[name]
 
 
     def _find_last(self):
     def _find_last(self):
-        for C in values(self.steps):
-            if C.last:
-                return C
+        return next((C for C in values(self.steps) if C.last), None)
 
 
     def _firstpass(self, steps):
     def _firstpass(self, steps):
         stream = deque(step.requires for step in values(steps))
         stream = deque(step.requires for step in values(steps))
@@ -312,7 +310,7 @@ class Step(object):
         pass
         pass
 
 
     def include_if(self, parent):
     def include_if(self, parent):
-        """An optional predicate that decided whether this
+        """An optional predicate that decides whether this
         step should be created."""
         step should be created."""
         return self.enabled
         return self.enabled
 
 

+ 2 - 2
celery/canvas.py

@@ -328,8 +328,8 @@ class _basemap(Signature):
         )
         )
 
 
     @classmethod
     @classmethod
-    def from_dict(self, d):
-        return chunks(*self._unpack_args(d['kwargs']), **d['options'])
+    def from_dict(cls, d):
+        return cls(*cls._unpack_args(d['kwargs']), **d['options'])
 
 
 
 
 class xmap(_basemap):
 class xmap(_basemap):

+ 0 - 15
celery/concurrency/base.py

@@ -119,9 +119,6 @@ class BasePool(object):
     def on_close(self):
     def on_close(self):
         pass
         pass
 
 
-    def init_callbacks(self, **kwargs):
-        pass
-
     def apply_async(self, target, args=[], kwargs={}, **options):
     def apply_async(self, target, args=[], kwargs={}, **options):
         """Equivalent of the :func:`apply` built-in function.
         """Equivalent of the :func:`apply` built-in function.
 
 
@@ -152,15 +149,3 @@ class BasePool(object):
     @property
     @property
     def num_processes(self):
     def num_processes(self):
         return self.limit
         return self.limit
-
-    @property
-    def readers(self):
-        return {}
-
-    @property
-    def writers(self):
-        return {}
-
-    @property
-    def timers(self):
-        return {}

+ 4 - 3
celery/concurrency/eventlet.py

@@ -22,19 +22,20 @@ RACE_MODS = ('billiard.', 'celery.', 'kombu.')
 #: Warn if we couldn't patch early enough,
 #: Warn if we couldn't patch early enough,
 #: and thread/socket depending celery modules have already been loaded.
 #: and thread/socket depending celery modules have already been loaded.
 for mod in (mod for mod in sys.modules if mod.startswith(RACE_MODS)):
 for mod in (mod for mod in sys.modules if mod.startswith(RACE_MODS)):
-    for side in ('thread', 'threading', 'socket'):
+    for side in ('thread', 'threading', 'socket'):  # pragma: no cover
         if getattr(mod, side, None):
         if getattr(mod, side, None):
             import warnings
             import warnings
             warnings.warn(RuntimeWarning(W_RACE % side))
             warnings.warn(RuntimeWarning(W_RACE % side))
 
 
 
 
 PATCHED = [0]
 PATCHED = [0]
-if not EVENTLET_NOPATCH and not PATCHED[0]:
+if not EVENTLET_NOPATCH and not PATCHED[0]:  # pragma: no cover
     PATCHED[0] += 1
     PATCHED[0] += 1
     import eventlet
     import eventlet
     import eventlet.debug
     import eventlet.debug
     eventlet.monkey_patch()
     eventlet.monkey_patch()
-    eventlet.debug.hub_blocking_detection(EVENTLET_DBLOCK)
+    if EVENTLET_DBLOCK:
+        eventlet.debug.hub_blocking_detection(EVENTLET_DBLOCK)
 
 
 from time import time
 from time import time
 
 

+ 7 - 8
celery/concurrency/gevent.py

@@ -15,16 +15,16 @@ if not os.environ.get('GEVENT_NOPATCH') and not PATCHED[0]:
     PATCHED[0] += 1
     PATCHED[0] += 1
     from gevent import monkey, version_info
     from gevent import monkey, version_info
     monkey.patch_all()
     monkey.patch_all()
-    if version_info[0] == 0:
-        # Signals are not working along gevent in version prior 1.0
-        # and they are not monkey patch by monkey.patch_all()
+    if version_info[0] == 0:  # pragma: no cover
+        # Signals aren't working in gevent versions <1.0,
+        # and are not monkey patched by patch_all()
         from gevent import signal as _gevent_signal
         from gevent import signal as _gevent_signal
         _signal = __import__('signal')
         _signal = __import__('signal')
         _signal.signal = _gevent_signal
         _signal.signal = _gevent_signal
 
 
 try:
 try:
     from gevent import Timeout
     from gevent import Timeout
-except ImportError:
+except ImportError:  # pragma: no cover
     Timeout = None  # noqa
     Timeout = None  # noqa
 
 
 from time import time
 from time import time
@@ -36,7 +36,8 @@ from .base import apply_target, BasePool
 
 
 def apply_timeout(target, args=(), kwargs={}, callback=None,
 def apply_timeout(target, args=(), kwargs={}, callback=None,
                   accept_callback=None, pid=None, timeout=None,
                   accept_callback=None, pid=None, timeout=None,
-                  timeout_callback=None, **rest):
+                  timeout_callback=None, Timeout=Timeout,
+                  apply_target=apply_target, **rest):
     try:
     try:
         with Timeout(timeout):
         with Timeout(timeout):
             return apply_target(target, args, kwargs, callback,
             return apply_target(target, args, kwargs, callback,
@@ -51,9 +52,7 @@ class Schedule(timer2.Schedule):
         from gevent.greenlet import Greenlet, GreenletExit
         from gevent.greenlet import Greenlet, GreenletExit
 
 
         class _Greenlet(Greenlet):
         class _Greenlet(Greenlet):
-
-            def cancel(self):
-                self.kill()
+            cancel = Greenlet.kill
 
 
         self._Greenlet = _Greenlet
         self._Greenlet = _Greenlet
         self._GreenletExit = GreenletExit
         self._GreenletExit = GreenletExit

+ 7 - 28
celery/concurrency/processes.py

@@ -22,6 +22,7 @@ from pickle import HIGHEST_PROTOCOL
 from time import sleep, time
 from time import sleep, time
 from weakref import ref
 from weakref import ref
 
 
+from amqp.utils import promise
 from billiard import forking_enable
 from billiard import forking_enable
 from billiard import pool as _pool
 from billiard import pool as _pool
 from billiard.exceptions import WorkerLostError
 from billiard.exceptions import WorkerLostError
@@ -84,7 +85,7 @@ def process_initializer(app, hostname):
     # run once per process.
     # run once per process.
     app.loader.init_worker()
     app.loader.init_worker()
     app.loader.init_worker_process()
     app.loader.init_worker_process()
-    app.log.setup(int(os.environ.get('CELERY_LOG_LEVEL', 0)),
+    app.log.setup(int(os.environ.get('CELERY_LOG_LEVEL', 0) or 0),
                   os.environ.get('CELERY_LOG_FILE') or None,
                   os.environ.get('CELERY_LOG_FILE') or None,
                   bool(os.environ.get('CELERY_LOG_REDIRECT', False)),
                   bool(os.environ.get('CELERY_LOG_REDIRECT', False)),
                   str(os.environ.get('CELERY_LOG_REDIRECT_LEVEL')))
                   str(os.environ.get('CELERY_LOG_REDIRECT_LEVEL')))
@@ -102,15 +103,14 @@ def process_initializer(app, hostname):
     signals.worker_process_init.send(sender=None)
     signals.worker_process_init.send(sender=None)
 
 
 
 
-def _select(self, readers=None, writers=None, err=None, timeout=0):
+def _select(readers=None, writers=None, err=None, timeout=0):
     readers = set() if readers is None else readers
     readers = set() if readers is None else readers
     writers = set() if writers is None else writers
     writers = set() if writers is None else writers
     err = set() if err is None else err
     err = set() if err is None else err
     try:
     try:
         r, w, e = select.select(readers, writers, err, timeout)
         r, w, e = select.select(readers, writers, err, timeout)
         if e:
         if e:
-            seen = set()
-            r = r | set(f for f in r + e if f not in seen and not seen.add(f))
+            r = list(set(r) | set(e))
         return r, w, 0
         return r, w, 0
     except (select.error, socket.error) as exc:
     except (select.error, socket.error) as exc:
         if get_errno(exc) == errno.EINTR:
         if get_errno(exc) == errno.EINTR:
@@ -130,22 +130,6 @@ def _select(self, readers=None, writers=None, err=None, timeout=0):
             raise
             raise
 
 
 
 
-class promise(object):
-
-    def __init__(self, fun, *partial_args, **partial_kwargs):
-        self.fun = fun
-        self.args = partial_args
-        self.kwargs = partial_kwargs
-        self.ready = False
-
-    def __call__(self, *args, **kwargs):
-        try:
-            return self.fun(*tuple(self.args) + tuple(args),
-                            **dict(self.kwargs, **kwargs))
-        finally:
-            self.ready = True
-
-
 class Worker(_pool.Worker):
 class Worker(_pool.Worker):
 
 
     def on_loop_start(self, pid):
     def on_loop_start(self, pid):
@@ -178,7 +162,7 @@ class ResultHandler(_pool.ResultHandler):
                 else:
                 else:
                     ready, task = False, None
                     ready, task = False, None
             except (IOError, EOFError) as exc:
             except (IOError, EOFError) as exc:
-                debug('result handler got %r -- exiting' % (exc, ))
+                debug('result handler got %r -- exiting', exc)
                 raise CoroStop()
                 raise CoroStop()
 
 
             if self._state:
             if self._state:
@@ -442,7 +426,7 @@ class AsynPool(_pool.Pool):
             if not readable:
             if not readable:
                 break
                 break
             for fd in readable:
             for fd in readable:
-                fileno_to_proc[fd]._reader.recv()
+                fileno_to_proc[fd].inq._reader.recv()
             sleep(0)
             sleep(0)
 
 
 
 
@@ -662,12 +646,7 @@ class TaskPool(BasePool):
                     try:
                     try:
                         # keep track of what process the write operation
                         # keep track of what process the write operation
                         # was scheduled for.
                         # was scheduled for.
-                        job._scheduled_for = fileno_to_inq[ready_fd]
-                    except KeyError:
-                        # process gone since scheduled, put it back
-                        return put_message(job)
-                    try:
-                        proc = fileno_to_inq[ready_fd]
+                        proc = job._scheduled_for = fileno_to_inq[ready_fd]
                     except KeyError:
                     except KeyError:
                         # write was scheduled for this fd but the process
                         # write was scheduled for this fd but the process
                         # has since exited and the message must be sent to
                         # has since exited and the message must be sent to

+ 2 - 0
celery/contrib/abortable.py

@@ -142,6 +142,8 @@ class AbortableTask(Task):
 
 
     """
     """
 
 
+    abstract = True
+
     @classmethod
     @classmethod
     def AsyncResult(cls, task_id):
     def AsyncResult(cls, task_id):
         """Returns the accompanying AbortableAsyncResult instance."""
         """Returns the accompanying AbortableAsyncResult instance."""

+ 1 - 1
celery/contrib/migrate.py

@@ -85,7 +85,7 @@ def migrate_task(producer, body_, message, queues=None):
 def filter_callback(callback, tasks):
 def filter_callback(callback, tasks):
 
 
     def filtered(body, message):
     def filtered(body, message):
-        if tasks and message.payload['task'] not in tasks:
+        if tasks and body['task'] not in tasks:
             return
             return
 
 
         return callback(body, message)
         return callback(body, message)

+ 4 - 2
celery/events/__init__.py

@@ -303,7 +303,9 @@ class EventReceiver(ConsumerMixin):
                                    connection=self.connection,
                                    connection=self.connection,
                                    channel=channel)
                                    channel=channel)
 
 
-    def event_from_message(self, body, localize=True, now=time.time):
+    def event_from_message(self, body, localize=True,
+                           now=time.time, tzfields=_TZGETTER,
+                           adjust_timestamp=adjust_timestamp):
         type = body.get('type', '').lower()
         type = body.get('type', '').lower()
         clock = body.get('clock')
         clock = body.get('clock')
         if clock:
         if clock:
@@ -311,7 +313,7 @@ class EventReceiver(ConsumerMixin):
 
 
         if localize:
         if localize:
             try:
             try:
-                offset, timestamp = _TZGETTER(body)
+                offset, timestamp = tzfields(body)
             except KeyError:
             except KeyError:
                 pass
                 pass
             else:
             else:

+ 2 - 3
celery/events/dumper.py

@@ -14,7 +14,7 @@ import sys
 from datetime import datetime
 from datetime import datetime
 
 
 from celery.app import app_or_default
 from celery.app import app_or_default
-from celery.datastructures import LRUCache
+from celery.utils.functional import LRUCache
 from celery.utils.timeutils import humanize_seconds
 from celery.utils.timeutils import humanize_seconds
 
 
 TASK_NAMES = LRUCache(limit=0xFFF)
 TASK_NAMES = LRUCache(limit=0xFFF)
@@ -81,7 +81,7 @@ def evdump(app=None, out=sys.stdout):
     app = app_or_default(app)
     app = app_or_default(app)
     dumper = Dumper(out=out)
     dumper = Dumper(out=out)
     dumper.say('-> evdump: starting capture...')
     dumper.say('-> evdump: starting capture...')
-    conn = app.connection()
+    conn = app.connection().clone()
 
 
     def _error_handler(exc, interval):
     def _error_handler(exc, interval):
         dumper.say(CONNECTION_ERROR % (
         dumper.say(CONNECTION_ERROR % (
@@ -90,7 +90,6 @@ def evdump(app=None, out=sys.stdout):
 
 
     while 1:
     while 1:
         try:
         try:
-            conn = conn.clone()
             conn.ensure_connection(_error_handler)
             conn.ensure_connection(_error_handler)
             recv = app.events.Receiver(conn, handlers={'*': dumper.on_event})
             recv = app.events.Receiver(conn, handlers={'*': dumper.on_event})
             recv.capture()
             recv.capture()

+ 9 - 8
celery/events/state.py

@@ -20,7 +20,7 @@ from __future__ import absolute_import
 
 
 import threading
 import threading
 
 
-from heapq import heappush
+from heapq import heappush, heappop
 from itertools import islice
 from itertools import islice
 from operator import itemgetter
 from operator import itemgetter
 from time import time
 from time import time
@@ -28,8 +28,9 @@ from time import time
 from kombu.utils import kwdict
 from kombu.utils import kwdict
 
 
 from celery import states
 from celery import states
-from celery.datastructures import AttributeDict, LRUCache
 from celery.five import items, values
 from celery.five import items, values
+from celery.utils.datastructures import AttributeDict
+from celery.utils.functional import LRUCache
 from celery.utils.log import get_logger
 from celery.utils.log import get_logger
 
 
 # The window (in percentage) is added to the workers heartbeat
 # The window (in percentage) is added to the workers heartbeat
@@ -62,7 +63,7 @@ class _lamportinfo(tuple):
         return tuple.__new__(cls, (clock, timestamp, id, obj))
         return tuple.__new__(cls, (clock, timestamp, id, obj))
 
 
     def __repr__(self):
     def __repr__(self):
-        return '_lamport(clock={0}, timestamp={1}, id={2} {3!r}'.format(*self)
+        return '_lamport(clock={0}, timestamp={1}, id={2} {3!r})'.format(*self)
 
 
     def __getnewargs__(self):
     def __getnewargs__(self):
         return tuple(self)
         return tuple(self)
@@ -74,7 +75,7 @@ class _lamportinfo(tuple):
             # uses logical clock value first
             # uses logical clock value first
             if A and B:  # use logical clock if available
             if A and B:  # use logical clock if available
                 if A == B:  # equal clocks use lower process id
                 if A == B:  # equal clocks use lower process id
-                    return self[3] < other[3]
+                    return self[2] < other[2]
                 return A < B
                 return A < B
             return self[1] < other[1]  # ... or use timestamp
             return self[1] < other[1]  # ... or use timestamp
         except IndexError:
         except IndexError:
@@ -122,7 +123,7 @@ class Worker(Element):
     def update_heartbeat(self, received, timestamp):
     def update_heartbeat(self, received, timestamp):
         if not received or not timestamp:
         if not received or not timestamp:
             return
             return
-        drift = received - timestamp
+        drift = abs(received - timestamp)
         if drift > HEARTBEAT_DRIFT_MAX:
         if drift > HEARTBEAT_DRIFT_MAX:
             warn(DRIFT_WARNING, self.hostname, drift)
             warn(DRIFT_WARNING, self.hostname, drift)
         heartbeats, hbmax = self.heartbeats, self.heartbeat_max
         heartbeats, hbmax = self.heartbeats, self.heartbeat_max
@@ -360,14 +361,14 @@ class State(object):
         worker, _ = self.get_or_create_worker(hostname)
         worker, _ = self.get_or_create_worker(hostname)
         task, created = self.get_or_create_task(uuid)
         task, created = self.get_or_create_task(uuid)
         task.worker = worker
         task.worker = worker
+        maxtasks = self.max_tasks_in_memory * 2
 
 
         taskheap = self._taskheap
         taskheap = self._taskheap
         timestamp = fields.get('timestamp') or 0
         timestamp = fields.get('timestamp') or 0
         clock = 0 if type == 'sent' else fields.get('clock')
         clock = 0 if type == 'sent' else fields.get('clock')
         heappush(taskheap, _lamportinfo(clock, timestamp, worker.id, task))
         heappush(taskheap, _lamportinfo(clock, timestamp, worker.id, task))
-        curcount = len(self.tasks)
-        if len(taskheap) > self.max_tasks_in_memory * 2:
-            taskheap[:] = taskheap[curcount:]
+        if len(taskheap) > maxtasks:
+            heappop(taskheap)
 
 
         handler = getattr(task, 'on_' + type, None)
         handler = getattr(task, 'on_' + type, None)
         if type == 'received':
         if type == 'received':

+ 4 - 4
celery/five.py

@@ -12,7 +12,7 @@ from __future__ import absolute_import
 
 
 try:
 try:
     from collections import Counter
     from collections import Counter
-except ImportError:
+except ImportError:  # pragma: no cover
     from collections import defaultdict
     from collections import defaultdict
 
 
     def Counter():
     def Counter():
@@ -38,7 +38,7 @@ except ImportError:                         # pragma: no cover
     from collections import UserDict        # noqa
     from collections import UserDict        # noqa
 
 
 
 
-if PY3:
+if PY3:  # pragma: no cover
     import builtins
     import builtins
 
 
     from queue import Queue, Empty
     from queue import Queue, Empty
@@ -107,7 +107,7 @@ else:
     def nextfun(it):                # noqa
     def nextfun(it):                # noqa
         return it.next
         return it.next
 
 
-    def exec_(code, globs=None, locs=None):
+    def exec_(code, globs=None, locs=None):  # pragma: no cover
         """Execute code in a namespace."""
         """Execute code in a namespace."""
         if globs is None:
         if globs is None:
             frame = sys._getframe(1)
             frame = sys._getframe(1)
@@ -296,7 +296,7 @@ class MagicModule(ModuleType):
             for item in self._all_by_module[module.__name__]:
             for item in self._all_by_module[module.__name__]:
                 setattr(self, item, getattr(module, item))
                 setattr(self, item, getattr(module, item))
             return getattr(module, name)
             return getattr(module, name)
-        elif name in self._direct:
+        elif name in self._direct:  # pragma: no cover
             module = __import__(self._direct[name], None, None, [name])
             module = __import__(self._direct[name], None, None, [name])
             setattr(self, name, module)
             setattr(self, name, module)
             return module
             return module

+ 20 - 21
celery/fixups/django.py

@@ -4,12 +4,14 @@ import os
 import sys
 import sys
 import warnings
 import warnings
 
 
+from kombu.utils import symbol_by_name
+
 from datetime import datetime
 from datetime import datetime
+from importlib import import_module
 
 
 from celery import signals
 from celery import signals
 from celery.exceptions import FixupWarning
 from celery.exceptions import FixupWarning
 
 
-SETTINGS_MODULE = os.environ.get('DJANGO_SETTINGS_MODULE')
 ERR_NOT_INSTALLED = """\
 ERR_NOT_INSTALLED = """\
 Environment variable DJANGO_SETTINGS_MODULE is defined
 Environment variable DJANGO_SETTINGS_MODULE is defined
 but Django is not installed.  Will not apply Django fixups!
 but Django is not installed.  Will not apply Django fixups!
@@ -24,32 +26,36 @@ def _maybe_close_fd(fh):
         pass
         pass
 
 
 
 
-def fixup(app):
+def fixup(app, env='DJANGO_SETTINGS_MODULE'):
+    SETTINGS_MODULE = os.environ.get(env)
     if SETTINGS_MODULE:
     if SETTINGS_MODULE:
         try:
         try:
             import django  # noqa
             import django  # noqa
         except ImportError:
         except ImportError:
             warnings.warn(FixupWarning(ERR_NOT_INSTALLED))
             warnings.warn(FixupWarning(ERR_NOT_INSTALLED))
-        return DjangoFixup(app).install()
+        else:
+            return DjangoFixup(app).install()
 
 
 
 
 class DjangoFixup(object):
 class DjangoFixup(object):
     _db_recycles = 0
     _db_recycles = 0
 
 
     def __init__(self, app):
     def __init__(self, app):
-        from django import db
-        from django.core import cache
-        from django.conf import settings
-        from django.core.mail import mail_admins
+        self.app = app
+        self.db_reuse_max = self.app.conf.get('CELERY_DB_REUSE_MAX', None)
+        self._db = import_module('django.db')
+        self._cache = import_module('django.core.cache')
+        self._settings = symbol_by_name('django.conf:settings')
+        self._mail_admins = symbol_by_name('django.core.mail:mail_admins')
 
 
         # Current time and date
         # Current time and date
         try:
         try:
-            from django.utils.timezone import now
+            self._now = symbol_by_name('django.utils.timezone:now')
         except ImportError:  # pre django-1.4
         except ImportError:  # pre django-1.4
-            now = datetime.now  # noqa
+            self._now = datetime.now  # noqa
 
 
         # Database-related exceptions.
         # Database-related exceptions.
-        from django.db import DatabaseError
+        DatabaseError = symbol_by_name('django.db:DatabaseError')
         try:
         try:
             import MySQLdb as mysql
             import MySQLdb as mysql
             _my_database_errors = (mysql.DatabaseError,
             _my_database_errors = (mysql.DatabaseError,
@@ -80,24 +86,17 @@ class DjangoFixup(object):
             _oracle_database_errors = ()  # noqa
             _oracle_database_errors = ()  # noqa
 
 
         try:
         try:
-            from django.db import close_old_connections
-            self._close_old_connections = close_old_connections
+            self._close_old_connections = symbol_by_name(
+                'django.db:close_old_connections',
+            )
         except ImportError:
         except ImportError:
             self._close_old_connections = None
             self._close_old_connections = None
-
-        self.app = app
-        self.db_reuse_max = self.app.conf.get('CELERY_DB_REUSE_MAX', None)
-        self._cache = cache
-        self._settings = settings
-        self._db = db
-        self._mail_admins = mail_admins
-        self._now = now
         self.database_errors = (
         self.database_errors = (
             (DatabaseError, ) +
             (DatabaseError, ) +
             _my_database_errors +
             _my_database_errors +
             _pg_database_errors +
             _pg_database_errors +
             _lite_database_errors +
             _lite_database_errors +
-            _oracle_database_errors,
+            _oracle_database_errors
         )
         )
 
 
     def install(self):
     def install(self):

+ 3 - 3
celery/loaders/base.py

@@ -20,8 +20,8 @@ from datetime import datetime
 from kombu.utils import cached_property
 from kombu.utils import cached_property
 from kombu.utils.encoding import safe_str
 from kombu.utils.encoding import safe_str
 
 
-from celery.datastructures import DictAttribute
 from celery.five import reraise, string_t
 from celery.five import reraise, string_t
+from celery.utils.datastructures import DictAttribute
 from celery.utils.functional import maybe_list
 from celery.utils.functional import maybe_list
 from celery.utils.imports import (
 from celery.utils.imports import (
     import_from_cwd, symbol_by_name, NotAPackage, find_module,
     import_from_cwd, symbol_by_name, NotAPackage, find_module,
@@ -221,9 +221,9 @@ class BaseLoader(object):
                                   use_tls=use_tls)
                                   use_tls=use_tls)
         mailer.send(message, fail_silently=fail_silently)
         mailer.send(message, fail_silently=fail_silently)
 
 
-    def read_configuration(self):
+    def read_configuration(self, env='CELERY_CONFIG_MODULE'):
         try:
         try:
-            custom_config = os.environ['CELERY_CONFIG_MODULE']
+            custom_config = os.environ[env]
         except KeyError:
         except KeyError:
             pass
             pass
         else:
         else:

+ 1 - 1
celery/loaders/default.py

@@ -11,9 +11,9 @@ from __future__ import absolute_import
 import os
 import os
 import warnings
 import warnings
 
 
-from celery.datastructures import DictAttribute
 from celery.exceptions import NotConfigured
 from celery.exceptions import NotConfigured
 from celery.utils import strtobool
 from celery.utils import strtobool
+from celery.utils.datastructures import DictAttribute
 
 
 from .base import BaseLoader
 from .base import BaseLoader
 
 

+ 5 - 81
celery/local.py

@@ -14,7 +14,7 @@ from __future__ import absolute_import
 
 
 import importlib
 import importlib
 
 
-from .five import long_t, string, string_t
+from .five import long_t, string
 
 
 __module__ = __name__  # used by Proxy class body
 __module__ = __name__  # used by Proxy class body
 
 
@@ -34,88 +34,11 @@ def _default_cls_attr(name, type_, cls_value):
     def __get__(self, obj, cls=None):
     def __get__(self, obj, cls=None):
         return self.__getter(obj) if obj is not None else self
         return self.__getter(obj) if obj is not None else self
 
 
-    def __set__(self, obj, value):
-        raise AttributeError('readonly attribute')
-
     return type(name, (type_, ), {
     return type(name, (type_, ), {
-        '__new__': __new__, '__get__': __get__, '__set__': __set__,
+        '__new__': __new__, '__get__': __get__,
     })
     })
 
 
 
 
-class _cls_spec(str):
-
-    def __new__(cls, getter):
-        s = str.__new__(cls, getter.__module__)
-        s.__getter = getter
-        return s
-
-    def __get__(self, obj, cls=None):
-        if obj is not None:
-            return self.__getter(obj)
-        return self
-
-    def __set__(self, obj, value):
-        raise AttributeError('cannot set attribute')
-
-
-def symbol_by_name(name, aliases={}, imp=None, package=None,
-                   sep='.', default=None, **kwargs):
-    """Get symbol by qualified name.
-
-    The name should be the full dot-separated path to the class::
-
-        modulename.ClassName
-
-    Example::
-
-        celery.concurrency.processes.TaskPool
-                                    ^- class name
-
-    or using ':' to separate module and symbol::
-
-        celery.concurrency.processes:TaskPool
-
-    If `aliases` is provided, a dict containing short name/long name
-    mappings, the name is looked up in the aliases first.
-
-    Examples:
-
-        >>> symbol_by_name('celery.concurrency.processes.TaskPool')
-        <class 'celery.concurrency.processes.TaskPool'>
-
-        >>> symbol_by_name('default', {
-        ...     'default': 'celery.concurrency.processes.TaskPool'})
-        <class 'celery.concurrency.processes.TaskPool'>
-
-        # Does not try to look up non-string names.
-        >>> from celery.concurrency.processes import TaskPool
-        >>> symbol_by_name(TaskPool) is TaskPool
-        True
-
-    """
-    if imp is None:
-        imp = importlib.import_module
-
-    if not isinstance(name, string_t):
-        return name                                 # already a class
-
-    name = aliases.get(name) or name
-    sep = ':' if ':' in name else sep
-    module_name, _, cls_name = name.rpartition(sep)
-    if not module_name:
-        cls_name, module_name = None, package if package else cls_name
-    try:
-        try:
-            module = imp(module_name, package=package, **kwargs)
-        except ValueError as exc:
-            raise ValueError("Couldn't import %r: %s" % (name, exc))
-        return getattr(module, cls_name) if cls_name else module
-    except (ImportError, AttributeError):
-        if default is None:
-            raise
-    return default
-
-
 def try_import(module, default=None):
 def try_import(module, default=None):
     """Try to import and return module, or return
     """Try to import and return module, or return
     None if the module does not exist."""
     None if the module does not exist."""
@@ -265,7 +188,7 @@ class Proxy(object):
     __oct__ = lambda x: oct(x._get_current_object())
     __oct__ = lambda x: oct(x._get_current_object())
     __hex__ = lambda x: hex(x._get_current_object())
     __hex__ = lambda x: hex(x._get_current_object())
     __index__ = lambda x: x._get_current_object().__index__()
     __index__ = lambda x: x._get_current_object().__index__()
-    __coerce__ = lambda x, o: x.__coerce__(x, o)
+    __coerce__ = lambda x, o: x._get_current_object().__coerce__(o)
     __enter__ = lambda x: x._get_current_object().__enter__()
     __enter__ = lambda x: x._get_current_object().__enter__()
     __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw)
     __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw)
     __reduce__ = lambda x: x._get_current_object().__reduce__()
     __reduce__ = lambda x: x._get_current_object().__reduce__()
@@ -307,7 +230,8 @@ class PromiseProxy(Proxy):
             for attr in _clean:
             for attr in _clean:
                 try:
                 try:
                     object.__delattr__(self, attr)
                     object.__delattr__(self, attr)
-                except AttributeError:  # May mask errors so ignore
+                except AttributeError:  # pragma: no cover
+                    # May mask errors so ignore
                     pass
                     pass
 
 
 
 

+ 24 - 6
celery/platforms.py

@@ -18,6 +18,7 @@ import signal as _signal
 import sys
 import sys
 
 
 from billiard import current_process
 from billiard import current_process
+from kombu.utils.compat import get_errno
 from kombu.utils.encoding import safe_str
 from kombu.utils.encoding import safe_str
 from contextlib import contextmanager
 from contextlib import contextmanager
 
 
@@ -51,13 +52,15 @@ Seems we're already running? (pid: {1})"""
 try:
 try:
     from io import UnsupportedOperation
     from io import UnsupportedOperation
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
-except ImportError:  # Py2
+except ImportError:  # pragma: no cover
+    # Py2
     FILENO_ERRORS = (AttributeError, )  # noqa
     FILENO_ERRORS = (AttributeError, )  # noqa
 
 
 try:
 try:
     from io import UnsupportedOperation
     from io import UnsupportedOperation
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
-except ImportError:  # Py2
+except ImportError:  # pragma: no cover
+    # Py2
     FILENO_ERRORS = (AttributeError, )  # noqa
     FILENO_ERRORS = (AttributeError, )  # noqa
 
 
 
 
@@ -504,11 +507,26 @@ def maybe_drop_privileges(uid=None, gid=None):
             gid = pwd.getpwuid(uid).pw_gid
             gid = pwd.getpwuid(uid).pw_gid
         # Must set the GID before initgroups(), as setgid()
         # Must set the GID before initgroups(), as setgid()
         # is known to zap the group list on some platforms.
         # is known to zap the group list on some platforms.
+
+        # setgid must happen before setuid (otherwise the setgid operation
+        # may fail because of insufficient privileges and possibly stay
+        # in a privileged group).
         setgid(gid)
         setgid(gid)
         initgroups(uid, gid)
         initgroups(uid, gid)
 
 
         # at last:
         # at last:
         setuid(uid)
         setuid(uid)
+        # ... and make sure privileges cannot be restored:
+        try:
+            setuid(0)
+        except OSError as exc:
+            if get_errno(exc) != errno.EPERM:
+                raise
+            pass  # Good: cannot restore privileges.
+        else:
+            raise RuntimeError(
+                'non-root user able to restore privileges after setuid.')
+
     else:
     else:
         gid and setgid(gid)
         gid and setgid(gid)
 
 
@@ -557,14 +575,14 @@ class Signals(object):
 
 
         def arm_alarm(self, seconds):
         def arm_alarm(self, seconds):
             _signal.setitimer(_signal.ITIMER_REAL, seconds)
             _signal.setitimer(_signal.ITIMER_REAL, seconds)
-    else:
+    else:  # pragma: no cover
         try:
         try:
             from itimer import alarm as _itimer_alarm  # noqa
             from itimer import alarm as _itimer_alarm  # noqa
         except ImportError:
         except ImportError:
 
 
             def arm_alarm(self, seconds):  # noqa
             def arm_alarm(self, seconds):  # noqa
                 _signal.alarm(math.ceil(seconds))
                 _signal.alarm(math.ceil(seconds))
-        else:
+        else:  # pragma: no cover
 
 
             def arm_alarm(self, seconds):      # noqa
             def arm_alarm(self, seconds):      # noqa
                 return _itimer_alarm(seconds)  # noqa
                 return _itimer_alarm(seconds)  # noqa
@@ -674,7 +692,7 @@ else:
             '{0}:{1}'.format(progname, current_process().name), info=info)
             '{0}:{1}'.format(progname, current_process().name), info=info)
 
 
 
 
-def get_errno(n):
+def get_errno_name(n):
     """Get errno for string, e.g. ``ENOENT``."""
     """Get errno for string, e.g. ``ENOENT``."""
     if isinstance(n, string_t):
     if isinstance(n, string_t):
         return getattr(errno, n)
         return getattr(errno, n)
@@ -699,7 +717,7 @@ def ignore_errno(*errnos, **kwargs):
                     defaults to :exc:`Exception`.
                     defaults to :exc:`Exception`.
     """
     """
     types = kwargs.get('types') or (Exception, )
     types = kwargs.get('types') or (Exception, )
-    errnos = [get_errno(errno) for errno in errnos]
+    errnos = [get_errno_name(errno) for errno in errnos]
     try:
     try:
         yield
         yield
     except types as exc:
     except types as exc:

+ 9 - 8
celery/result.py

@@ -19,14 +19,17 @@ from kombu.utils.compat import OrderedDict
 from . import current_app
 from . import current_app
 from . import states
 from . import states
 from .app import app_or_default
 from .app import app_or_default
-from .datastructures import DependencyGraph, GraphFormatter
 from .exceptions import IncompleteStream, TimeoutError
 from .exceptions import IncompleteStream, TimeoutError
 from .five import items, range, string_t
 from .five import items, range, string_t
+from .utils.datastructures import DependencyGraph, GraphFormatter
 
 
 
 
 class ResultBase(object):
 class ResultBase(object):
     """Base class for all results"""
     """Base class for all results"""
 
 
+    #: Parent result (if part of a chain)
+    parent = None
+
 
 
 class AsyncResult(ResultBase):
 class AsyncResult(ResultBase):
     """Query task state.
     """Query task state.
@@ -46,9 +49,6 @@ class AsyncResult(ResultBase):
     #: The task result backend to use.
     #: The task result backend to use.
     backend = None
     backend = None
 
 
-    #: Parent result (if part of a chain)
-    parent = None
-
     def __init__(self, id, backend=None, task_name=None,
     def __init__(self, id, backend=None, task_name=None,
                  app=None, parent=None):
                  app=None, parent=None):
         self.app = app_or_default(app or self.app)
         self.app = app_or_default(app or self.app)
@@ -58,7 +58,7 @@ class AsyncResult(ResultBase):
         self.parent = parent
         self.parent = parent
 
 
     def serializable(self):
     def serializable(self):
-        return [self.id, self.parent and self.parent.id], None
+        return [self.id, self.parent and self.parent.serializable()], None
 
 
     def forget(self):
     def forget(self):
         """Forget about (and possibly remove the result of) this task."""
         """Forget about (and possibly remove the result of) this task."""
@@ -739,13 +739,14 @@ def from_serializable(r, app=None):
     app = app_or_default(app)
     app = app_or_default(app)
     Result = app.AsyncResult
     Result = app.AsyncResult
     if not isinstance(r, ResultBase):
     if not isinstance(r, ResultBase):
-        id = parent = None
         res, nodes = r
         res, nodes = r
         if nodes:
         if nodes:
             return app.GroupResult(
             return app.GroupResult(
                 res, [from_serializable(child, app) for child in nodes],
                 res, [from_serializable(child, app) for child in nodes],
             )
             )
-        if isinstance(res, (list, tuple)):
-            id, parent = res[0], res[1]
+        # previously did not include parent
+        id, parent = res if isinstance(res, (list, tuple)) else (res, None)
+        if parent:
+            parent = from_serializable(parent, app)
         return Result(id, parent=parent)
         return Result(id, parent=parent)
     return r
     return r

+ 1 - 1
celery/schedules.py

@@ -22,7 +22,7 @@ from .utils.timeutils import (
     timedelta_seconds, weekday, maybe_timedelta, remaining,
     timedelta_seconds, weekday, maybe_timedelta, remaining,
     humanize_seconds, timezone, maybe_make_aware, ffwd
     humanize_seconds, timezone, maybe_make_aware, ffwd
 )
 )
-from .datastructures import AttributeDict
+from .utils.datastructures import AttributeDict
 
 
 CRON_PATTERN_INVALID = """\
 CRON_PATTERN_INVALID = """\
 Invalid crontab pattern. Valid range is {min}-{max}. \
 Invalid crontab pattern. Valid range is {min}-{max}. \

+ 1 - 1
celery/task/__init__.py

@@ -23,7 +23,7 @@ __all__ = [
 
 
 STATICA_HACK = True
 STATICA_HACK = True
 globals()['kcah_acitats'[::-1].upper()] = False
 globals()['kcah_acitats'[::-1].upper()] = False
-if STATICA_HACK:
+if STATICA_HACK:  # pragma: no cover
     # This is never executed, but tricks static analyzers (PyDev, PyCharm,
     # This is never executed, but tricks static analyzers (PyDev, PyCharm,
     # pylint, etc.) into knowing the types of these symbols, and what
     # pylint, etc.) into knowing the types of these symbols, and what
     # they contain.
     # they contain.

+ 8 - 12
celery/task/trace.py

@@ -21,6 +21,7 @@ import sys
 
 
 from warnings import warn
 from warnings import warn
 
 
+from billiard.einfo import ExceptionInfo
 from kombu.utils import kwdict
 from kombu.utils import kwdict
 
 
 from celery import current_app
 from celery import current_app
@@ -28,7 +29,6 @@ from celery import states, signals
 from celery._state import _task_stack
 from celery._state import _task_stack
 from celery.app import set_default_app
 from celery.app import set_default_app
 from celery.app.task import Task as BaseTask, Context
 from celery.app.task import Task as BaseTask, Context
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import Ignore, RetryTaskError
 from celery.exceptions import Ignore, RetryTaskError
 from celery.utils.log import get_logger
 from celery.utils.log import get_logger
 from celery.utils.objects import mro_lookup
 from celery.utils.objects import mro_lookup
@@ -260,6 +260,8 @@ def build_tracer(name, task, loader=None, hostname=None, store_errors=True,
                     except Exception as exc:
                     except Exception as exc:
                         _logger.error('Process cleanup failed: %r', exc,
                         _logger.error('Process cleanup failed: %r', exc,
                                       exc_info=True)
                                       exc_info=True)
+        except MemoryError:
+            raise
         except Exception as exc:
         except Exception as exc:
             if eager:
             if eager:
                 raise
                 raise
@@ -333,13 +335,9 @@ def setup_worker_optimizations(app):
     _tasks = app._tasks
     _tasks = app._tasks
 
 
     trace_task_ret = _fast_trace_task
     trace_task_ret = _fast_trace_task
-    try:
-        job = sys.modules['celery.worker.job']
-    except KeyError:
-        pass
-    else:
-        job.trace_task_ret = _fast_trace_task
-        job.__optimize__()
+    from celery.worker import job as job_module
+    job_module.trace_task_ret = _fast_trace_task
+    job_module.__optimize__()
 
 
 
 
 def reset_worker_optimizations():
 def reset_worker_optimizations():
@@ -353,10 +351,8 @@ def reset_worker_optimizations():
         BaseTask.__call__ = _patched.pop('BaseTask.__call__')
         BaseTask.__call__ = _patched.pop('BaseTask.__call__')
     except KeyError:
     except KeyError:
         pass
         pass
-    try:
-        sys.modules['celery.worker.job'].trace_task_ret = _trace_task_ret
-    except KeyError:
-        pass
+    from celery.worker import job as job_module
+    job_module.trace_task_ret = _trace_task_ret
 
 
 
 
 def _install_stack_protection():
 def _install_stack_protection():

+ 1 - 1
celery/tests/app/test_amqp.py

@@ -4,7 +4,7 @@ from kombu import Exchange, Queue
 from mock import Mock
 from mock import Mock
 
 
 from celery.app.amqp import Queues, TaskPublisher
 from celery.app.amqp import Queues, TaskPublisher
-from celery.tests.utils import AppCase
+from celery.tests.case import AppCase
 
 
 
 
 class test_TaskProducer(AppCase):
 class test_TaskProducer(AppCase):

+ 1 - 1
celery/tests/app/test_annotations.py

@@ -4,7 +4,7 @@ from celery.app.annotations import MapAnnotation, prepare
 from celery.task import task
 from celery.task import task
 from celery.utils.imports import qualname
 from celery.utils.imports import qualname
 
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 @task()
 @task()

+ 9 - 1
celery/tests/app/test_app.py

@@ -19,7 +19,7 @@ from celery.platforms import pyimplementation
 from celery.utils.serialization import pickle
 from celery.utils.serialization import pickle
 
 
 from celery.tests import config
 from celery.tests import config
-from celery.tests.utils import (
+from celery.tests.case import (
     Case,
     Case,
     mask_modules,
     mask_modules,
     platform_pyimp,
     platform_pyimp,
@@ -609,6 +609,14 @@ class test_App(Case):
                                  'hostname': 'lana'}
                                  'hostname': 'lana'}
         self.assertTrue(x)
         self.assertTrue(x)
 
 
+    def test_error_mail_disabled(self):
+        task = Mock()
+        x = ErrorMail(task)
+        x.should_send = Mock()
+        x.should_send.return_value = False
+        x.send(Mock(), Mock())
+        self.assertFalse(task.app.mail_admins.called)
+
 
 
 class test_defaults(Case):
 class test_defaults(Case):
 
 

+ 81 - 40
celery/tests/app/test_beat.py

@@ -5,16 +5,15 @@ import errno
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
 from mock import Mock, call, patch
 from mock import Mock, call, patch
 from nose import SkipTest
 from nose import SkipTest
+from pickle import dumps, loads
 
 
-from celery import current_app
 from celery import beat
 from celery import beat
 from celery import task
 from celery import task
 from celery.five import keys, string_t
 from celery.five import keys, string_t
 from celery.result import AsyncResult
 from celery.result import AsyncResult
 from celery.schedules import schedule
 from celery.schedules import schedule
-from celery.task.base import Task
 from celery.utils import uuid
 from celery.utils import uuid
-from celery.tests.utils import Case, patch_settings
+from celery.tests.case import AppCase, patch_settings
 
 
 
 
 class Object(object):
 class Object(object):
@@ -46,7 +45,7 @@ class MockService(object):
         self.stopped = True
         self.stopped = True
 
 
 
 
-class test_ScheduleEntry(Case):
+class test_ScheduleEntry(AppCase):
     Entry = beat.ScheduleEntry
     Entry = beat.ScheduleEntry
 
 
     def create_entry(self, **kwargs):
     def create_entry(self, **kwargs):
@@ -112,7 +111,7 @@ class mScheduler(beat.Scheduler):
                           'args': args,
                           'args': args,
                           'kwargs': kwargs,
                           'kwargs': kwargs,
                           'options': options})
                           'options': options})
-        return AsyncResult(uuid())
+        return AsyncResult(uuid(), app=self.app)
 
 
 
 
 class mSchedulerSchedulingError(mScheduler):
 class mSchedulerSchedulingError(mScheduler):
@@ -143,17 +142,17 @@ always_due = mocked_schedule(True, 1)
 always_pending = mocked_schedule(False, 1)
 always_pending = mocked_schedule(False, 1)
 
 
 
 
-class test_Scheduler(Case):
+class test_Scheduler(AppCase):
 
 
     def test_custom_schedule_dict(self):
     def test_custom_schedule_dict(self):
         custom = {'foo': 'bar'}
         custom = {'foo': 'bar'}
-        scheduler = mScheduler(schedule=custom, lazy=True)
+        scheduler = mScheduler(app=self.app, schedule=custom, lazy=True)
         self.assertIs(scheduler.data, custom)
         self.assertIs(scheduler.data, custom)
 
 
     def test_apply_async_uses_registered_task_instances(self):
     def test_apply_async_uses_registered_task_instances(self):
         through_task = [False]
         through_task = [False]
 
 
-        class MockTask(Task):
+        class MockTask(self.app.Task):
 
 
             @classmethod
             @classmethod
             def apply_async(cls, *args, **kwargs):
             def apply_async(cls, *args, **kwargs):
@@ -161,7 +160,7 @@ class test_Scheduler(Case):
 
 
         assert MockTask.name in MockTask._get_app().tasks
         assert MockTask.name in MockTask._get_app().tasks
 
 
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.apply_async(scheduler.Entry(task=MockTask.name))
         scheduler.apply_async(scheduler.Entry(task=MockTask.name))
         self.assertTrue(through_task[0])
         self.assertTrue(through_task[0])
 
 
@@ -172,7 +171,7 @@ class test_Scheduler(Case):
             pass
             pass
         not_sync.apply_async = Mock()
         not_sync.apply_async = Mock()
 
 
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         s._do_sync = Mock()
         s._do_sync = Mock()
         s.should_sync = Mock()
         s.should_sync = Mock()
         s.should_sync.return_value = True
         s.should_sync.return_value = True
@@ -186,16 +185,16 @@ class test_Scheduler(Case):
 
 
     @patch('celery.app.base.Celery.send_task')
     @patch('celery.app.base.Celery.send_task')
     def test_send_task(self, send_task):
     def test_send_task(self, send_task):
-        b = beat.Scheduler()
+        b = beat.Scheduler(app=self.app)
         b.send_task('tasks.add', countdown=10)
         b.send_task('tasks.add', countdown=10)
         send_task.assert_called_with('tasks.add', countdown=10)
         send_task.assert_called_with('tasks.add', countdown=10)
 
 
     def test_info(self):
     def test_info(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         self.assertIsInstance(scheduler.info, string_t)
         self.assertIsInstance(scheduler.info, string_t)
 
 
     def test_maybe_entry(self):
     def test_maybe_entry(self):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         entry = s.Entry(name='add every', task='tasks.add')
         entry = s.Entry(name='add every', task='tasks.add')
         self.assertIs(s._maybe_entry(entry.name, entry), entry)
         self.assertIs(s._maybe_entry(entry.name, entry), entry)
         self.assertTrue(s._maybe_entry('add every', {
         self.assertTrue(s._maybe_entry('add every', {
@@ -203,13 +202,13 @@ class test_Scheduler(Case):
         }))
         }))
 
 
     def test_set_schedule(self):
     def test_set_schedule(self):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         s.schedule = {'foo': 'bar'}
         s.schedule = {'foo': 'bar'}
         self.assertEqual(s.data, {'foo': 'bar'})
         self.assertEqual(s.data, {'foo': 'bar'})
 
 
     @patch('kombu.connection.Connection.ensure_connection')
     @patch('kombu.connection.Connection.ensure_connection')
     def test_ensure_connection_error_handler(self, ensure):
     def test_ensure_connection_error_handler(self, ensure):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         self.assertTrue(s._ensure_connected())
         self.assertTrue(s._ensure_connected())
         self.assertTrue(ensure.called)
         self.assertTrue(ensure.called)
         callback = ensure.call_args[0][0]
         callback = ensure.call_args[0][0]
@@ -217,29 +216,32 @@ class test_Scheduler(Case):
         callback(KeyError(), 5)
         callback(KeyError(), 5)
 
 
     def test_install_default_entries(self):
     def test_install_default_entries(self):
-        with patch_settings(CELERY_TASK_RESULT_EXPIRES=None,
+        with patch_settings(self.app,
+                            CELERY_TASK_RESULT_EXPIRES=None,
                             CELERYBEAT_SCHEDULE={}):
                             CELERYBEAT_SCHEDULE={}):
-            s = mScheduler()
+            s = mScheduler(app=self.app)
             s.install_default_entries({})
             s.install_default_entries({})
             self.assertNotIn('celery.backend_cleanup', s.data)
             self.assertNotIn('celery.backend_cleanup', s.data)
-        current_app.backend.supports_autoexpire = False
-        with patch_settings(CELERY_TASK_RESULT_EXPIRES=30,
+        self.app.backend.supports_autoexpire = False
+        with patch_settings(self.app,
+                            CELERY_TASK_RESULT_EXPIRES=30,
                             CELERYBEAT_SCHEDULE={}):
                             CELERYBEAT_SCHEDULE={}):
-            s = mScheduler()
+            s = mScheduler(app=self.app)
             s.install_default_entries({})
             s.install_default_entries({})
             self.assertIn('celery.backend_cleanup', s.data)
             self.assertIn('celery.backend_cleanup', s.data)
-        current_app.backend.supports_autoexpire = True
+        self.app.backend.supports_autoexpire = True
         try:
         try:
-            with patch_settings(CELERY_TASK_RESULT_EXPIRES=31,
+            with patch_settings(self.app,
+                                CELERY_TASK_RESULT_EXPIRES=31,
                                 CELERYBEAT_SCHEDULE={}):
                                 CELERYBEAT_SCHEDULE={}):
-                s = mScheduler()
+                s = mScheduler(app=self.app)
                 s.install_default_entries({})
                 s.install_default_entries({})
                 self.assertNotIn('celery.backend_cleanup', s.data)
                 self.assertNotIn('celery.backend_cleanup', s.data)
         finally:
         finally:
-            current_app.backend.supports_autoexpire = False
+            self.app.backend.supports_autoexpire = False
 
 
     def test_due_tick(self):
     def test_due_tick(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_due_tick',
         scheduler.add(name='test_due_tick',
                       schedule=always_due,
                       schedule=always_due,
                       args=(1, 2),
                       args=(1, 2),
@@ -248,33 +250,33 @@ class test_Scheduler(Case):
 
 
     @patch('celery.beat.error')
     @patch('celery.beat.error')
     def test_due_tick_SchedulingError(self, error):
     def test_due_tick_SchedulingError(self, error):
-        scheduler = mSchedulerSchedulingError()
+        scheduler = mSchedulerSchedulingError(app=self.app)
         scheduler.add(name='test_due_tick_SchedulingError',
         scheduler.add(name='test_due_tick_SchedulingError',
                       schedule=always_due)
                       schedule=always_due)
         self.assertEqual(scheduler.tick(), 1)
         self.assertEqual(scheduler.tick(), 1)
         self.assertTrue(error.called)
         self.assertTrue(error.called)
 
 
     def test_due_tick_RuntimeError(self):
     def test_due_tick_RuntimeError(self):
-        scheduler = mSchedulerRuntimeError()
+        scheduler = mSchedulerRuntimeError(app=self.app)
         scheduler.add(name='test_due_tick_RuntimeError',
         scheduler.add(name='test_due_tick_RuntimeError',
                       schedule=always_due)
                       schedule=always_due)
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
 
 
     def test_pending_tick(self):
     def test_pending_tick(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_pending_tick',
         scheduler.add(name='test_pending_tick',
                       schedule=always_pending)
                       schedule=always_pending)
         self.assertEqual(scheduler.tick(), 1)
         self.assertEqual(scheduler.tick(), 1)
 
 
     def test_honors_max_interval(self):
     def test_honors_max_interval(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         maxi = scheduler.max_interval
         maxi = scheduler.max_interval
         scheduler.add(name='test_honors_max_interval',
         scheduler.add(name='test_honors_max_interval',
                       schedule=mocked_schedule(False, maxi * 4))
                       schedule=mocked_schedule(False, maxi * 4))
         self.assertEqual(scheduler.tick(), maxi)
         self.assertEqual(scheduler.tick(), maxi)
 
 
     def test_ticks(self):
     def test_ticks(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         nums = [600, 300, 650, 120, 250, 36]
         nums = [600, 300, 650, 120, 250, 36]
         s = dict(('test_ticks%s' % i,
         s = dict(('test_ticks%s' % i,
                  {'schedule': mocked_schedule(False, j)})
                  {'schedule': mocked_schedule(False, j)})
@@ -283,20 +285,20 @@ class test_Scheduler(Case):
         self.assertEqual(scheduler.tick(), min(nums))
         self.assertEqual(scheduler.tick(), min(nums))
 
 
     def test_schedule_no_remain(self):
     def test_schedule_no_remain(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_schedule_no_remain',
         scheduler.add(name='test_schedule_no_remain',
                       schedule=mocked_schedule(False, None))
                       schedule=mocked_schedule(False, None))
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
 
 
     def test_interface(self):
     def test_interface(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.sync()
         scheduler.sync()
         scheduler.setup_schedule()
         scheduler.setup_schedule()
         scheduler.close()
         scheduler.close()
 
 
     def test_merge_inplace(self):
     def test_merge_inplace(self):
-        a = mScheduler()
-        b = mScheduler()
+        a = mScheduler(app=self.app)
+        b = mScheduler(app=self.app)
         a.update_from_dict({'foo': {'schedule': mocked_schedule(True, 10)},
         a.update_from_dict({'foo': {'schedule': mocked_schedule(True, 10)},
                             'bar': {'schedule': mocked_schedule(True, 20)}})
                             'bar': {'schedule': mocked_schedule(True, 20)}})
         b.update_from_dict({'bar': {'schedule': mocked_schedule(True, 40)},
         b.update_from_dict({'bar': {'schedule': mocked_schedule(True, 40)},
@@ -329,11 +331,12 @@ def create_persistent_scheduler(shelv=None):
     return MockPersistentScheduler, shelv
     return MockPersistentScheduler, shelv
 
 
 
 
-class test_PersistentScheduler(Case):
+class test_PersistentScheduler(AppCase):
 
 
     @patch('os.remove')
     @patch('os.remove')
     def test_remove_db(self, remove):
     def test_remove_db(self, remove):
-        s = create_persistent_scheduler()[0](schedule_filename='schedule')
+        s = create_persistent_scheduler()[0](app=self.app,
+                                             schedule_filename='schedule')
         s._remove_db()
         s._remove_db()
         remove.assert_has_calls(
         remove.assert_has_calls(
             [call('schedule' + suffix) for suffix in s.known_suffixes]
             [call('schedule' + suffix) for suffix in s.known_suffixes]
@@ -347,7 +350,8 @@ class test_PersistentScheduler(Case):
             s._remove_db()
             s._remove_db()
 
 
     def test_setup_schedule(self):
     def test_setup_schedule(self):
-        s = create_persistent_scheduler()[0](schedule_filename='schedule')
+        s = create_persistent_scheduler()[0](app=self.app,
+                                             schedule_filename='schedule')
         opens = s.persistence.open = Mock()
         opens = s.persistence.open = Mock()
         s._remove_db = Mock()
         s._remove_db = Mock()
 
 
@@ -362,6 +366,18 @@ class test_PersistentScheduler(Case):
         s._store = {'__version__': 1}
         s._store = {'__version__': 1}
         s.setup_schedule()
         s.setup_schedule()
 
 
+        s._store.clear = Mock()
+        op = s.persistence.open = Mock()
+        op.return_value = s._store
+        s._store['tz'] = 'FUNKY'
+        s.setup_schedule()
+        op.assert_called_with(s.schedule_filename, writeback=True)
+        s._store.clear.assert_called_with()
+        s._store['utc_enabled'] = False
+        s._store.clear = Mock()
+        s.setup_schedule()
+        s._store.clear.assert_called_with()
+
     def test_get_schedule(self):
     def test_get_schedule(self):
         s = create_persistent_scheduler()[0](schedule_filename='schedule')
         s = create_persistent_scheduler()[0](schedule_filename='schedule')
         s._store = {'entries': {}}
         s._store = {'entries': {}}
@@ -370,11 +386,15 @@ class test_PersistentScheduler(Case):
         self.assertDictEqual(s._store['entries'], s.schedule)
         self.assertDictEqual(s._store['entries'], s.schedule)
 
 
 
 
-class test_Service(Case):
+class test_Service(AppCase):
 
 
     def get_service(self):
     def get_service(self):
         Scheduler, mock_shelve = create_persistent_scheduler()
         Scheduler, mock_shelve = create_persistent_scheduler()
-        return beat.Service(scheduler_cls=Scheduler), mock_shelve
+        return beat.Service(app=self.app, scheduler_cls=Scheduler), mock_shelve
+
+    def test_pickleable(self):
+        s = beat.Service(app=self.app, scheduler_cls=Mock)
+        self.assertTrue(loads(dumps(s)))
 
 
     def test_start(self):
     def test_start(self):
         s, sh = self.get_service()
         s, sh = self.get_service()
@@ -425,7 +445,7 @@ class test_Service(Case):
         self.assertTrue(s._is_shutdown.isSet())
         self.assertTrue(s._is_shutdown.isSet())
 
 
 
 
-class test_EmbeddedService(Case):
+class test_EmbeddedService(AppCase):
 
 
     def test_start_stop_process(self):
     def test_start_stop_process(self):
         try:
         try:
@@ -466,3 +486,24 @@ class test_EmbeddedService(Case):
 
 
         s.stop()
         s.stop()
         self.assertTrue(s.service.stopped)
         self.assertTrue(s.service.stopped)
+
+
+class test_schedule(AppCase):
+
+    def test_maybe_make_aware(self):
+        x = schedule(10)
+        x.utc_enabled = True
+        d = x.maybe_make_aware(datetime.utcnow())
+        self.assertTrue(d.tzinfo)
+        x.utc_enabled = False
+        d2 = x.maybe_make_aware(datetime.utcnow())
+        self.assertIsNone(d2.tzinfo)
+
+    def test_to_local(self):
+        x = schedule(10)
+        x.utc_enabled = True
+        d = x.to_local(datetime.utcnow())
+        self.assertIsNone(d.tzinfo)
+        x.utc_enabled = False
+        d = x.to_local(datetime.utcnow())
+        self.assertTrue(d.tzinfo)

+ 46 - 43
celery/tests/app/test_builtins.py

@@ -2,93 +2,97 @@ from __future__ import absolute_import
 
 
 from mock import Mock, patch
 from mock import Mock, patch
 
 
-from celery import current_app as app, group, task, chord
+from celery import group, shared_task, chord
 from celery.app import builtins
 from celery.app import builtins
 from celery.canvas import Signature
 from celery.canvas import Signature
 from celery.five import range
 from celery.five import range
 from celery._state import _task_stack
 from celery._state import _task_stack
-from celery.tests.utils import Case
+from celery.tests.case import AppCase
 
 
 
 
-@task()
+@shared_task()
 def add(x, y):
 def add(x, y):
     return x + y
     return x + y
 
 
 
 
-@task()
+@shared_task()
 def xsum(x):
 def xsum(x):
     return sum(x)
     return sum(x)
 
 
 
 
-class test_backend_cleanup(Case):
+class test_backend_cleanup(AppCase):
 
 
     def test_run(self):
     def test_run(self):
-        prev = app.backend
-        app.backend.cleanup = Mock()
-        app.backend.cleanup.__name__ = 'cleanup'
+        prev = self.app.backend
+        self.app.backend.cleanup = Mock()
+        self.app.backend.cleanup.__name__ = 'cleanup'
         try:
         try:
-            cleanup_task = builtins.add_backend_cleanup_task(app)
+            cleanup_task = builtins.add_backend_cleanup_task(self.app)
             cleanup_task()
             cleanup_task()
-            self.assertTrue(app.backend.cleanup.called)
+            self.assertTrue(self.app.backend.cleanup.called)
         finally:
         finally:
-            app.backend = prev
+            self.app.backend = prev
 
 
 
 
-class test_map(Case):
+class test_map(AppCase):
 
 
     def test_run(self):
     def test_run(self):
 
 
-        @app.task()
+        @self.app.task()
         def map_mul(x):
         def map_mul(x):
             return x[0] * x[1]
             return x[0] * x[1]
 
 
-        res = app.tasks['celery.map'](map_mul, [(2, 2), (4, 4), (8, 8)])
+        res = self.app.tasks['celery.map'](
+            map_mul, [(2, 2), (4, 4), (8, 8)],
+        )
         self.assertEqual(res, [4, 16, 64])
         self.assertEqual(res, [4, 16, 64])
 
 
 
 
-class test_starmap(Case):
+class test_starmap(AppCase):
 
 
     def test_run(self):
     def test_run(self):
 
 
-        @app.task()
+        @self.app.task()
         def smap_mul(x, y):
         def smap_mul(x, y):
             return x * y
             return x * y
 
 
-        res = app.tasks['celery.starmap'](smap_mul, [(2, 2), (4, 4), (8, 8)])
+        res = self.app.tasks['celery.starmap'](
+            smap_mul, [(2, 2), (4, 4), (8, 8)],
+        )
         self.assertEqual(res, [4, 16, 64])
         self.assertEqual(res, [4, 16, 64])
 
 
 
 
-class test_chunks(Case):
+class test_chunks(AppCase):
 
 
     @patch('celery.canvas.chunks.apply_chunks')
     @patch('celery.canvas.chunks.apply_chunks')
     def test_run(self, apply_chunks):
     def test_run(self, apply_chunks):
 
 
-        @app.task()
+        @self.app.task()
         def chunks_mul(l):
         def chunks_mul(l):
             return l
             return l
 
 
-        app.tasks['celery.chunks'](
+        self.app.tasks['celery.chunks'](
             chunks_mul, [(2, 2), (4, 4), (8, 8)], 1,
             chunks_mul, [(2, 2), (4, 4), (8, 8)], 1,
         )
         )
         self.assertTrue(apply_chunks.called)
         self.assertTrue(apply_chunks.called)
 
 
 
 
-class test_group(Case):
+class test_group(AppCase):
 
 
-    def setUp(self):
-        self.prev = app.tasks.get('celery.group')
-        self.task = builtins.add_group_task(app)()
+    def setup(self):
+        self.prev = self.app.tasks.get('celery.group')
+        self.task = builtins.add_group_task(self.app)()
 
 
-    def tearDown(self):
-        app.tasks['celery.group'] = self.prev
+    def teardown(self):
+        self.app.tasks['celery.group'] = self.prev
 
 
     def test_apply_async_eager(self):
     def test_apply_async_eager(self):
         self.task.apply = Mock()
         self.task.apply = Mock()
-        app.conf.CELERY_ALWAYS_EAGER = True
+        self.app.conf.CELERY_ALWAYS_EAGER = True
         try:
         try:
             self.task.apply_async()
             self.task.apply_async()
         finally:
         finally:
-            app.conf.CELERY_ALWAYS_EAGER = False
+            self.app.conf.CELERY_ALWAYS_EAGER = False
         self.assertTrue(self.task.apply.called)
         self.assertTrue(self.task.apply.called)
 
 
     def test_apply(self):
     def test_apply(self):
@@ -125,14 +129,14 @@ class test_group(Case):
             _task_stack.pop()
             _task_stack.pop()
 
 
 
 
-class test_chain(Case):
+class test_chain(AppCase):
 
 
-    def setUp(self):
-        self.prev = app.tasks.get('celery.chain')
-        self.task = builtins.add_chain_task(app)()
+    def setup(self):
+        self.prev = self.app.tasks.get('celery.chain')
+        self.task = builtins.add_chain_task(self.app)()
 
 
-    def tearDown(self):
-        app.tasks['celery.chain'] = self.prev
+    def teardown(self):
+        self.app.tasks['celery.chain'] = self.prev
 
 
     def test_apply_async(self):
     def test_apply_async(self):
         c = add.s(2, 2) | add.s(4) | add.s(8)
         c = add.s(2, 2) | add.s(4) | add.s(8)
@@ -185,14 +189,14 @@ class test_chain(Case):
             self.assertListEqual(task.options['link_error'], [s('error')])
             self.assertListEqual(task.options['link_error'], [s('error')])
 
 
 
 
-class test_chord(Case):
+class test_chord(AppCase):
 
 
-    def setUp(self):
-        self.prev = app.tasks.get('celery.chord')
-        self.task = builtins.add_chord_task(app)()
+    def setup(self):
+        self.prev = self.app.tasks.get('celery.chord')
+        self.task = builtins.add_chord_task(self.app)()
 
 
-    def tearDown(self):
-        app.tasks['celery.chord'] = self.prev
+    def teardown(self):
+        self.app.tasks['celery.chord'] = self.prev
 
 
     def test_apply_async(self):
     def test_apply_async(self):
         x = chord([add.s(i, i) for i in range(10)], body=xsum.s())
         x = chord([add.s(i, i) for i in range(10)], body=xsum.s())
@@ -213,11 +217,10 @@ class test_chord(Case):
         self.assertEqual(body.options['chord'], 'some_chord_id')
         self.assertEqual(body.options['chord'], 'some_chord_id')
 
 
     def test_apply_eager(self):
     def test_apply_eager(self):
-        app.conf.CELERY_ALWAYS_EAGER = True
+        self.app.conf.CELERY_ALWAYS_EAGER = True
         try:
         try:
             x = chord([add.s(i, i) for i in range(10)], body=xsum.s())
             x = chord([add.s(i, i) for i in range(10)], body=xsum.s())
             r = x.apply_async()
             r = x.apply_async()
             self.assertEqual(r.get(), 90)
             self.assertEqual(r.get(), 90)
-
         finally:
         finally:
-            app.conf.CELERY_ALWAYS_EAGER = False
+            self.app.conf.CELERY_ALWAYS_EAGER = False

+ 1 - 1
celery/tests/app/test_celery.py

@@ -1,5 +1,5 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 import celery
 import celery
 
 

+ 1 - 1
celery/tests/app/test_control.py

@@ -9,7 +9,7 @@ from kombu.pidbox import Mailbox
 from celery.app import control
 from celery.app import control
 from celery.task import task
 from celery.task import task
 from celery.utils import uuid
 from celery.utils import uuid
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 
 
 @task()
 @task()

+ 1 - 1
celery/tests/app/test_defaults.py

@@ -7,7 +7,7 @@ from mock import Mock, patch
 
 
 from celery.app.defaults import NAMESPACES
 from celery.app.defaults import NAMESPACES
 
 
-from celery.tests.utils import Case, pypy_version, sys_platform
+from celery.tests.case import Case, pypy_version, sys_platform
 
 
 
 
 class test_defaults(Case):
 class test_defaults(Case):

+ 20 - 0
celery/tests/app/test_exceptions.py

@@ -0,0 +1,20 @@
+from __future__ import absolute_import
+
+import pickle
+
+from datetime import datetime
+
+from celery.exceptions import RetryTaskError
+
+from celery.tests.case import Case
+
+
+class test_RetryTaskError(Case):
+
+    def test_when_datetime(self):
+        x = RetryTaskError('foo', KeyError(), when=datetime.utcnow())
+        self.assertTrue(x.humanize())
+
+    def test_pickleable(self):
+        x = RetryTaskError('foo', KeyError(), when=datetime.utcnow())
+        self.assertTrue(pickle.loads(pickle.dumps(x)))

+ 53 - 9
celery/tests/app/test_loaders.py

@@ -7,7 +7,6 @@ import warnings
 from mock import Mock, patch
 from mock import Mock, patch
 
 
 from celery import loaders
 from celery import loaders
-from celery.app import app_or_default
 from celery.exceptions import (
 from celery.exceptions import (
     NotConfigured,
     NotConfigured,
     CPendingDeprecationWarning,
     CPendingDeprecationWarning,
@@ -18,7 +17,7 @@ from celery.loaders.app import AppLoader
 from celery.utils.imports import NotAPackage
 from celery.utils.imports import NotAPackage
 from celery.utils.mail import SendmailWarning
 from celery.utils.mail import SendmailWarning
 
 
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 
 
 class DummyLoader(base.BaseLoader):
 class DummyLoader(base.BaseLoader):
@@ -47,7 +46,7 @@ class test_loaders(AppCase):
             self.assertIs(loaders.load_settings(), self.app.conf)
             self.assertIs(loaders.load_settings(), self.app.conf)
 
 
 
 
-class test_LoaderBase(Case):
+class test_LoaderBase(AppCase):
     message_options = {'subject': 'Subject',
     message_options = {'subject': 'Subject',
                        'body': 'Body',
                        'body': 'Body',
                        'sender': 'x@x.com',
                        'sender': 'x@x.com',
@@ -58,14 +57,31 @@ class test_LoaderBase(Case):
                       'password': 'qwerty',
                       'password': 'qwerty',
                       'timeout': 3}
                       'timeout': 3}
 
 
-    def setUp(self):
-        self.loader = DummyLoader()
-        self.app = app_or_default()
+    def setup(self):
+        self.loader = DummyLoader(app=self.app)
 
 
     def test_handlers_pass(self):
     def test_handlers_pass(self):
         self.loader.on_task_init('foo.task', 'feedface-cafebabe')
         self.loader.on_task_init('foo.task', 'feedface-cafebabe')
         self.loader.on_worker_init()
         self.loader.on_worker_init()
 
 
+    def test_now(self):
+        self.assertTrue(self.loader.now(utc=True))
+        self.assertTrue(self.loader.now(utc=False))
+
+    def test_read_configuration_no_env(self):
+        self.assertDictEqual(
+            base.BaseLoader().read_configuration('FOO_X_S_WE_WQ_Q_WE'),
+            {},
+        )
+
+    def test_autodiscovery(self):
+        with patch('celery.loaders.base.autodiscover_tasks') as auto:
+            auto.return_value = [Mock()]
+            auto.return_value[0].__name__ = 'moo'
+            self.loader.autodiscover_tasks(['A', 'B'])
+            self.assertIn('moo', self.loader.task_modules)
+            self.loader.task_modules.discard('moo')
+
     def test_import_task_module(self):
     def test_import_task_module(self):
         self.assertEqual(sys, self.loader.import_task_module('sys'))
         self.assertEqual(sys, self.loader.import_task_module('sys'))
 
 
@@ -166,6 +182,8 @@ class test_DefaultLoader(Case):
         l = default.Loader()
         l = default.Loader()
         with self.assertWarnsRegex(NotConfigured, r'make sure it exists'):
         with self.assertWarnsRegex(NotConfigured, r'make sure it exists'):
             l.read_configuration()
             l.read_configuration()
+        default.C_WNOCONF = False
+        l.read_configuration()
 
 
     def test_read_configuration(self):
     def test_read_configuration(self):
         from types import ModuleType
         from types import ModuleType
@@ -222,10 +240,9 @@ class test_DefaultLoader(Case):
         self.assertTrue(context_executed[0])
         self.assertTrue(context_executed[0])
 
 
 
 
-class test_AppLoader(Case):
+class test_AppLoader(AppCase):
 
 
-    def setUp(self):
-        self.app = app_or_default()
+    def setup(self):
         self.loader = AppLoader(app=self.app)
         self.loader = AppLoader(app=self.app)
 
 
     def test_on_worker_init(self):
     def test_on_worker_init(self):
@@ -237,3 +254,30 @@ class test_AppLoader(Case):
             self.assertIn('subprocess', sys.modules)
             self.assertIn('subprocess', sys.modules)
         finally:
         finally:
             self.app.conf.CELERY_IMPORTS = prev
             self.app.conf.CELERY_IMPORTS = prev
+
+
+class test_autodiscovery(Case):
+
+    def test_autodiscover_tasks(self):
+        base._RACE_PROTECTION = True
+        try:
+            base.autodiscover_tasks(['foo'])
+        finally:
+            base._RACE_PROTECTION = False
+        with patch('celery.loaders.base.find_related_module') as frm:
+            base.autodiscover_tasks(['foo'])
+            self.assertTrue(frm.called)
+
+    def test_find_related_module(self):
+        with patch('importlib.import_module') as imp:
+            with patch('imp.find_module') as find:
+                imp.return_value = Mock()
+                imp.return_value.__path__ = 'foo'
+                base.find_related_module(base, 'tasks')
+
+                imp.side_effect = AttributeError()
+                base.find_related_module(base, 'tasks')
+                imp.side_effect = None
+
+                find.side_effect = ImportError()
+                base.find_related_module(base, 'tasks')

+ 43 - 15
celery/tests/app/test_log.py

@@ -7,7 +7,6 @@ from tempfile import mktemp
 from mock import patch, Mock
 from mock import patch, Mock
 from nose import SkipTest
 from nose import SkipTest
 
 
-from celery import current_app
 from celery import signals
 from celery import signals
 from celery.app.log import Logging, TaskFormatter
 from celery.app.log import Logging, TaskFormatter
 from celery.utils.log import LoggingProxy
 from celery.utils.log import LoggingProxy
@@ -17,13 +16,13 @@ from celery.utils.log import (
     ColorFormatter,
     ColorFormatter,
     logger as base_logger,
     logger as base_logger,
     get_task_logger,
     get_task_logger,
+    in_sighandler,
+    _patch_logger_class,
 )
 )
-from celery.tests.utils import (
+from celery.tests.case import (
     AppCase, Case, override_stdouts, wrap_logger, get_handlers,
     AppCase, Case, override_stdouts, wrap_logger, get_handlers,
 )
 )
 
 
-log = current_app.log
-
 
 
 class test_TaskFormatter(Case):
 class test_TaskFormatter(Case):
 
 
@@ -64,6 +63,15 @@ class test_ColorFormatter(Case):
         if sys.version_info[0] == 2:
         if sys.version_info[0] == 2:
             self.assertTrue(safe_str.called)
             self.assertTrue(safe_str.called)
 
 
+    @patch('logging.Formatter.format')
+    def test_format_object(self, _format):
+        x = ColorFormatter(object())
+        x.use_color = True
+        record = Mock()
+        record.levelname = 'ERROR'
+        record.msg = object()
+        self.assertTrue(x.format(record))
+
     @patch('celery.utils.log.safe_str')
     @patch('celery.utils.log.safe_str')
     def test_format_raises(self, safe_str):
     def test_format_raises(self, safe_str):
         x = ColorFormatter('HELLO')
         x = ColorFormatter('HELLO')
@@ -110,7 +118,7 @@ class test_ColorFormatter(Case):
 class test_default_logger(AppCase):
 class test_default_logger(AppCase):
 
 
     def setup(self):
     def setup(self):
-        self.setup_logger = log.setup_logger
+        self.setup_logger = self.app.log.setup_logger
         self.get_logger = lambda n=None: get_logger(n) if n else logging.root
         self.get_logger = lambda n=None: get_logger(n) if n else logging.root
         signals.setup_logging.receivers[:] = []
         signals.setup_logging.receivers[:] = []
         Logging._setup = False
         Logging._setup = False
@@ -124,12 +132,12 @@ class test_default_logger(AppCase):
         self.assertIs(logger.parent, logging.root)
         self.assertIs(logger.parent, logging.root)
 
 
     def test_setup_logging_subsystem_misc(self):
     def test_setup_logging_subsystem_misc(self):
-        log.setup_logging_subsystem(loglevel=None)
+        self.app.log.setup_logging_subsystem(loglevel=None)
 
 
     def test_setup_logging_subsystem_misc2(self):
     def test_setup_logging_subsystem_misc2(self):
         self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = True
         self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = True
         try:
         try:
-            log.setup_logging_subsystem()
+            self.app.log.setup_logging_subsystem()
         finally:
         finally:
             self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = False
             self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = False
 
 
@@ -142,14 +150,14 @@ class test_default_logger(AppCase):
         logger.handlers[:] = []
         logger.handlers[:] = []
 
 
     def test_setup_logging_subsystem_colorize(self):
     def test_setup_logging_subsystem_colorize(self):
-        log.setup_logging_subsystem(colorize=None)
-        log.setup_logging_subsystem(colorize=True)
+        self.app.log.setup_logging_subsystem(colorize=None)
+        self.app.log.setup_logging_subsystem(colorize=True)
 
 
     def test_setup_logging_subsystem_no_mputil(self):
     def test_setup_logging_subsystem_no_mputil(self):
         from celery.utils import log as logtools
         from celery.utils import log as logtools
         mputil, logtools.mputil = logtools.mputil, None
         mputil, logtools.mputil = logtools.mputil, None
         try:
         try:
-            log.setup_logging_subsystem()
+            self.app.log.setup_logging_subsystem()
         finally:
         finally:
             logtools.mputil = mputil
             logtools.mputil = mputil
 
 
@@ -203,11 +211,14 @@ class test_default_logger(AppCase):
                                    root=False)
                                    root=False)
         try:
         try:
             with wrap_logger(logger) as sio:
             with wrap_logger(logger) as sio:
-                log.redirect_stdouts_to_logger(logger, loglevel=logging.ERROR)
+                self.app.log.redirect_stdouts_to_logger(
+                    logger, loglevel=logging.ERROR,
+                )
                 logger.error('foo')
                 logger.error('foo')
                 self.assertIn('foo', sio.getvalue())
                 self.assertIn('foo', sio.getvalue())
-                log.redirect_stdouts_to_logger(logger, stdout=False,
-                                               stderr=False)
+                self.app.log.redirect_stdouts_to_logger(
+                    logger, stdout=False, stderr=False,
+                )
         finally:
         finally:
             sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
             sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
 
 
@@ -231,6 +242,11 @@ class test_default_logger(AppCase):
             p.close()
             p.close()
             self.assertFalse(p.isatty())
             self.assertFalse(p.isatty())
 
 
+            with override_stdouts() as (stdout, stderr):
+                with in_sighandler():
+                    p.write('foo')
+                    self.assertTrue(stderr.getvalue())
+
     def test_logging_proxy_recurse_protection(self):
     def test_logging_proxy_recurse_protection(self):
         logger = self.setup_logger(loglevel=logging.ERROR, logfile=None,
         logger = self.setup_logger(loglevel=logging.ERROR, logfile=None,
                                    root=False)
                                    root=False)
@@ -250,7 +266,7 @@ class test_task_logger(test_default_logger):
         logging.root.manager.loggerDict.pop(logger.name, None)
         logging.root.manager.loggerDict.pop(logger.name, None)
         self.uid = uuid()
         self.uid = uuid()
 
 
-        @current_app.task
+        @self.app.task
         def test_task():
         def test_task():
             pass
             pass
         self.get_logger().handlers = []
         self.get_logger().handlers = []
@@ -263,12 +279,24 @@ class test_task_logger(test_default_logger):
         _task_stack.pop()
         _task_stack.pop()
 
 
     def setup_logger(self, *args, **kwargs):
     def setup_logger(self, *args, **kwargs):
-        return log.setup_task_loggers(*args, **kwargs)
+        return self.app.log.setup_task_loggers(*args, **kwargs)
 
 
     def get_logger(self, *args, **kwargs):
     def get_logger(self, *args, **kwargs):
         return get_task_logger("test_task_logger")
         return get_task_logger("test_task_logger")
 
 
 
 
+class test_patch_logger_cls(Case):
+
+    def test_patches(self):
+        _patch_logger_class()
+        self.assertTrue(logging.getLoggerClass()._signal_safe)
+        _patch_logger_class()
+        self.assertTrue(logging.getLoggerClass()._signal_safe)
+
+        with in_sighandler():
+            logging.getLoggerClass().log(get_logger('test'))
+
+
 class MockLogger(logging.Logger):
 class MockLogger(logging.Logger):
     _records = None
     _records = None
 
 

+ 106 - 102
celery/tests/app/test_routes.py

@@ -1,19 +1,20 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
-from functools import wraps
+from contextlib import contextmanager
 
 
 from kombu import Exchange
 from kombu import Exchange
 from kombu.utils.functional import maybe_promise
 from kombu.utils.functional import maybe_promise
 
 
-from celery import current_app
 from celery.app import routes
 from celery.app import routes
 from celery.exceptions import QueueNotFound
 from celery.exceptions import QueueNotFound
 from celery.task import task
 from celery.task import task
-from celery.tests.utils import Case
+from celery.utils.functional import LRUCache
 
 
+from celery.tests.case import AppCase
 
 
-def Router(*args, **kwargs):
-    return routes.Router(*args, app=current_app, **kwargs)
+
+def Router(app, *args, **kwargs):
+    return routes.Router(*args, app=app, **kwargs)
 
 
 
 
 @task()
 @task()
@@ -21,72 +22,70 @@ def mytask():
     pass
     pass
 
 
 
 
-def E(queues):
+def E(app, queues):
     def expand(answer):
     def expand(answer):
-        return Router([], queues).expand_destination(answer)
+        return Router(app, [], queues).expand_destination(answer)
     return expand
     return expand
 
 
 
 
-def with_queues(**queues):
-
-    def patch_fun(fun):
-
-        @wraps(fun)
-        def __inner(*args, **kwargs):
-            app = current_app
-            prev_queues = app.conf.CELERY_QUEUES
-            prev_Queues = app.amqp.queues
-            app.conf.CELERY_QUEUES = queues
-            app.amqp.queues = app.amqp.Queues(queues)
-            try:
-                return fun(*args, **kwargs)
-            finally:
-                app.conf.CELERY_QUEUES = prev_queues
-                app.amqp.queues = prev_Queues
-        return __inner
-    return patch_fun
-
-
-a_queue = {'exchange': 'fooexchange',
-           'exchange_type': 'fanout',
-           'routing_key': 'xuzzy'}
-b_queue = {'exchange': 'barexchange',
-           'exchange_type': 'topic',
-           'routing_key': 'b.b.#'}
-d_queue = {'exchange': current_app.conf.CELERY_DEFAULT_EXCHANGE,
-           'exchange_type': current_app.conf.CELERY_DEFAULT_EXCHANGE_TYPE,
-           'routing_key': current_app.conf.CELERY_DEFAULT_ROUTING_KEY}
-
-
-class RouteCase(Case):
-    pass
+@contextmanager
+def _queues(app, **queues):
+    prev_queues = app.conf.CELERY_QUEUES
+    prev_Queues = app.amqp.queues
+    app.conf.CELERY_QUEUES = queues
+    app.amqp.queues = app.amqp.Queues(queues)
+    try:
+        yield
+    finally:
+        app.conf.CELERY_QUEUES = prev_queues
+        app.amqp.queues = prev_Queues
+
+
+class RouteCase(AppCase):
+
+    def setup(self):
+        self.a_queue = {
+            'exchange': 'fooexchange',
+            'exchange_type': 'fanout',
+            'routing_key': 'xuzzy',
+        }
+        self.b_queue = {
+            'exchange': 'barexchange',
+            'exchange_type': 'topic',
+            'routing_key': 'b.b.#',
+        }
+        self.d_queue = {
+            'exchange': self.app.conf.CELERY_DEFAULT_EXCHANGE,
+            'exchange_type': self.app.conf.CELERY_DEFAULT_EXCHANGE_TYPE,
+            'routing_key': self.app.conf.CELERY_DEFAULT_ROUTING_KEY,
+        }
 
 
 
 
 class test_MapRoute(RouteCase):
 class test_MapRoute(RouteCase):
 
 
-    @with_queues(foo=a_queue, bar=b_queue)
     def test_route_for_task_expanded_route(self):
     def test_route_for_task_expanded_route(self):
-        expand = E(current_app.amqp.queues)
-        route = routes.MapRoute({mytask.name: {'queue': 'foo'}})
-        self.assertEqual(
-            expand(route.route_for_task(mytask.name))['queue'].name,
-            'foo',
-        )
-        self.assertIsNone(route.route_for_task('celery.awesome'))
-
-    @with_queues(foo=a_queue, bar=b_queue)
+        with _queues(self.app, foo=self.a_queue, bar=self.b_queue):
+            expand = E(self.app, self.app.amqp.queues)
+            route = routes.MapRoute({mytask.name: {'queue': 'foo'}})
+            self.assertEqual(
+                expand(route.route_for_task(mytask.name))['queue'].name,
+                'foo',
+            )
+            self.assertIsNone(route.route_for_task('celery.awesome'))
+
     def test_route_for_task(self):
     def test_route_for_task(self):
-        expand = E(current_app.amqp.queues)
-        route = routes.MapRoute({mytask.name: b_queue})
-        self.assertDictContainsSubset(
-            b_queue,
-            expand(route.route_for_task(mytask.name)),
-        )
-        self.assertIsNone(route.route_for_task('celery.awesome'))
+        with _queues(self.app, foo=self.a_queue, bar=self.b_queue):
+            expand = E(self.app, self.app.amqp.queues)
+            route = routes.MapRoute({mytask.name: self.b_queue})
+            self.assertDictContainsSubset(
+                self.b_queue,
+                expand(route.route_for_task(mytask.name)),
+            )
+            self.assertIsNone(route.route_for_task('celery.awesome'))
 
 
     def test_expand_route_not_found(self):
     def test_expand_route_not_found(self):
-        expand = E(current_app.amqp.Queues(
-            current_app.conf.CELERY_QUEUES, False))
+        expand = E(self.app, self.app.amqp.Queues(
+                   self.app.conf.CELERY_QUEUES, False))
         route = routes.MapRoute({'a': {'queue': 'x'}})
         route = routes.MapRoute({'a': {'queue': 'x'}})
         with self.assertRaises(QueueNotFound):
         with self.assertRaises(QueueNotFound):
             expand(route.route_for_task('a'))
             expand(route.route_for_task('a'))
@@ -95,61 +94,66 @@ class test_MapRoute(RouteCase):
 class test_lookup_route(RouteCase):
 class test_lookup_route(RouteCase):
 
 
     def test_init_queues(self):
     def test_init_queues(self):
-        router = Router(queues=None)
+        router = Router(self.app, queues=None)
         self.assertDictEqual(router.queues, {})
         self.assertDictEqual(router.queues, {})
 
 
-    @with_queues(foo=a_queue, bar=b_queue)
     def test_lookup_takes_first(self):
     def test_lookup_takes_first(self):
-        R = routes.prepare(({mytask.name: {'queue': 'bar'}},
-                            {mytask.name: {'queue': 'foo'}}))
-        router = Router(R, current_app.amqp.queues)
-        self.assertEqual(router.route({}, mytask.name,
-                         args=[1, 2], kwargs={})['queue'].name, 'bar')
+        with _queues(self.app, foo=self.a_queue, bar=self.b_queue):
+            R = routes.prepare(({mytask.name: {'queue': 'bar'}},
+                                {mytask.name: {'queue': 'foo'}}))
+            router = Router(self.app, R, self.app.amqp.queues)
+            self.assertEqual(router.route({}, mytask.name,
+                             args=[1, 2], kwargs={})['queue'].name, 'bar')
 
 
-    @with_queues()
     def test_expands_queue_in_options(self):
     def test_expands_queue_in_options(self):
-        R = routes.prepare(())
-        router = Router(R, current_app.amqp.queues, create_missing=True)
-        # apply_async forwards all arguments, even exchange=None etc,
-        # so need to make sure it's merged correctly.
-        route = router.route({'queue': 'testq',
-                              'exchange': None,
-                              'routing_key': None,
-                              'immediate': False},
-                             mytask.name,
-                             args=[1, 2], kwargs={})
-        self.assertEqual(route['queue'].name, 'testq')
-        self.assertEqual(route['queue'].exchange, Exchange('testq'))
-        self.assertEqual(route['queue'].routing_key, 'testq')
-        self.assertEqual(route['immediate'], False)
-
-    @with_queues(foo=a_queue, bar=b_queue)
+        with _queues(self.app):
+            R = routes.prepare(())
+            router = Router(
+                self.app, R, self.app.amqp.queues, create_missing=True,
+            )
+            # apply_async forwards all arguments, even exchange=None etc,
+            # so need to make sure it's merged correctly.
+            route = router.route(
+                {'queue': 'testq',
+                 'exchange': None,
+                 'routing_key': None,
+                 'immediate': False},
+                mytask.name,
+                args=[1, 2], kwargs={},
+            )
+            self.assertEqual(route['queue'].name, 'testq')
+            self.assertEqual(route['queue'].exchange, Exchange('testq'))
+            self.assertEqual(route['queue'].routing_key, 'testq')
+            self.assertEqual(route['immediate'], False)
+
     def test_expand_destination_string(self):
     def test_expand_destination_string(self):
-        x = Router({}, current_app.amqp.queues)
-        dest = x.expand_destination('foo')
-        self.assertEqual(dest['queue'].name, 'foo')
+        with _queues(self.app, foo=self.a_queue, bar=self.b_queue):
+            x = Router(self.app, {}, self.app.amqp.queues)
+            dest = x.expand_destination('foo')
+            self.assertEqual(dest['queue'].name, 'foo')
 
 
-    @with_queues(foo=a_queue, bar=b_queue, **{
-        current_app.conf.CELERY_DEFAULT_QUEUE: d_queue})
     def test_lookup_paths_traversed(self):
     def test_lookup_paths_traversed(self):
-        R = routes.prepare(({'celery.xaza': {'queue': 'bar'}},
-                            {mytask.name: {'queue': 'foo'}}))
-        router = Router(R, current_app.amqp.queues)
-        self.assertEqual(router.route({}, mytask.name,
-                         args=[1, 2], kwargs={})['queue'].name, 'foo')
-        self.assertEqual(
-            router.route({}, 'celery.poza')['queue'].name,
-            current_app.conf.CELERY_DEFAULT_QUEUE,
-        )
-
-
-class test_prepare(Case):
+        with _queues(self.app, foo=self.a_queue, bar=self.b_queue, **{
+                self.app.conf.CELERY_DEFAULT_QUEUE: self.d_queue}):
+            R = routes.prepare((
+                {'celery.xaza': {'queue': 'bar'}},
+                {mytask.name: {'queue': 'foo'}}
+            ))
+            router = Router(self.app, R, self.app.amqp.queues)
+            self.assertEqual(router.route({}, mytask.name,
+                             args=[1, 2], kwargs={})['queue'].name, 'foo')
+            self.assertEqual(
+                router.route({}, 'celery.poza')['queue'].name,
+                self.app.conf.CELERY_DEFAULT_QUEUE,
+            )
+
+
+class test_prepare(AppCase):
 
 
     def test_prepare(self):
     def test_prepare(self):
-        from celery.datastructures import LRUCache
         o = object()
         o = object()
         R = [{'foo': 'bar'},
         R = [{'foo': 'bar'},
-             'celery.datastructures.LRUCache', o]
+             'celery.utils.functional.LRUCache', o]
         p = routes.prepare(R)
         p = routes.prepare(R)
         self.assertIsInstance(p[0], routes.MapRoute)
         self.assertIsInstance(p[0], routes.MapRoute)
         self.assertIsInstance(maybe_promise(p[1]), LRUCache)
         self.assertIsInstance(maybe_promise(p[1]), LRUCache)

+ 1 - 1
celery/tests/app/test_utils.py

@@ -5,7 +5,7 @@ from collections import Mapping, MutableMapping
 from celery import Celery
 from celery import Celery
 from celery.app.utils import Settings, bugreport
 from celery.app.utils import Settings, bugreport
 
 
-from celery.tests.utils import AppCase, Case, Mock
+from celery.tests.case import AppCase, Case, Mock
 
 
 
 
 class TestSettings(Case):
 class TestSettings(Case):

+ 6 - 4
celery/tests/backends/test_amqp.py

@@ -7,18 +7,18 @@ from contextlib import contextmanager
 from datetime import timedelta
 from datetime import timedelta
 from pickle import dumps, loads
 from pickle import dumps, loads
 
 
+from billiard.einfo import ExceptionInfo
 from mock import patch
 from mock import patch
 
 
 from celery import current_app
 from celery import current_app
 from celery import states
 from celery import states
 from celery.app import app_or_default
 from celery.app import app_or_default
 from celery.backends.amqp import AMQPBackend
 from celery.backends.amqp import AMQPBackend
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import TimeoutError
 from celery.exceptions import TimeoutError
 from celery.five import Empty, Queue, range
 from celery.five import Empty, Queue, range
 from celery.utils import uuid
 from celery.utils import uuid
 
 
-from celery.tests.utils import AppCase, sleepdeprived, Mock
+from celery.tests.case import AppCase, sleepdeprived, Mock
 
 
 
 
 class SomeClass(object):
 class SomeClass(object):
@@ -212,8 +212,10 @@ class test_AMQPBackend(AppCase):
             results.queue.clear()
             results.queue.clear()
             assert not results.qsize()
             assert not results.qsize()
             backend._cache[tid] = 'hello'
             backend._cache[tid] = 'hello'
-            self.assertEqual(backend.get_task_meta(tid), 'hello',
-                            'Returns cache if no new states')
+            self.assertEqual(
+                backend.get_task_meta(tid), 'hello',
+                'Returns cache if no new states',
+            )
 
 
     def test_wait_for(self):
     def test_wait_for(self):
         b = self.create_backend()
         b = self.create_backend()

+ 1 - 1
celery/tests/backends/test_backends.py

@@ -6,7 +6,7 @@ from celery import current_app
 from celery import backends
 from celery import backends
 from celery.backends.amqp import AMQPBackend
 from celery.backends.amqp import AMQPBackend
 from celery.backends.cache import CacheBackend
 from celery.backends.cache import CacheBackend
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class test_backends(Case):
 class test_backends(Case):

+ 2 - 4
celery/tests/backends/test_base.py

@@ -7,8 +7,6 @@ from contextlib import contextmanager
 from mock import Mock, patch
 from mock import Mock, patch
 from nose import SkipTest
 from nose import SkipTest
 
 
-from billiard.einfo import Traceback
-
 from celery import current_app
 from celery import current_app
 from celery.exceptions import ChordError
 from celery.exceptions import ChordError
 from celery.five import items, range
 from celery.five import items, range
@@ -27,7 +25,7 @@ from celery.backends.base import (
 )
 )
 from celery.utils import uuid
 from celery.utils import uuid
 
 
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 
 
 class wrapobject(object):
 class wrapobject(object):
@@ -81,7 +79,7 @@ class test_exception_pickle(Case):
     def test_oldstyle(self):
     def test_oldstyle(self):
         if Oldstyle is None:
         if Oldstyle is None:
             raise SkipTest('py3k does not support old style classes')
             raise SkipTest('py3k does not support old style classes')
-        self.assertIsNone(fnpe(Oldstyle()))
+        self.assertTrue(fnpe(Oldstyle()))
 
 
     def test_BaseException(self):
     def test_BaseException(self):
         self.assertIsNone(fnpe(Exception()))
         self.assertIsNone(fnpe(Exception()))

+ 2 - 2
celery/tests/backends/test_cache.py

@@ -17,7 +17,7 @@ from celery.result import AsyncResult
 from celery.task import subtask
 from celery.task import subtask
 from celery.utils import uuid
 from celery.utils import uuid
 
 
-from celery.tests.utils import AppCase, mask_modules, reset_modules
+from celery.tests.case import AppCase, mask_modules, reset_modules
 
 
 
 
 class SomeClass(object):
 class SomeClass(object):
@@ -38,7 +38,7 @@ class test_CacheBackend(AppCase):
         )
         )
         try:
         try:
             with self.assertRaises(ImproperlyConfigured):
             with self.assertRaises(ImproperlyConfigured):
-                tb = CacheBackend(backend=None, app=self.app)
+                CacheBackend(backend=None, app=self.app)
         finally:
         finally:
             self.app.conf.CELERY_CACHE_BACKEND = prev
             self.app.conf.CELERY_CACHE_BACKEND = prev
 
 

+ 1 - 1
celery/tests/backends/test_cassandra.py

@@ -8,7 +8,7 @@ from pickle import loads, dumps
 from celery import Celery
 from celery import Celery
 from celery import states
 from celery import states
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
-from celery.tests.utils import AppCase, mock_module
+from celery.tests.case import AppCase, mock_module
 
 
 
 
 class Object(object):
 class Object(object):

+ 1 - 1
celery/tests/backends/test_database.py

@@ -11,7 +11,7 @@ from celery.exceptions import ImproperlyConfigured
 from celery.result import AsyncResult
 from celery.result import AsyncResult
 from celery.utils import uuid
 from celery.utils import uuid
 
 
-from celery.tests.utils import (
+from celery.tests.case import (
     Case,
     Case,
     mask_modules,
     mask_modules,
     skip_if_pypy,
     skip_if_pypy,

+ 1 - 1
celery/tests/backends/test_mongodb.py

@@ -12,7 +12,7 @@ from celery import states
 from celery.backends import mongodb as module
 from celery.backends import mongodb as module
 from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
-from celery.tests.utils import AppCase
+from celery.tests.case import AppCase
 
 
 COLLECTION = 'taskmeta_celery'
 COLLECTION = 'taskmeta_celery'
 TASK_ID = str(uuid.uuid1())
 TASK_ID = str(uuid.uuid1())

+ 2 - 2
celery/tests/backends/test_redis.py

@@ -10,13 +10,13 @@ from kombu.utils import cached_property, uuid
 
 
 from celery import current_app
 from celery import current_app
 from celery import states
 from celery import states
-from celery.datastructures import AttributeDict
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
 from celery.result import AsyncResult
 from celery.result import AsyncResult
 from celery.task import subtask
 from celery.task import subtask
+from celery.utils.datastructures import AttributeDict
 from celery.utils.timeutils import timedelta_seconds
 from celery.utils.timeutils import timedelta_seconds
 
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class Redis(object):
 class Redis(object):

+ 1 - 4
celery/tests/backends/test_rpc.py

@@ -2,12 +2,10 @@ from __future__ import absolute_import
 
 
 from mock import patch
 from mock import patch
 
 
-from celery import states
 from celery.backends.rpc import RPCBackend
 from celery.backends.rpc import RPCBackend
-from celery.utils import uuid
 from celery._state import _task_stack
 from celery._state import _task_stack
 
 
-from celery.tests.utils import AppCase, Mock
+from celery.tests.case import AppCase, Mock
 
 
 
 
 class test_RPCBackend(AppCase):
 class test_RPCBackend(AppCase):
@@ -75,4 +73,3 @@ class test_RPCBackend(AppCase):
         self.assertEqual(ex.delivery_mode, 1)
         self.assertEqual(ex.delivery_mode, 1)
         self.assertFalse(ex.durable)
         self.assertFalse(ex.durable)
         self.assertFalse(ex.auto_delete)
         self.assertFalse(ex.auto_delete)
-

+ 5 - 0
celery/tests/bin/proj/__init__.py

@@ -0,0 +1,5 @@
+from __future__ import absolute_import
+
+from celery import Celery
+
+hello = Celery(set_as_current=False)

+ 5 - 0
celery/tests/bin/proj/app.py

@@ -0,0 +1,5 @@
+from __future__ import absolute_import
+
+from celery import Celery
+
+app = Celery(set_as_current=False)

+ 15 - 1
celery/tests/bin/test_amqp.py

@@ -11,7 +11,7 @@ from celery.bin.amqp import (
     main,
     main,
 )
 )
 
 
-from celery.tests.utils import AppCase, WhateverIO
+from celery.tests.case import AppCase, WhateverIO
 
 
 
 
 class test_AMQShell(AppCase):
 class test_AMQShell(AppCase):
@@ -36,6 +36,11 @@ class test_AMQShell(AppCase):
     def RV(self):
     def RV(self):
         raise Exception(self.fh.getvalue())
         raise Exception(self.fh.getvalue())
 
 
+    def test_spec_format_response(self):
+        spec = self.shell.amqp['exchange.declare']
+        self.assertEqual(spec.format_response(None), 'ok.')
+        self.assertEqual(spec.format_response('NO'), 'NO')
+
     def test_missing_namespace(self):
     def test_missing_namespace(self):
         self.shell.onecmd('ns.cmd arg')
         self.shell.onecmd('ns.cmd arg')
         self.assertIn('unknown syntax', self.fh.getvalue())
         self.assertIn('unknown syntax', self.fh.getvalue())
@@ -52,6 +57,15 @@ class test_AMQShell(AppCase):
         self.shell.onecmd('help foo.baz')
         self.shell.onecmd('help foo.baz')
         self.assertIn('unknown syntax', self.fh.getvalue())
         self.assertIn('unknown syntax', self.fh.getvalue())
 
 
+    def test_onecmd_error(self):
+        self.shell.dispatch = Mock()
+        self.shell.dispatch.side_effect = MemoryError()
+        self.shell.say = Mock()
+        self.assertFalse(self.shell.needs_reconnect)
+        self.shell.onecmd('hello')
+        self.assertTrue(self.shell.say.called)
+        self.assertTrue(self.shell.needs_reconnect)
+
     def test_exit(self):
     def test_exit(self):
         with self.assertRaises(SystemExit):
         with self.assertRaises(SystemExit):
             self.shell.onecmd('exit')
             self.shell.onecmd('exit')

+ 177 - 3
celery/tests/bin/test_base.py

@@ -2,10 +2,15 @@ from __future__ import absolute_import
 
 
 import os
 import os
 
 
-from mock import patch
+from mock import Mock, patch
 
 
-from celery.bin.base import Command, Option
-from celery.tests.utils import AppCase, override_stdouts
+from celery.bin.base import (
+    Command,
+    Option,
+    Extensions,
+    HelpFormatter,
+)
+from celery.tests.case import AppCase, Case, override_stdouts
 
 
 
 
 class Object(object):
 class Object(object):
@@ -31,6 +36,47 @@ class MockCommand(Command):
         return args, kwargs
         return args, kwargs
 
 
 
 
+class test_Extensions(Case):
+
+    def test_load(self):
+        with patch('pkg_resources.iter_entry_points') as iterep:
+            with patch('celery.bin.base.symbol_by_name') as symbyname:
+                ep = Mock()
+                ep.name = 'ep'
+                ep.module_name = 'foo'
+                ep.attrs = ['bar', 'baz']
+                iterep.return_value = [ep]
+                cls = symbyname.return_value = Mock()
+                register = Mock()
+                e = Extensions('unit', register)
+                e.load()
+                symbyname.assert_called_with('foo:bar')
+                register.assert_called_with(cls, name='ep')
+
+            with patch('celery.bin.base.symbol_by_name') as symbyname:
+                symbyname.side_effect = SyntaxError()
+                with patch('warnings.warn') as warn:
+                    e.load()
+                    self.assertTrue(warn.called)
+
+            with patch('celery.bin.base.symbol_by_name') as symbyname:
+                symbyname.side_effect = KeyError('foo')
+                with self.assertRaises(KeyError):
+                    e.load()
+
+
+class test_HelpFormatter(Case):
+
+    def test_format_epilog(self):
+        f = HelpFormatter()
+        self.assertTrue(f.format_epilog('hello'))
+        self.assertFalse(f.format_epilog(''))
+
+    def test_format_description(self):
+        f = HelpFormatter()
+        self.assertTrue(f.format_description('hello'))
+
+
 class test_Command(AppCase):
 class test_Command(AppCase):
 
 
     def test_get_options(self):
     def test_get_options(self):
@@ -38,6 +84,48 @@ class test_Command(AppCase):
         cmd.option_list = (1, 2, 3)
         cmd.option_list = (1, 2, 3)
         self.assertTupleEqual(cmd.get_options(), (1, 2, 3))
         self.assertTupleEqual(cmd.get_options(), (1, 2, 3))
 
 
+    def test_custom_description(self):
+
+        class C(Command):
+            description = 'foo'
+
+        c = C()
+        self.assertEqual(c.description, 'foo')
+
+    def test_register_callbacks(self):
+        c = Command(on_error=8, on_usage_error=9)
+        self.assertEqual(c.on_error, 8)
+        self.assertEqual(c.on_usage_error, 9)
+
+    def test_run_raises_UsageError(self):
+        cb = Mock()
+        c = Command(on_usage_error=cb)
+        c.verify_args = Mock()
+        c.run = Mock()
+        exc = c.run.side_effect = c.UsageError('foo', status=3)
+
+        self.assertEqual(c(), exc.status)
+        cb.assert_called_with(exc)
+        c.verify_args.assert_called_with(())
+
+    def test_default_on_usage_error(self):
+        cmd = Command()
+        cmd.handle_error = Mock()
+        exc = Exception()
+        cmd.on_usage_error(exc)
+        cmd.handle_error.assert_called_with(exc)
+
+    def test_verify_args_missing(self):
+        c = Command()
+
+        def run(a, b, c):
+            pass
+        c.run = run
+
+        with self.assertRaises(c.UsageError):
+            c.verify_args((1, ))
+        c.verify_args((1, 2, 3))
+
     def test_run_interface(self):
     def test_run_interface(self):
         with self.assertRaises(NotImplementedError):
         with self.assertRaises(NotImplementedError):
             Command().run()
             Command().run()
@@ -101,6 +189,92 @@ class test_Command(AppCase):
         cmd.setup_app_from_commandline(['--app=%s' % (app, ),
         cmd.setup_app_from_commandline(['--app=%s' % (app, ),
                                         '--loglevel=INFO'])
                                         '--loglevel=INFO'])
         self.assertIs(cmd.app, APP)
         self.assertIs(cmd.app, APP)
+        cmd.setup_app_from_commandline(['-A', app,
+                                        '--loglevel=INFO'])
+        self.assertIs(cmd.app, APP)
+
+    def test_setup_app_sets_quiet(self):
+        cmd = MockCommand()
+        cmd.setup_app_from_commandline(['-q'])
+        self.assertTrue(cmd.quiet)
+        cmd2 = MockCommand()
+        cmd2.setup_app_from_commandline(['--quiet'])
+        self.assertTrue(cmd2.quiet)
+
+    def test_setup_app_sets_chdir(self):
+        with patch('os.chdir') as chdir:
+            cmd = MockCommand()
+            cmd.setup_app_from_commandline(['--workdir=/opt'])
+            chdir.assert_called_with('/opt')
+
+    def test_setup_app_sets_loader(self):
+        prev = os.environ.get('CELERY_LOADER')
+        try:
+            cmd = MockCommand()
+            cmd.setup_app_from_commandline(['--loader=X.Y:Z'])
+            self.assertEqual(os.environ['CELERY_LOADER'], 'X.Y:Z')
+        finally:
+            if prev is not None:
+                os.environ['CELERY_LOADER'] = prev
+
+    def test_setup_app_no_respect(self):
+        cmd = MockCommand()
+        cmd.respects_app_option = False
+        with patch('celery.Celery') as cp:
+            cmd.setup_app_from_commandline(['--app=x.y:z'])
+            self.assertTrue(cp.called)
+
+    def test_setup_app_custom_app(self):
+        cmd = MockCommand()
+        app = cmd.app = Mock()
+        cmd.setup_app_from_commandline([])
+        self.assertEqual(cmd.app, app)
+
+    def test_find_app_suspects(self):
+        cmd = MockCommand()
+        self.assertTrue(cmd.find_app('celery.tests.bin.proj.app'))
+        self.assertTrue(cmd.find_app('celery.tests.bin.proj'))
+        self.assertTrue(cmd.find_app('celery.tests.bin.proj:hello'))
+        self.assertTrue(cmd.find_app('celery.tests.bin.proj.app:app'))
+
+        with self.assertRaises(AttributeError):
+            cmd.find_app(__name__)
+
+    def test_simple_format(self):
+        cmd = MockCommand()
+        with patch('socket.gethostname') as hn:
+            hn.return_value = 'blacktron.example.com'
+            self.assertEqual(cmd.simple_format(''), '')
+            self.assertEqual(
+                cmd.simple_format('celery@%h'),
+                'celery@blacktron.example.com',
+            )
+            self.assertEqual(
+                cmd.simple_format('celery@%d'),
+                'celery@example.com',
+            )
+            self.assertEqual(
+                cmd.simple_format('celery@%n'),
+                'celery@blacktron',
+            )
+
+    def test_say_chat_quiet(self):
+        cmd = MockCommand()
+        cmd.quiet = True
+        self.assertIsNone(cmd.say_chat('<-', 'foo', 'foo'))
+
+    def test_say_chat_show_body(self):
+        cmd = MockCommand()
+        cmd.out = Mock()
+        cmd.show_body = True
+        cmd.say_chat('->', 'foo', 'body')
+        cmd.out.assert_called_with('body')
+
+    def test_say_chat_no_body(self):
+        cmd = MockCommand()
+        cmd.out = Mock()
+        cmd.show_body = False
+        cmd.say_chat('->', 'foo', 'body')
 
 
     def test_with_cmdline_config(self):
     def test_with_cmdline_config(self):
         cmd = MockCommand()
         cmd = MockCommand()

+ 1 - 2
celery/tests/bin/test_beat.py

@@ -14,7 +14,7 @@ from celery.app import app_or_default
 from celery.bin import beat as beat_bin
 from celery.bin import beat as beat_bin
 from celery.apps import beat as beatapp
 from celery.apps import beat as beatapp
 
 
-from celery.tests.utils import AppCase, Mock
+from celery.tests.case import AppCase, Mock
 
 
 
 
 class MockedShelveModule(object):
 class MockedShelveModule(object):
@@ -79,7 +79,6 @@ class test_Beat(AppCase):
         self.assertTrue(app.log.setup.called)
         self.assertTrue(app.log.setup.called)
         self.assertEqual(app.log.setup.call_args[1]['colorize'], False)
         self.assertEqual(app.log.setup.call_args[1]['colorize'], False)
 
 
-
     def test_init_loader(self):
     def test_init_loader(self):
         b = beatapp.Beat()
         b = beatapp.Beat()
         b.init_loader()
         b.init_loader()

+ 202 - 14
celery/tests/bin/test_celery.py

@@ -17,16 +17,20 @@ from celery.bin.celery import (
     purge,
     purge,
     result,
     result,
     inspect,
     inspect,
+    control,
     status,
     status,
     migrate,
     migrate,
     help,
     help,
     report,
     report,
     CeleryCommand,
     CeleryCommand,
     determine_exit_status,
     determine_exit_status,
+    multi,
     main as mainfun,
     main as mainfun,
+    _RemoteControl,
+    command,
 )
 )
 
 
-from celery.tests.utils import AppCase, Case, WhateverIO, override_stdouts
+from celery.tests.case import AppCase, Case, WhateverIO, override_stdouts
 
 
 
 
 @task()
 @task()
@@ -204,17 +208,21 @@ class test_purge(AppCase):
 
 
 class test_result(AppCase):
 class test_result(AppCase):
 
 
-    @patch('celery.result.AsyncResult.get')
-    def test_run(self, get):
-        out = WhateverIO()
-        r = result(app=self.app, stdout=out)
-        get.return_value = 'Jerry'
-        r.run('id')
-        self.assertIn('Jerry', out.getvalue())
+    def test_run(self):
+        with patch('celery.result.AsyncResult.get') as get:
+            out = WhateverIO()
+            r = result(app=self.app, stdout=out)
+            get.return_value = 'Jerry'
+            r.run('id')
+            self.assertIn('Jerry', out.getvalue())
+
+            get.return_value = 'Elaine'
+            r.run('id', task=add.name)
+            self.assertIn('Elaine', out.getvalue())
 
 
-        get.return_value = 'Elaine'
-        r.run('id', task=add.name)
-        self.assertIn('Elaine', out.getvalue())
+            with patch('celery.result.AsyncResult.traceback') as tb:
+                r.run('id', task=add.name, traceback=True)
+                self.assertIn(str(tb), out.getvalue())
 
 
 
 
 class test_status(AppCase):
 class test_status(AppCase):
@@ -292,6 +300,28 @@ class test_CeleryCommand(AppCase):
         with self.assertRaises(SystemExit):
         with self.assertRaises(SystemExit):
             x.execute_from_commandline()
             x.execute_from_commandline()
 
 
+        x.respects_app_option = True
+        with self.assertRaises(SystemExit):
+            x.execute_from_commandline(['celery', 'multi'])
+        self.assertFalse(x.respects_app_option)
+        x.respects_app_option = True
+        with self.assertRaises(SystemExit):
+            x.execute_from_commandline(['manage.py', 'celery', 'multi'])
+        self.assertFalse(x.respects_app_option)
+
+    def test_with_pool_option(self):
+        x = CeleryCommand(app=self.app)
+        self.assertIsNone(x.with_pool_option(['celery', 'events']))
+        self.assertTrue(x.with_pool_option(['celery', 'worker']))
+        self.assertTrue(x.with_pool_option(['manage.py', 'celery', 'worker']))
+
+    def test_load_extensions_no_commands(self):
+        with patch('celery.bin.celery.Extensions') as Ext:
+            ext = Ext.return_value = Mock(name='Extension')
+            ext.load.return_value = None
+            x = CeleryCommand(app=self.app)
+            x.load_extension_commands()
+
     def test_determine_exit_status(self):
     def test_determine_exit_status(self):
         self.assertEqual(determine_exit_status('true'), EX_OK)
         self.assertEqual(determine_exit_status('true'), EX_OK)
         self.assertEqual(determine_exit_status(''), EX_FAILURE)
         self.assertEqual(determine_exit_status(''), EX_FAILURE)
@@ -335,12 +365,83 @@ class test_CeleryCommand(AppCase):
             x.prog_name, [], command='help',
             x.prog_name, [], command='help',
         )
         )
 
 
+        exc = dummy.run_from_argv.side_effect = x.UsageError('foo')
+        x.on_usage_error = Mock()
+        x.execute('dummy', ['dummy'])
+        x.on_usage_error.assert_called_with(exc)
+
+    def test_on_usage_error(self):
+        x = CeleryCommand(app=self.app)
+        x.error = Mock()
+        x.on_usage_error(x.UsageError('foo'), command=None)
+        self.assertTrue(x.error.called)
+        x.on_usage_error(x.UsageError('foo'), command='dummy')
+
+    def test_prepare_prog_name(self):
+        x = CeleryCommand(app=self.app)
+        main = Mock(name='__main__')
+        main.__file__ = '/opt/foo.py'
+        with patch.dict(sys.modules, __main__=main):
+            self.assertEqual(x.prepare_prog_name('__main__.py'), '/opt/foo.py')
+            self.assertEqual(x.prepare_prog_name('celery'), 'celery')
+
+
+class test_RemoteControl(AppCase):
+
+    def test_call_interface(self):
+        with self.assertRaises(NotImplementedError):
+            _RemoteControl(app=self.app).call()
+
 
 
 class test_inspect(AppCase):
 class test_inspect(AppCase):
 
 
     def test_usage(self):
     def test_usage(self):
         self.assertTrue(inspect(app=self.app).usage('foo'))
         self.assertTrue(inspect(app=self.app).usage('foo'))
 
 
+    def test_command_info(self):
+        i = inspect(app=self.app)
+        self.assertTrue(i.get_command_info(
+            'ping', help=True, color=i.colored.red,
+        ))
+
+    def test_list_commands_color(self):
+        i = inspect(app=self.app)
+        self.assertTrue(i.list_commands(
+            help=True, color=i.colored.red,
+        ))
+        self.assertTrue(i.list_commands(
+            help=False, color=None,
+        ))
+
+    def test_epilog(self):
+        self.assertTrue(inspect(app=self.app).epilog)
+
+    def test_do_call_method_sql_transport_type(self):
+        prev, self.app.connection = self.app.connection, Mock()
+        try:
+            conn = self.app.connection.return_value = Mock(name='Connection')
+            conn.transport.driver_type = 'sql'
+            i = inspect(app=self.app)
+            with self.assertRaises(i.Error):
+                i.do_call_method(['ping'])
+        finally:
+            self.app.connection = prev
+
+    def test_say_directions(self):
+        i = inspect(self.app)
+        i.out = Mock()
+        i.quiet = True
+        i.say_chat('<-', 'hello out')
+        self.assertFalse(i.out.called)
+
+        i.say_chat('->', 'hello in')
+        self.assertTrue(i.out.called)
+
+        i.quiet = False
+        i.out.reset_mock()
+        i.say_chat('<-', 'hello out', 'body')
+        self.assertTrue(i.out.called)
+
     @patch('celery.app.control.Control.inspect')
     @patch('celery.app.control.Control.inspect')
     def test_run(self, real):
     def test_run(self, real):
         out = WhateverIO()
         out = WhateverIO()
@@ -370,14 +471,101 @@ class test_inspect(AppCase):
         out.seek(0)
         out.seek(0)
         out.truncate()
         out.truncate()
         i.quiet = True
         i.quiet = True
-        i.say('<-', 'hello')
+        i.say_chat('<-', 'hello')
         self.assertFalse(out.getvalue())
         self.assertFalse(out.getvalue())
 
 
 
 
+class test_control(AppCase):
+
+    def control(self, patch_call, *args, **kwargs):
+        kwargs.setdefault('app', Mock(name='app'))
+        c = control(*args, **kwargs)
+        if patch_call:
+            c.call = Mock(name='control.call')
+        return c
+
+    def test_call(self):
+        i = self.control(False)
+        i.call('foo', 1, kw=2)
+        i.app.control.foo.assert_called_with(1, kw=2, retry=True)
+
+    def test_pool_grow(self):
+        i = self.control(True)
+        i.pool_grow('pool_grow', n=2)
+        i.call.assert_called_with('pool_grow', 2)
+
+    def test_pool_shrink(self):
+        i = self.control(True)
+        i.pool_shrink('pool_shrink', n=2)
+        i.call.assert_called_with('pool_shrink', 2)
+
+    def test_autoscale(self):
+        i = self.control(True)
+        i.autoscale('autoscale', max=3, min=2)
+        i.call.assert_called_with('autoscale', 3, 2)
+
+    def test_rate_limit(self):
+        i = self.control(True)
+        i.rate_limit('rate_limit', 'proj.add', '1/s')
+        i.call.assert_called_with('rate_limit', 'proj.add', '1/s', reply=True)
+
+    def test_time_limit(self):
+        i = self.control(True)
+        i.time_limit('time_limit', 'proj.add', 10, 30)
+        i.call.assert_called_with('time_limit', 'proj.add', 10, 30, reply=True)
+
+    def test_add_consumer(self):
+        i = self.control(True)
+        i.add_consumer(
+            'add_consumer', 'queue', 'exchange', 'topic', 'rkey',
+            durable=True,
+        )
+        i.call.assert_called_with(
+            'add_consumer', 'queue', 'exchange', 'topic', 'rkey',
+            durable=True, reply=True,
+        )
+
+    def test_cancel_consumer(self):
+        i = self.control(True)
+        i.cancel_consumer('cancel_consumer', 'queue')
+        i.call.assert_called_with('cancel_consumer', 'queue', reply=True)
+
+
+class test_multi(AppCase):
+
+    def test_get_options(self):
+        self.assertTupleEqual(multi(app=self.app).get_options(), ())
+
+    def test_run_from_argv(self):
+        with patch('celery.bin.multi.MultiTool') as MultiTool:
+            m = MultiTool.return_value = Mock()
+            multi(self.app).run_from_argv('celery', ['arg'], command='multi')
+            m.execute_from_commandline.assert_called_with(
+                ['multi', 'arg'], 'celery',
+            )
+
+
 class test_main(AppCase):
 class test_main(AppCase):
 
 
     @patch('celery.bin.celery.CeleryCommand')
     @patch('celery.bin.celery.CeleryCommand')
     def test_main(self, Command):
     def test_main(self, Command):
-        command = Command.return_value = Mock()
+        cmd = Command.return_value = Mock()
+        mainfun()
+        cmd.execute_from_commandline.assert_called_with(None)
+
+    @patch('celery.bin.celery.CeleryCommand')
+    def test_main_KeyboardInterrupt(self, Command):
+        cmd = Command.return_value = Mock()
+        cmd.execute_from_commandline.side_effect = KeyboardInterrupt()
         mainfun()
         mainfun()
-        command.execute_from_commandline.assert_called_with(None)
+        cmd.execute_from_commandline.assert_called_with(None)
+
+
+class test_compat(Case):
+
+    def test_compat_command_decorator(self):
+        with patch('celery.bin.celery.CeleryCommand') as CC:
+            self.assertEqual(command(), CC.register_command)
+            fun = Mock(name='fun')
+            command(fun)
+            CC.register_command.assert_called_with(fun)

+ 1 - 1
celery/tests/bin/test_celeryd_detach.py

@@ -9,7 +9,7 @@ from celery.bin.celeryd_detach import (
     main,
     main,
 )
 )
 
 
-from celery.tests.utils import Case, override_stdouts
+from celery.tests.case import Case, override_stdouts
 
 
 
 
 if not current_app.IS_WINDOWS:
 if not current_app.IS_WINDOWS:

+ 24 - 2
celery/tests/bin/test_celeryevdump.py

@@ -1,6 +1,6 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
-from mock import patch
+from mock import Mock, patch
 from time import time
 from time import time
 
 
 from celery.events.dumper import (
 from celery.events.dumper import (
@@ -9,7 +9,7 @@ from celery.events.dumper import (
     evdump,
     evdump,
 )
 )
 
 
-from celery.tests.utils import Case, WhateverIO
+from celery.tests.case import Case, WhateverIO
 
 
 
 
 class test_Dumper(Case):
 class test_Dumper(Case):
@@ -45,3 +45,25 @@ class test_Dumper(Case):
     def test_evdump(self, capture):
     def test_evdump(self, capture):
         capture.side_effect = KeyboardInterrupt()
         capture.side_effect = KeyboardInterrupt()
         evdump()
         evdump()
+
+    def test_evdump_error_handler(self):
+        app = Mock(name='app')
+        with patch('celery.events.dumper.Dumper') as Dumper:
+            Dumper.return_value = Mock(name='dumper')
+            recv = app.events.Receiver.return_value = Mock()
+
+            def se(*_a, **_k):
+                recv.capture.side_effect = SystemExit()
+                raise KeyError()
+            recv.capture.side_effect = se
+
+            Conn = app.connection.return_value = Mock(name='conn')
+            conn = Conn.clone.return_value = Mock(name='cloned_conn')
+            conn.connection_errors = (KeyError, )
+            conn.channel_errors = ()
+
+            evdump(app)
+            self.assertTrue(conn.ensure_connection.called)
+            errback = conn.ensure_connection.call_args[0][0]
+            errback(KeyError(), 1)
+            self.assertTrue(conn.as_uri.called)

+ 1 - 1
celery/tests/bin/test_events.py

@@ -6,7 +6,7 @@ from mock import patch as mpatch
 from celery.app import app_or_default
 from celery.app import app_or_default
 from celery.bin import events
 from celery.bin import events
 
 
-from celery.tests.utils import Case, patch
+from celery.tests.case import Case, _old_patch as patch
 
 
 
 
 class MockCommand(object):
 class MockCommand(object):

+ 1 - 1
celery/tests/bin/test_multi.py

@@ -19,7 +19,7 @@ from celery.bin.multi import (
     __doc__ as doc,
     __doc__ as doc,
 )
 )
 
 
-from celery.tests.utils import Case, WhateverIO
+from celery.tests.case import Case, WhateverIO
 
 
 
 
 class test_functions(Case):
 class test_functions(Case):

+ 21 - 1
celery/tests/bin/test_worker.py

@@ -23,7 +23,7 @@ from celery.task import trace
 from celery.utils.log import ensure_process_aware_logger
 from celery.utils.log import ensure_process_aware_logger
 from celery.worker import state
 from celery.worker import state
 
 
-from celery.tests.utils import (
+from celery.tests.case import (
     AppCase,
     AppCase,
     WhateverIO,
     WhateverIO,
     skip_if_pypy,
     skip_if_pypy,
@@ -103,6 +103,26 @@ class test_Worker(WorkerAppCase):
         with self.assertRaises(ImportError):
         with self.assertRaises(ImportError):
             x.execute_from_commandline(['worker', '-P', 'xyzybox'])
             x.execute_from_commandline(['worker', '-P', 'xyzybox'])
 
 
+    def test_run_from_argv_basic(self):
+        x = worker(app=self.app)
+        x.run = Mock()
+        x.maybe_detach = Mock()
+
+        def run(*args, **kwargs):
+            pass
+        x.run = run
+        x.run_from_argv('celery', [])
+        self.assertTrue(x.maybe_detach.called)
+
+    def test_maybe_detach(self):
+        x = worker(app=self.app)
+        with patch('celery.bin.worker.detached_celeryd') as detached:
+            x.maybe_detach([])
+            self.assertFalse(detached.called)
+            with self.assertRaises(SystemExit):
+                x.maybe_detach(['--detach'])
+            self.assertTrue(detached.called)
+
     @disable_stdouts
     @disable_stdouts
     def test_invalid_loglevel_gives_error(self):
     def test_invalid_loglevel_gives_error(self):
         x = worker(app=Celery(set_as_current=False))
         x = worker(app=Celery(set_as_current=False))

+ 42 - 5
celery/tests/utils.py → celery/tests/case.py

@@ -18,10 +18,14 @@ import time
 import warnings
 import warnings
 
 
 from contextlib import contextmanager
 from contextlib import contextmanager
+from datetime import datetime, timedelta
 from functools import partial, wraps
 from functools import partial, wraps
 from types import ModuleType
 from types import ModuleType
 
 
-import mock
+try:
+    from unittest import mock
+except ImportError:
+    import mock
 from nose import SkipTest
 from nose import SkipTest
 from kombu.log import NullHandler
 from kombu.log import NullHandler
 from kombu.utils import nested
 from kombu.utils import nested
@@ -33,6 +37,9 @@ from celery.five import (
 )
 )
 from celery.utils.functional import noop
 from celery.utils.functional import noop
 
 
+patch = mock.patch
+call = mock.call
+
 
 
 class Mock(mock.Mock):
 class Mock(mock.Mock):
 
 
@@ -396,7 +403,7 @@ def override_stdouts():
         sys.stderr = sys.__stderr__ = prev_err
         sys.stderr = sys.__stderr__ = prev_err
 
 
 
 
-def patch(module, name, mocked):
+def _old_patch(module, name, mocked):
     module = importlib.import_module(module)
     module = importlib.import_module(module)
 
 
     def _patch(fun):
     def _patch(fun):
@@ -464,7 +471,8 @@ def reset_modules(*modules):
 def patch_modules(*modules):
 def patch_modules(*modules):
     prev = {}
     prev = {}
     for mod in modules:
     for mod in modules:
-        prev[mod], sys.modules[mod] = sys.modules[mod], ModuleType(mod)
+        prev[mod] = sys.modules.get(mod)
+        sys.modules[mod] = ModuleType(mod)
     try:
     try:
         yield
         yield
     finally:
     finally:
@@ -525,7 +533,7 @@ def mock_context(mock, typ=Mock):
 
 
 @contextmanager
 @contextmanager
 def mock_open(typ=WhateverIO, side_effect=None):
 def mock_open(typ=WhateverIO, side_effect=None):
-    with mock.patch(open_fqdn) as open_:
+    with patch(open_fqdn) as open_:
         with mock_context(open_) as context:
         with mock_context(open_) as context:
             if side_effect is not None:
             if side_effect is not None:
                 context.__enter__.side_effect = side_effect
                 context.__enter__.side_effect = side_effect
@@ -535,7 +543,7 @@ def mock_open(typ=WhateverIO, side_effect=None):
 
 
 
 
 def patch_many(*targets):
 def patch_many(*targets):
-    return nested(*[mock.patch(target) for target in targets])
+    return nested(*[patch(target) for target in targets])
 
 
 
 
 @contextmanager
 @contextmanager
@@ -588,3 +596,32 @@ def skip_if_jython(fun):
             raise SkipTest('does not work on Jython')
             raise SkipTest('does not work on Jython')
         return fun(*args, **kwargs)
         return fun(*args, **kwargs)
     return _inner
     return _inner
+
+
+def body_from_sig(app, sig, utc=True):
+    sig._freeze()
+    callbacks = sig.options.pop('link', None)
+    errbacks = sig.options.pop('link_error', None)
+    countdown = sig.options.pop('countdown', None)
+    if countdown:
+        eta = app.now() + timedelta(seconds=countdown)
+    else:
+        eta = sig.options.pop('eta', None)
+    if eta and isinstance(eta, datetime):
+        eta = eta.isoformat()
+    expires = sig.options.pop('expires', None)
+    if expires and isinstance(expires, int):
+        expires = app.now() + timedelta(seconds=expires)
+    if expires and isinstance(expires, datetime):
+        expires = expires.isoformat()
+    return {
+        'task': sig.task,
+        'id': sig.id,
+        'args': sig.args,
+        'kwargs': sig.kwargs,
+        'callbacks': [dict(s) for s in callbacks] if callbacks else None,
+        'errbacks': [dict(s) for s in errbacks] if errbacks else None,
+        'eta': eta,
+        'utc': utc,
+        'expires': expires,
+    }

+ 6 - 1
celery/tests/compat_modules/test_decorators.py

@@ -4,7 +4,7 @@ import warnings
 
 
 from celery.task import base
 from celery.task import base
 
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 def add(x, y):
 def add(x, y):
@@ -13,6 +13,11 @@ def add(x, y):
 
 
 class test_decorators(Case):
 class test_decorators(Case):
 
 
+    def test_task_alias(self):
+        from celery import task
+        self.assertTrue(task.__file__)
+        self.assertTrue(task(add))
+
     def setUp(self):
     def setUp(self):
         with warnings.catch_warnings(record=True):
         with warnings.catch_warnings(record=True):
             from celery import decorators
             from celery import decorators

+ 1 - 1
celery/tests/compat_modules/test_messaging.py

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
 from celery import messaging
 from celery import messaging
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class test_compat_messaging_module(Case):
 class test_compat_messaging_module(Case):

+ 9 - 2
celery/tests/tasks/test_sets.py → celery/tests/compat_modules/test_sets.py

@@ -2,12 +2,14 @@ from __future__ import absolute_import
 
 
 import anyjson
 import anyjson
 
 
+from mock import Mock, patch
+
 from celery import current_app
 from celery import current_app
 from celery.task import Task
 from celery.task import Task
 from celery.task.sets import subtask, TaskSet
 from celery.task.sets import subtask, TaskSet
 from celery.canvas import Signature
 from celery.canvas import Signature
 
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class MockTask(Task):
 class MockTask(Task):
@@ -128,8 +130,13 @@ class test_TaskSet(Case):
             app.conf.CELERY_ALWAYS_EAGER = False
             app.conf.CELERY_ALWAYS_EAGER = False
         self.assertEqual(ts.applied, 1)
         self.assertEqual(ts.applied, 1)
 
 
-    def test_apply_async(self):
+        with patch('celery.task.sets.get_current_worker_task') as gwt:
+            parent = gwt.return_value = Mock()
+            parent.request.children = []
+            ts.apply_async()
+            self.assertTrue(parent.request.children)
 
 
+    def test_apply_async(self):
         applied = [0]
         applied = [0]
 
 
         class mocksubtask(Signature):
         class mocksubtask(Signature):

+ 30 - 1
celery/tests/concurrency/test_concurrency.py

@@ -3,9 +3,10 @@ from __future__ import absolute_import
 import os
 import os
 
 
 from itertools import count
 from itertools import count
+from mock import Mock
 
 
 from celery.concurrency.base import apply_target, BasePool
 from celery.concurrency.base import apply_target, BasePool
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class test_BasePool(Case):
 class test_BasePool(Case):
@@ -85,3 +86,31 @@ class test_BasePool(Case):
     def test_interface_terminate_job(self):
     def test_interface_terminate_job(self):
         with self.assertRaises(NotImplementedError):
         with self.assertRaises(NotImplementedError):
             BasePool(10).terminate_job(101)
             BasePool(10).terminate_job(101)
+
+    def test_interface_did_start_ok(self):
+        self.assertTrue(BasePool(10).did_start_ok())
+
+    def test_interface_on_poll_init(self):
+        self.assertIsNone(BasePool(10).on_poll_init(Mock(), Mock()))
+
+    def test_interface_on_poll_start(self):
+        self.assertIsNone(BasePool(10).on_poll_start(Mock()))
+
+    def test_interface_on_soft_timeout(self):
+        self.assertIsNone(BasePool(10).on_soft_timeout(Mock()))
+
+    def test_interface_on_hard_timeout(self):
+        self.assertIsNone(BasePool(10).on_hard_timeout(Mock()))
+
+    def test_interface_maybe_handle_result(self):
+        self.assertIsNone(BasePool(10).maybe_handle_result(1, 2))
+
+    def test_interface_close(self):
+        p = BasePool(10)
+        p.on_close = Mock()
+        p.close()
+        self.assertEqual(p._state, p.CLOSE)
+        p.on_close.assert_called_with()
+
+    def test_interface_no_close(self):
+        self.assertIsNone(BasePool(10).on_close())

+ 1 - 1
celery/tests/concurrency/test_eventlet.py

@@ -14,7 +14,7 @@ from celery.concurrency.eventlet import (
     TaskPool,
     TaskPool,
 )
 )
 
 
-from celery.tests.utils import Case, mock_module, patch_many, skip_if_pypy
+from celery.tests.case import Case, mock_module, patch_many, skip_if_pypy
 
 
 
 
 class EventletCase(Case):
 class EventletCase(Case):

+ 42 - 1
celery/tests/concurrency/test_gevent.py

@@ -10,9 +10,13 @@ from celery.concurrency.gevent import (
     Schedule,
     Schedule,
     Timer,
     Timer,
     TaskPool,
     TaskPool,
+    apply_timeout,
+)
+
+from celery.tests.case import (
+    Case, mock_module, patch_many, skip_if_pypy,
 )
 )
 
 
-from celery.tests.utils import Case, mock_module, patch_many, skip_if_pypy
 gevent_modules = (
 gevent_modules = (
     'gevent',
     'gevent',
     'gevent.monkey',
     'gevent.monkey',
@@ -80,6 +84,9 @@ class test_Schedule(Case):
                 g.kill.side_effect = KeyError()
                 g.kill.side_effect = KeyError()
                 x.clear()
                 x.clear()
 
 
+                g = x._Greenlet()
+                g.cancel()
+
 
 
 class test_TasKPool(Case):
 class test_TasKPool(Case):
 
 
@@ -118,3 +125,37 @@ class test_Timer(Case):
             x.start()
             x.start()
             x.stop()
             x.stop()
             x.schedule.clear.assert_called_with()
             x.schedule.clear.assert_called_with()
+
+
+class test_apply_timeout(Case):
+
+    def test_apply_timeout(self):
+
+            class Timeout(Exception):
+                value = None
+
+                def __init__(self, value):
+                    self.__class__.value = value
+
+                def __enter__(self):
+                    return self
+
+                def __exit__(self, *exc_info):
+                    pass
+            timeout_callback = Mock(name='timeout_callback')
+            apply_target = Mock(name='apply_target')
+            apply_timeout(
+                Mock(), timeout=10, callback=Mock(name='callback'),
+                timeout_callback=timeout_callback,
+                apply_target=apply_target, Timeout=Timeout,
+            )
+            self.assertEqual(Timeout.value, 10)
+            self.assertTrue(apply_target.called)
+
+            apply_target.side_effect = Timeout(10)
+            apply_timeout(
+                Mock(), timeout=10, callback=Mock(),
+                timeout_callback=timeout_callback,
+                apply_target=apply_target, Timeout=Timeout,
+            )
+            timeout_callback.assert_called_with(False, 10)

+ 3 - 2
celery/tests/concurrency/test_pool.py

@@ -5,8 +5,9 @@ import itertools
 
 
 from nose import SkipTest
 from nose import SkipTest
 
 
-from celery.datastructures import ExceptionInfo
-from celery.tests.utils import Case
+from billiard.einfo import ExceptionInfo
+
+from celery.tests.case import Case
 
 
 
 
 def do_something(i):
 def do_something(i):

+ 147 - 4
celery/tests/concurrency/test_processes.py

@@ -1,15 +1,17 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
+import errno
+import socket
 import time
 import time
 
 
 from itertools import cycle
 from itertools import cycle
 
 
-from mock import Mock
+from mock import Mock, call, patch
 from nose import SkipTest
 from nose import SkipTest
 
 
 from celery.five import items, range
 from celery.five import items, range
 from celery.utils.functional import noop
 from celery.utils.functional import noop
-from celery.tests.utils import Case
+from celery.tests.case import AppCase
 try:
 try:
     from celery.concurrency import processes as mp
     from celery.concurrency import processes as mp
 except ImportError:
 except ImportError:
@@ -117,14 +119,155 @@ class ExeMockTaskPool(mp.TaskPool):
     Pool = BlockingPool = ExeMockPool
     Pool = BlockingPool = ExeMockPool
 
 
 
 
-class test_TaskPool(Case):
+class PoolCase(AppCase):
 
 
-    def setUp(self):
+    def setup(self):
         try:
         try:
             import multiprocessing  # noqa
             import multiprocessing  # noqa
         except ImportError:
         except ImportError:
             raise SkipTest('multiprocessing not supported')
             raise SkipTest('multiprocessing not supported')
 
 
+
+class test_AsynPool(PoolCase):
+
+    def test_gen_not_started(self):
+
+        def gen():
+            yield 1
+            yield 2
+        g = gen()
+        self.assertTrue(mp.gen_not_started(g))
+        next(g)
+        self.assertFalse(mp.gen_not_started(g))
+        list(g)
+        self.assertFalse(mp.gen_not_started(g))
+
+    def test_select(self):
+        ebadf = socket.error()
+        ebadf.errno = errno.EBADF
+        with patch('select.select') as select:
+            select.return_value = ([3], [], [])
+            self.assertEqual(
+                mp._select(set([3])),
+                ([3], [], 0),
+            )
+
+            select.return_value = ([], [], [3])
+            self.assertEqual(
+                mp._select(set([3]), None, set([3])),
+                ([3], [], 0),
+            )
+
+            eintr = socket.error()
+            eintr.errno = errno.EINTR
+            select.side_effect = eintr
+
+            readers = set([3])
+            self.assertEqual(mp._select(readers), ([], [], 1))
+            self.assertIn(3, readers)
+
+        with patch('select.select') as select:
+            select.side_effect = ebadf
+            readers = set([3])
+            self.assertEqual(mp._select(readers), ([], [], 1))
+            select.assert_has_calls([call([3], [], [], 0)])
+            self.assertNotIn(3, readers)
+
+        with patch('select.select') as select:
+            select.side_effect = MemoryError()
+            with self.assertRaises(MemoryError):
+                mp._select(set([1]))
+
+        with patch('select.select') as select:
+
+            def se(*args):
+                select.side_effect = MemoryError()
+                raise ebadf
+            select.side_effect = se
+            with self.assertRaises(MemoryError):
+                mp._select(set([3]))
+
+        with patch('select.select') as select:
+
+            def se(*args):
+                select.side_effect = socket.error()
+                select.side_effect.errno = 1321
+                raise ebadf
+            select.side_effect = se
+            with self.assertRaises(socket.error):
+                mp._select(set([3]))
+
+        with patch('select.select') as select:
+
+            select.side_effect = socket.error()
+            select.side_effect.errno = 34134
+            with self.assertRaises(socket.error):
+                mp._select(set([3]))
+
+    def test_promise(self):
+        fun = Mock()
+        x = mp.promise(fun, (1, ), {'foo': 1})
+        x()
+        self.assertTrue(x.ready)
+        fun.assert_called_with(1, foo=1)
+
+    def test_Worker(self):
+        w = mp.Worker(Mock(), Mock())
+        w.on_loop_start(1234)
+        w.outq.put.assert_called_with((mp.WORKER_UP, (1234, )))
+
+
+class test_ResultHandler(PoolCase):
+
+    def test_process_result(self):
+        x = mp.ResultHandler(
+            Mock(), Mock(), {}, Mock(),
+            Mock(), Mock(), Mock(), Mock(),
+            fileno_to_outq={},
+            on_process_alive=Mock(),
+        )
+        self.assertTrue(x)
+        x.on_state_change = Mock()
+        proc = x.fileno_to_outq[3] = Mock()
+        reader = proc.outq._reader
+        reader.poll.return_value = False
+        x.handle_event(6)  # KeyError
+        x.handle_event(3)
+        reader.poll.assert_called_with(0)
+        self.assertFalse(x.on_state_change.called)
+
+        reader.poll.reset()
+        reader.poll.return_value = True
+        task = reader.recv.return_value = (1, (2, 3))
+        x.handle_event(3)
+        reader.poll.assert_called_with(0)
+        reader.recv.assert_called_with()
+        x.on_state_change.assert_called_with(task)
+        self.assertTrue(x._it)
+
+        reader.recv.return_value = None
+        x.handle_event(3)
+        self.assertIsNone(x._it)
+
+        x._state = mp.TERMINATE
+        it = x._process_result()
+        next(it)
+        with self.assertRaises(mp.CoroStop):
+            it.send(3)
+        x.handle_event(3)
+        self.assertIsNone(x._it)
+        x._state == mp.RUN
+
+        reader.recv.side_effect = EOFError()
+        it = x._process_result()
+        next(it)
+        with self.assertRaises(mp.CoroStop):
+            it.send(3)
+        reader.recv.side_effect = None
+
+
+class test_TaskPool(PoolCase):
+
     def test_start(self):
     def test_start(self):
         pool = TaskPool(10)
         pool = TaskPool(10)
         pool.start()
         pool.start()

+ 1 - 1
celery/tests/concurrency/test_solo.py

@@ -4,7 +4,7 @@ import operator
 
 
 from celery.concurrency import solo
 from celery.concurrency import solo
 from celery.utils.functional import noop
 from celery.utils.functional import noop
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class test_solo_TaskPool(Case):
 class test_solo_TaskPool(Case):

+ 1 - 1
celery/tests/concurrency/test_threads.py

@@ -4,7 +4,7 @@ from mock import Mock
 
 
 from celery.concurrency.threads import NullDict, TaskPool, apply_target
 from celery.concurrency.threads import NullDict, TaskPool, apply_target
 
 
-from celery.tests.utils import Case, mask_modules, mock_module
+from celery.tests.case import Case, mask_modules, mock_module
 
 
 
 
 class test_NullDict(Case):
 class test_NullDict(Case):

+ 1 - 1
celery/tests/contrib/test_abortable.py

@@ -2,7 +2,7 @@ from __future__ import absolute_import
 
 
 from celery.contrib.abortable import AbortableTask, AbortableAsyncResult
 from celery.contrib.abortable import AbortableTask, AbortableAsyncResult
 from celery.result import AsyncResult
 from celery.result import AsyncResult
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 
 
 class MyAbortableTask(AbortableTask):
 class MyAbortableTask(AbortableTask):

+ 34 - 0
celery/tests/contrib/test_methods.py

@@ -0,0 +1,34 @@
+from __future__ import absolute_import
+
+from celery.contrib.methods import task_method, task
+
+from celery.tests.case import AppCase, patch
+
+
+class test_task_method(AppCase):
+
+    def test_task_method(self):
+
+        class X(object):
+
+            def __init__(self):
+                self.state = 0
+
+            @self.app.task(filter=task_method)
+            def add(self, x):
+                self.state += x
+
+        x = X()
+        x.add(2)
+        self.assertEqual(x.state, 2)
+        x.add(4)
+        self.assertEqual(x.state, 6)
+
+        self.assertTrue(X.add)
+        self.assertIs(x.add.__self__, x)
+
+    def test_task(self):
+        with patch('celery.contrib.methods.current_app') as curapp:
+            fun = object()
+            task(fun, x=1)
+            curapp.task.assert_called_with(fun, x=1, filter=task_method)

+ 210 - 7
celery/tests/contrib/test_migrate.py

@@ -1,16 +1,35 @@
 from __future__ import absolute_import, unicode_literals
 from __future__ import absolute_import, unicode_literals
 
 
+from contextlib import contextmanager
+from mock import patch
+
 from kombu import Connection, Producer, Queue, Exchange
 from kombu import Connection, Producer, Queue, Exchange
 from kombu.exceptions import StdChannelError
 from kombu.exceptions import StdChannelError
-from mock import patch
+
+from kombu.transport.virtual import QoS
 
 
 from celery.contrib.migrate import (
 from celery.contrib.migrate import (
+    StopFiltering,
     State,
     State,
     migrate_task,
     migrate_task,
     migrate_tasks,
     migrate_tasks,
+    filter_callback,
+    _maybe_queue,
+    filter_status,
+    move_by_taskmap,
+    move_by_idmap,
+    move_task_by_id,
+    start_filter,
+    task_id_in,
+    task_id_eq,
+    expand_dest,
+    move,
 )
 )
 from celery.utils.encoding import bytes_t, ensure_bytes
 from celery.utils.encoding import bytes_t, ensure_bytes
-from celery.tests.utils import AppCase, Case, Mock
+from celery.tests.case import AppCase, Case, Mock, override_stdouts
+
+# hack to ignore error at shutdown
+QoS.restore_at_shutdown = False
 
 
 
 
 def Message(body, exchange='exchange', routing_key='rkey',
 def Message(body, exchange='exchange', routing_key='rkey',
@@ -41,6 +60,188 @@ class test_State(Case):
         x.total_apx = 100
         x.total_apx = 100
         self.assertEqual(x.strtotal, '100')
         self.assertEqual(x.strtotal, '100')
 
 
+    def test_repr(self):
+        x = State()
+        self.assertTrue(repr(x))
+        x.filtered = 'foo'
+        self.assertTrue(repr(x))
+
+
+class test_move(AppCase):
+
+    @contextmanager
+    def move_context(self, **kwargs):
+        with patch('celery.contrib.migrate.start_filter') as start:
+            with patch('celery.contrib.migrate.republish') as republish:
+                pred = Mock(name='predicate')
+                move(pred, app=self.app,
+                     connection=self.app.connection(), **kwargs)
+                self.assertTrue(start.called)
+                callback = start.call_args[0][2]
+                yield callback, pred, republish
+
+    def msgpair(self, **kwargs):
+        body = dict({'task': 'add', 'id': 'id'}, **kwargs)
+        return body, Message(body)
+
+    def test_move(self):
+        with self.move_context() as (callback, pred, republish):
+            pred.return_value = None
+            body, message = self.msgpair()
+            callback(body, message)
+            self.assertFalse(message.ack.called)
+            self.assertFalse(republish.called)
+
+            pred.return_value = 'foo'
+            callback(body, message)
+            message.ack.assert_called_with()
+            self.assertTrue(republish.called)
+
+    def test_move_transform(self):
+        trans = Mock(name='transform')
+        trans.return_value = Queue('bar')
+        with self.move_context(transform=trans) as (callback, pred, republish):
+            pred.return_value = 'foo'
+            body, message = self.msgpair()
+            with patch('celery.contrib.migrate.maybe_declare') as maybed:
+                callback(body, message)
+                trans.assert_called_with('foo')
+                self.assertTrue(maybed.called)
+                self.assertTrue(republish.called)
+
+    def test_limit(self):
+        with self.move_context(limit=1) as (callback, pred, republish):
+            pred.return_value = 'foo'
+            body, message = self.msgpair()
+            with self.assertRaises(StopFiltering):
+                callback(body, message)
+            self.assertTrue(republish.called)
+
+    def test_callback(self):
+        cb = Mock()
+        with self.move_context(callback=cb) as (callback, pred, republish):
+            pred.return_value = 'foo'
+            body, message = self.msgpair()
+            callback(body, message)
+            self.assertTrue(republish.called)
+            self.assertTrue(cb.called)
+
+
+class test_start_filter(AppCase):
+
+    def test_start(self):
+        with patch('celery.contrib.migrate.eventloop') as evloop:
+            app = Mock()
+            filter = Mock(name='filter')
+            conn = Connection('memory://')
+            evloop.side_effect = StopFiltering()
+            app.amqp.queues = {'foo': Queue('foo'), 'bar': Queue('bar')}
+            consumer = app.amqp.TaskConsumer.return_value = Mock(name='consum')
+            consumer.queues = list(app.amqp.queues.values())
+            consumer.channel = conn.default_channel
+            consumer.__enter__ = Mock(name='consumer.__enter__')
+            consumer.__exit__ = Mock(name='consumer.__exit__')
+            consumer.callbacks = []
+
+            def register_callback(x):
+                consumer.callbacks.append(x)
+            consumer.register_callback = register_callback
+
+            start_filter(app, conn, filter,
+                         queues='foo,bar', ack_messages=True)
+            body = {'task': 'add', 'id': 'id'}
+            for callback in consumer.callbacks:
+                callback(body, Message(body))
+            consumer.callbacks[:] = []
+            cb = Mock(name='callback=')
+            start_filter(app, conn, filter, tasks='add,mul', callback=cb)
+            for callback in consumer.callbacks:
+                callback(body, Message(body))
+            self.assertTrue(cb.called)
+
+            on_declare_queue = Mock()
+            start_filter(app, conn, filter, tasks='add,mul', queues='foo',
+                         on_declare_queue=on_declare_queue)
+            self.assertTrue(on_declare_queue.called)
+            start_filter(app, conn, filter, queues=['foo', 'bar'])
+            consumer.callbacks[:] = []
+            state = State()
+            start_filter(app, conn, filter,
+                         tasks='add,mul', callback=cb, state=state, limit=1)
+            stop_filtering_raised = False
+            for callback in consumer.callbacks:
+                try:
+                    callback(body, Message(body))
+                except StopFiltering:
+                    stop_filtering_raised = True
+            self.assertTrue(state.count)
+            self.assertTrue(stop_filtering_raised)
+
+
+class test_filter_callback(Case):
+
+    def test_filter(self):
+        callback = Mock()
+        filter = filter_callback(callback, ['add', 'mul'])
+        t1 = {'task': 'add'}
+        t2 = {'task': 'div'}
+
+        message = Mock()
+        filter(t2, message)
+        self.assertFalse(callback.called)
+        filter(t1, message)
+        callback.assert_called_with(t1, message)
+
+
+class test_utils(Case):
+
+    def test_task_id_in(self):
+        self.assertTrue(task_id_in(['A'], {'id': 'A'}, Mock()))
+        self.assertFalse(task_id_in(['A'], {'id': 'B'}, Mock()))
+
+    def test_task_id_eq(self):
+        self.assertTrue(task_id_eq('A', {'id': 'A'}, Mock()))
+        self.assertFalse(task_id_eq('A', {'id': 'B'}, Mock()))
+
+    def test_expand_dest(self):
+        self.assertEqual(expand_dest(None, 'foo', 'bar'), ('foo', 'bar'))
+        self.assertEqual(expand_dest(('b', 'x'), 'foo', 'bar'), ('b', 'x'))
+
+    def test_maybe_queue(self):
+        app = Mock()
+        app.amqp.queues = {'foo': 313}
+        self.assertEqual(_maybe_queue(app, 'foo'), 313)
+        self.assertEqual(_maybe_queue(app, Queue('foo')), Queue('foo'))
+
+    def test_filter_status(self):
+        with override_stdouts() as (stdout, stderr):
+            filter_status(State(), {'id': '1', 'task': 'add'}, Mock())
+            self.assertTrue(stdout.getvalue())
+
+    def test_move_by_taskmap(self):
+        with patch('celery.contrib.migrate.move') as move:
+            move_by_taskmap({'add': Queue('foo')})
+            self.assertTrue(move.called)
+            cb = move.call_args[0][0]
+            self.assertTrue(cb({'task': 'add'}, Mock()))
+
+    def test_move_by_idmap(self):
+        with patch('celery.contrib.migrate.move') as move:
+            move_by_idmap({'123f': Queue('foo')})
+            self.assertTrue(move.called)
+            cb = move.call_args[0][0]
+            self.assertTrue(cb({'id': '123f'}, Mock()))
+
+    def test_move_task_by_id(self):
+        with patch('celery.contrib.migrate.move') as move:
+            move_task_by_id('123f', Queue('foo'))
+            self.assertTrue(move.called)
+            cb = move.call_args[0][0]
+            self.assertEqual(
+                cb({'id': '123f'}, Mock()),
+                Queue('foo'),
+            )
+
 
 
 class test_migrate_task(Case):
 class test_migrate_task(Case):
 
 
@@ -77,7 +278,7 @@ class test_migrate_tasks(AppCase):
         self.assertTrue(x.default_channel.queues)
         self.assertTrue(x.default_channel.queues)
         self.assertFalse(y.default_channel.queues)
         self.assertFalse(y.default_channel.queues)
 
 
-        migrate_tasks(x, y, accept=['text/plain'])
+        migrate_tasks(x, y, accept=['text/plain'], app=self.app)
 
 
         yq = q(y.default_channel)
         yq = q(y.default_channel)
         self.assertEqual(yq.get().body, ensure_bytes('foo'))
         self.assertEqual(yq.get().body, ensure_bytes('foo'))
@@ -86,12 +287,13 @@ class test_migrate_tasks(AppCase):
 
 
         Producer(x).publish('foo', exchange=name, routing_key=name)
         Producer(x).publish('foo', exchange=name, routing_key=name)
         callback = Mock()
         callback = Mock()
-        migrate_tasks(x, y, callback=callback, accept=['text/plain'])
+        migrate_tasks(x, y,
+                      callback=callback, accept=['text/plain'], app=self.app)
         self.assertTrue(callback.called)
         self.assertTrue(callback.called)
         migrate = Mock()
         migrate = Mock()
         Producer(x).publish('baz', exchange=name, routing_key=name)
         Producer(x).publish('baz', exchange=name, routing_key=name)
         migrate_tasks(x, y, callback=callback,
         migrate_tasks(x, y, callback=callback,
-                      migrate=migrate, accept=['text/plain'])
+                      migrate=migrate, accept=['text/plain'], app=self.app)
         self.assertTrue(migrate.called)
         self.assertTrue(migrate.called)
 
 
         with patch('kombu.transport.virtual.Channel.queue_declare') as qd:
         with patch('kombu.transport.virtual.Channel.queue_declare') as qd:
@@ -101,11 +303,12 @@ class test_migrate_tasks(AppCase):
                     raise StdChannelError()
                     raise StdChannelError()
                 return 0, 3, 0
                 return 0, 3, 0
             qd.side_effect = effect
             qd.side_effect = effect
-            migrate_tasks(x, y)
+            migrate_tasks(x, y, app=self.app)
 
 
         x = Connection('memory://')
         x = Connection('memory://')
         x.default_channel.queues = {}
         x.default_channel.queues = {}
         y.default_channel.queues = {}
         y.default_channel.queues = {}
         callback = Mock()
         callback = Mock()
-        migrate_tasks(x, y, callback=callback, accept=['text/plain'])
+        migrate_tasks(x, y,
+                      callback=callback, accept=['text/plain'], app=self.app)
         self.assertFalse(callback.called)
         self.assertFalse(callback.called)

+ 1 - 1
celery/tests/contrib/test_rdb.py

@@ -10,7 +10,7 @@ from celery.contrib.rdb import (
     debugger,
     debugger,
     set_trace,
     set_trace,
 )
 )
-from celery.tests.utils import Case, WhateverIO, skip_if_pypy
+from celery.tests.case import Case, WhateverIO, skip_if_pypy
 
 
 
 
 class SockErr(socket.error):
 class SockErr(socket.error):

+ 0 - 234
celery/tests/cover/celery.html

@@ -1,234 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            15 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>15 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>18 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='stm run hide_run'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='stm run hide_run'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='exc'><a href='#n28'>28</a></p>
-<p id='n29' class='exc'><a href='#n29'>29</a></p>
-<p id='n30' class='exc'><a href='#n30'>30</a></p>
-<p id='n31' class='exc'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='exc'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='exc'><a href='#n35'>35</a></p>
-<p id='n36' class='exc'><a href='#n36'>36</a></p>
-<p id='n37' class='exc'><a href='#n37'>37</a></p>
-<p id='n38' class='exc'><a href='#n38'>38</a></p>
-<p id='n39' class='exc'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='exc'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='exc'><a href='#n47'>47</a></p>
-<p id='n48' class='exc'><a href='#n48'>48</a></p>
-<p id='n49' class='exc'><a href='#n49'>49</a></p>
-<p id='n50' class='exc'><a href='#n50'>50</a></p>
-<p id='n51' class='exc'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='exc'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='exc'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='pln'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='pln'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;Distributed Task Queue&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='com'># :copyright: (c) 2009 - 2012 Ask Solem and individual contributors,</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='com'>#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; All rights reserved.</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='com'># :copyright: (c) 2012 VMware, Inc., All rights reserved.</span><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='com'># :license:&nbsp;&nbsp; BSD (3 Clause), see LICENSE for more details.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='stm run hide_run'><span class='nam'>SERIES</span> <span class='op'>=</span> <span class='str'>&#39;Cipater&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='nam'>VERSION</span> <span class='op'>=</span> <span class='op'>(</span><span class='num'>3</span><span class='op'>,</span> <span class='num'>1</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>,</span> <span class='str'>&#39;rc3&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='nam'>__version__</span> <span class='op'>=</span> <span class='str'>&#39;.&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>p</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>p</span> <span class='key'>in</span> <span class='nam'>VERSION</span><span class='op'>[</span><span class='num'>0</span><span class='op'>:</span><span class='num'>3</span><span class='op'>]</span><span class='op'>)</span> <span class='op'>+</span> <span class='str'>&#39;&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>VERSION</span><span class='op'>[</span><span class='num'>3</span><span class='op'>:</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='nam'>__author__</span> <span class='op'>=</span> <span class='str'>&#39;Ask Solem&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='nam'>__contact__</span> <span class='op'>=</span> <span class='str'>&#39;ask@celeryproject.org&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='nam'>__homepage__</span> <span class='op'>=</span> <span class='str'>&#39;http://celeryproject.org&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='nam'>__docformat__</span> <span class='op'>=</span> <span class='str'>&#39;restructuredtext&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='nam'>__all__</span> <span class='op'>=</span> <span class='op'>[</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;celery&#39;</span><span class='op'>,</span> <span class='str'>&#39;bugreport&#39;</span><span class='op'>,</span> <span class='str'>&#39;shared_task&#39;</span><span class='op'>,</span> <span class='str'>&#39;task&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;current_app&#39;</span><span class='op'>,</span> <span class='str'>&#39;current_task&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;chain&#39;</span><span class='op'>,</span> <span class='str'>&#39;chord&#39;</span><span class='op'>,</span> <span class='str'>&#39;chunks&#39;</span><span class='op'>,</span> <span class='str'>&#39;group&#39;</span><span class='op'>,</span> <span class='str'>&#39;subtask&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;xmap&#39;</span><span class='op'>,</span> <span class='str'>&#39;xstarmap&#39;</span><span class='op'>,</span> <span class='str'>&#39;uuid&#39;</span><span class='op'>,</span> <span class='str'>&#39;version&#39;</span><span class='op'>,</span> <span class='str'>&#39;__version__&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='nam'>VERSION_BANNER</span> <span class='op'>=</span> <span class='str'>&#39;{0} ({1})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>__version__</span><span class='op'>,</span> <span class='nam'>SERIES</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='com'># -eof meta-</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='exc'><span class='key'>if</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;C_IMPDEBUG&#39;</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='exc'>&nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>builtins</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='exc'>&nbsp; &nbsp; <span class='nam'>real_import</span> <span class='op'>=</span> <span class='nam'>builtins</span><span class='op'>.</span><span class='nam'>__import__</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='exc'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>debug_import</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>locals</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>globals</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>fromlist</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>level</span><span class='op'>=</span><span class='op'>-</span><span class='num'>1</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>glob</span> <span class='op'>=</span> <span class='nam'>globals</span> <span class='key'>or</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>,</span> <span class='str'>&#39;emarfteg_&#39;</span><span class='op'>[</span><span class='op'>:</span><span class='op'>:</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>)</span><span class='op'>(</span><span class='num'>1</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>f_globals</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>importer_name</span> <span class='op'>=</span> <span class='nam'>glob</span> <span class='key'>and</span> <span class='nam'>glob</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;__name__&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;unknown&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;-- {0} imports {1}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>importer_name</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>real_import</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>locals</span><span class='op'>,</span> <span class='nam'>globals</span><span class='op'>,</span> <span class='nam'>fromlist</span><span class='op'>,</span> <span class='nam'>level</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='exc'>&nbsp; &nbsp; <span class='nam'>builtins</span><span class='op'>.</span><span class='nam'>__import__</span> <span class='op'>=</span> <span class='nam'>debug_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='nam'>STATICA_HACK</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'><span class='nam'>globals</span><span class='op'>(</span><span class='op'>)</span><span class='op'>[</span><span class='str'>&#39;kcah_acitats&#39;</span><span class='op'>[</span><span class='op'>:</span><span class='op'>:</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='exc'><span class='key'>if</span> <span class='nam'>STATICA_HACK</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'>&nbsp; &nbsp; <span class='com'># This is never executed, but tricks static analyzers (PyDev, PyCharm,</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'>&nbsp; &nbsp; <span class='com'># pylint, etc.) into knowing the types of these symbols, and what</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'>&nbsp; &nbsp; <span class='com'># they contain.</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>base</span> <span class='key'>import</span> <span class='nam'>Celery</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>bugreport</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span> <span class='key'>import</span> <span class='nam'>Task</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>current_app</span><span class='op'>,</span> <span class='nam'>current_task</span>&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='op'>(</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>chain</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>,</span> <span class='nam'>chunks</span><span class='op'>,</span> <span class='nam'>group</span><span class='op'>,</span> <span class='nam'>subtask</span><span class='op'>,</span> <span class='nam'>xmap</span><span class='op'>,</span> <span class='nam'>xstarmap</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>uuid</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'><span class='com'># Lazy loading</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>recreate_module</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='exc'><span class='nam'>old_module</span><span class='op'>,</span> <span class='nam'>new_module</span> <span class='op'>=</span> <span class='nam'>recreate_module</span><span class='op'>(</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'>&nbsp; &nbsp; <span class='nam'>__name__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'>&nbsp; &nbsp; <span class='nam'>by_module</span><span class='op'>=</span><span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.app&#39;</span><span class='op'>:</span> <span class='op'>[</span><span class='str'>&#39;Celery&#39;</span><span class='op'>,</span> <span class='str'>&#39;bugreport&#39;</span><span class='op'>,</span> <span class='str'>&#39;shared_task&#39;</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.app.task&#39;</span><span class='op'>:</span> <span class='op'>[</span><span class='str'>&#39;Task&#39;</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery._state&#39;</span><span class='op'>:</span> <span class='op'>[</span><span class='str'>&#39;current_app&#39;</span><span class='op'>,</span> <span class='str'>&#39;current_task&#39;</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.canvas&#39;</span><span class='op'>:</span> <span class='op'>[</span><span class='str'>&#39;chain&#39;</span><span class='op'>,</span> <span class='str'>&#39;chord&#39;</span><span class='op'>,</span> <span class='str'>&#39;chunks&#39;</span><span class='op'>,</span> <span class='str'>&#39;group&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;subtask&#39;</span><span class='op'>,</span> <span class='str'>&#39;xmap&#39;</span><span class='op'>,</span> <span class='str'>&#39;xstarmap&#39;</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.utils&#39;</span><span class='op'>:</span> <span class='op'>[</span><span class='str'>&#39;uuid&#39;</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'>&nbsp; &nbsp; <span class='nam'>direct</span><span class='op'>=</span><span class='op'>{</span><span class='str'>&#39;task&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.task&#39;</span><span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'>&nbsp; &nbsp; <span class='nam'>__package__</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>,</span> <span class='nam'>__file__</span><span class='op'>=</span><span class='nam'>__file__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'>&nbsp; &nbsp; <span class='nam'>__path__</span><span class='op'>=</span><span class='nam'>__path__</span><span class='op'>,</span> <span class='nam'>__doc__</span><span class='op'>=</span><span class='nam'>__doc__</span><span class='op'>,</span> <span class='nam'>__version__</span><span class='op'>=</span><span class='nam'>__version__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'>&nbsp; &nbsp; <span class='nam'>__author__</span><span class='op'>=</span><span class='nam'>__author__</span><span class='op'>,</span> <span class='nam'>__contact__</span><span class='op'>=</span><span class='nam'>__contact__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'>&nbsp; &nbsp; <span class='nam'>__homepage__</span><span class='op'>=</span><span class='nam'>__homepage__</span><span class='op'>,</span> <span class='nam'>__docformat__</span><span class='op'>=</span><span class='nam'>__docformat__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'>&nbsp; &nbsp; <span class='nam'>VERSION</span><span class='op'>=</span><span class='nam'>VERSION</span><span class='op'>,</span> <span class='nam'>SERIES</span><span class='op'>=</span><span class='nam'>SERIES</span><span class='op'>,</span> <span class='nam'>VERSION_BANNER</span><span class='op'>=</span><span class='nam'>VERSION_BANNER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 194
celery/tests/cover/celery___main__.html

@@ -1,194 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.__main__: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.__main__</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            28 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>28 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>2 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='stm run hide_run'><a href='#n1'>1</a></p>
-<p id='n2' class='pln'><a href='#n2'>2</a></p>
-<p id='n3' class='stm run hide_run'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='stm run hide_run'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='stm run hide_run'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='pln'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='exc'><a href='#n54'>54</a></p>
-<p id='n55' class='exc'><a href='#n55'>55</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>path</span> <span class='key'>import</span> <span class='nam'>basename</span><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='stm run hide_run'><span class='nam'>DEPRECATED_FMT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>The {old!r} command is deprecated, please use {new!r} instead:</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='str'>$ {new_argv}</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_warn_deprecated</span><span class='op'>(</span><span class='nam'>new</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='nam'>DEPRECATED_FMT</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>old</span><span class='op'>=</span><span class='nam'>basename</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>new</span><span class='op'>=</span><span class='nam'>new</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>new_argv</span><span class='op'>=</span><span class='str'>&#39; &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='op'>[</span><span class='nam'>new</span><span class='op'>]</span> <span class='op'>+</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>[</span><span class='num'>1</span><span class='op'>:</span><span class='op'>]</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>platforms</span> <span class='key'>import</span> <span class='nam'>maybe_patch_concurrency</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>,</span> <span class='op'>[</span><span class='str'>&#39;-P&#39;</span><span class='op'>]</span><span class='op'>,</span> <span class='op'>[</span><span class='str'>&#39;--pool&#39;</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>bin</span><span class='op'>.</span><span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>main</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_compat_worker</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_warn_deprecated</span><span class='op'>(</span><span class='str'>&#39;celery worker&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>bin</span><span class='op'>.</span><span class='nam'>worker</span> <span class='key'>import</span> <span class='nam'>main</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_compat_multi</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_warn_deprecated</span><span class='op'>(</span><span class='str'>&#39;celery multi&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>bin</span><span class='op'>.</span><span class='nam'>multi</span> <span class='key'>import</span> <span class='nam'>main</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_compat_beat</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>maybe_patch_concurrency</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_warn_deprecated</span><span class='op'>(</span><span class='str'>&#39;celery beat&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>bin</span><span class='op'>.</span><span class='nam'>beat</span> <span class='key'>import</span> <span class='nam'>main</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='exc'><span class='key'>if</span> <span class='nam'>__name__</span> <span class='op'>==</span> <span class='str'>&#39;__main__&#39;</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='exc'>&nbsp; &nbsp; <span class='nam'>main</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 296
celery/tests/cover/celery__state.html

@@ -1,296 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery._state: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery._state</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            43 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>43 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>6 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='exc'><a href='#n56'>56</a></p>
-<p id='n57' class='exc'><a href='#n57'>57</a></p>
-<p id='n58' class='exc'><a href='#n58'>58</a></p>
-<p id='n59' class='exc'><a href='#n59'>59</a></p>
-<p id='n60' class='exc'><a href='#n60'>60</a></p>
-<p id='n61' class='exc'><a href='#n61'>61</a></p>
-<p id='n62' class='pln'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='pln'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='stm run hide_run'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='stm run hide_run'><a href='#n106'>106</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery._state</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; This is an internal module containing thread state</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='str'>&nbsp; &nbsp; like the ``current_app``, and ``current_task``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&nbsp; &nbsp; This module shouldn&#39;t be used directly.</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='op'>,</span> <span class='nam'>print_function</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>threading</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>weakref</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>local</span> <span class='key'>import</span> <span class='nam'>Proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>threads</span> <span class='key'>import</span> <span class='nam'>LocalStack</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='com'>#: Global default app used when no current app.</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='nam'>default_app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='com'>#: List of all app instances (weakrefs), must not be used directly.</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='nam'>_apps</span> <span class='op'>=</span> <span class='nam'>set</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>_TLS</span><span class='op'>(</span><span class='nam'>threading</span><span class='op'>.</span><span class='nam'>local</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'>&nbsp; &nbsp; <span class='com'>#: Apps with the :attr:`~celery.app.base.BaseApp.set_as_current` attribute</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'>&nbsp; &nbsp; <span class='com'>#: sets this, so it will always contain the last instantiated app,</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'>&nbsp; &nbsp; <span class='com'>#: and is the default app returned by :func:`app_or_default`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>current_app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='nam'>_tls</span> <span class='op'>=</span> <span class='nam'>_TLS</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'><span class='nam'>_task_stack</span> <span class='op'>=</span> <span class='nam'>LocalStack</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>set_default_app</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'>&nbsp; &nbsp; <span class='key'>global</span> <span class='nam'>default_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>default_app</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'>#: creates the global fallback app instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>app</span> <span class='key'>import</span> <span class='nam'>Celery</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>set_default_app</span><span class='op'>(</span><span class='nam'>Celery</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;default&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;CELERY_LOADER&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;default&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>set_as_current</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>accept_magic_kwargs</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_tls</span><span class='op'>.</span><span class='nam'>current_app</span> <span class='key'>or</span> <span class='nam'>default_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'><span class='nam'>C_STRICT_APP</span> <span class='op'>=</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;C_STRICT_APP&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='exc'><span class='key'>if</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;C_STRICT_APP&#39;</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='exc'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>traceback</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;-- USES CURRENT_APP&#39;</span><span class='op'>,</span> <span class='nam'>file</span><span class='op'>=</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stderr</span><span class='op'>)</span>&nbsp; <span class='com'># noqa+</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>traceback</span><span class='op'>.</span><span class='nam'>print_stack</span><span class='op'>(</span><span class='nam'>file</span><span class='op'>=</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stderr</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='pln'><span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>get_current_app</span> <span class='op'>=</span> <span class='nam'>_get_current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>get_current_task</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Currently executing task.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_task_stack</span><span class='op'>.</span><span class='nam'>top</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>get_current_worker_task</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Currently executing task, that was applied by the worker.</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'><span class='str'>&nbsp; &nbsp; This is used to differentiate between the actual task</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='str'>&nbsp; &nbsp; executed by the worker and any task that was called within</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'><span class='str'>&nbsp; &nbsp; a task (using ``task.__call__`` or ``task.apply``)</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>reversed</span><span class='op'>(</span><span class='nam'>_task_stack</span><span class='op'>.</span><span class='nam'>stack</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>called_directly</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='com'>#: Proxy to current app.</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='stm run hide_run'><span class='nam'>current_app</span> <span class='op'>=</span> <span class='nam'>Proxy</span><span class='op'>(</span><span class='nam'>get_current_app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'><span class='com'>#: Proxy to current task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='stm run hide_run'><span class='nam'>current_task</span> <span class='op'>=</span> <span class='nam'>Proxy</span><span class='op'>(</span><span class='nam'>get_current_task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_register_app</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_apps</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>weakref</span><span class='op'>.</span><span class='nam'>ref</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_get_active_apps</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>dirty</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>appref</span> <span class='key'>in</span> <span class='nam'>_apps</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>appref</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>app</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>dirty</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>appref</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='pln'>&nbsp; &nbsp; <span class='key'>finally</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>while</span> <span class='nam'>dirty</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_apps</span><span class='op'>.</span><span class='nam'>discard</span><span class='op'>(</span><span class='nam'>dirty</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 358
celery/tests/cover/celery_app.html

@@ -1,358 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app: 98%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app</b> :
-            <span class='pc_cov'>98%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            42 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>42 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>16 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>1 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='exc'><a href='#n54'>54</a></p>
-<p id='n55' class='exc'><a href='#n55'>55</a></p>
-<p id='n56' class='exc'><a href='#n56'>56</a></p>
-<p id='n57' class='exc'><a href='#n57'>57</a></p>
-<p id='n58' class='exc'><a href='#n58'>58</a></p>
-<p id='n59' class='exc'><a href='#n59'>59</a></p>
-<p id='n60' class='exc'><a href='#n60'>60</a></p>
-<p id='n61' class='exc'><a href='#n61'>61</a></p>
-<p id='n62' class='exc'><a href='#n62'>62</a></p>
-<p id='n63' class='exc'><a href='#n63'>63</a></p>
-<p id='n64' class='exc'><a href='#n64'>64</a></p>
-<p id='n65' class='exc'><a href='#n65'>65</a></p>
-<p id='n66' class='exc'><a href='#n66'>66</a></p>
-<p id='n67' class='exc'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='stm run hide_run'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='stm run hide_run'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='exc'><a href='#n79'>79</a></p>
-<p id='n80' class='exc'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='stm run hide_run'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='stm run hide_run'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='pln'><a href='#n91'>91</a></p>
-<p id='n92' class='pln'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='pln'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='pln'><a href='#n108'>108</a></p>
-<p id='n109' class='pln'><a href='#n109'>109</a></p>
-<p id='n110' class='pln'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='stm run hide_run'><a href='#n113'>113</a></p>
-<p id='n114' class='stm run hide_run'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='stm run hide_run'><a href='#n122'>122</a></p>
-<p id='n123' class='stm par run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='pln'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='stm run hide_run'><a href='#n127'>127</a></p>
-<p id='n128' class='stm run hide_run'><a href='#n128'>128</a></p>
-<p id='n129' class='stm run hide_run'><a href='#n129'>129</a></p>
-<p id='n130' class='pln'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='stm run hide_run'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='stm run hide_run'><a href='#n136'>136</a></p>
-<p id='n137' class='stm run hide_run'><a href='#n137'>137</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Celery Application.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>collections</span> <span class='key'>import</span> <span class='nam'>Callable</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>local</span> <span class='key'>import</span> <span class='nam'>Proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>_state</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='op'>(</span>&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'>&nbsp; &nbsp; <span class='nam'>set_default_app</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'>&nbsp; &nbsp; <span class='nam'>get_current_app</span> <span class='key'>as</span> <span class='nam'>current_app</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'>&nbsp; &nbsp; <span class='nam'>get_current_task</span> <span class='key'>as</span> <span class='nam'>current_task</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'>&nbsp; &nbsp; <span class='nam'>_get_active_apps</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>gen_task_name</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>builtins</span> <span class='key'>import</span> <span class='nam'>shared_task</span> <span class='key'>as</span> <span class='nam'>_shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>base</span> <span class='key'>import</span> <span class='nam'>Celery</span><span class='op'>,</span> <span class='nam'>AppPickler</span>&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='com'>#: Proxy always returning the app set as default.</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'><span class='nam'>default_app</span> <span class='op'>=</span> <span class='nam'>Proxy</span><span class='op'>(</span><span class='key'>lambda</span><span class='op'>:</span> <span class='nam'>_state</span><span class='op'>.</span><span class='nam'>default_app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='com'>#: Function returning the app provided or the default app if none.</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='com'>#:</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'><span class='com'>#: The environment variable :envvar:`CELERY_TRACE_APP` is used to</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='com'>#: trace app leaks.&nbsp; When enabled an exception is raised if there</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='com'>#: is no active app.</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'><span class='nam'>app_or_default</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='com'>#: The &#39;default&#39; loader is the default loader used by old applications.</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='com'>#: This is deprecated and should no longer be used as it&#39;s set too early</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='com'>#: to be affected by --loader argument.</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='nam'>default_loader</span> <span class='op'>=</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;CELERY_LOADER&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;default&#39;</span>&nbsp; <span class='com'># XXX</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>bugreport</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>bugreport</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_app_or_default</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>app</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_state</span><span class='op'>.</span><span class='nam'>get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='exc'><span class='key'>def</span> <span class='nam'>_app_or_default_trace</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>traceback</span> <span class='key'>import</span> <span class='nam'>print_stack</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='exc'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>billiard</span> <span class='key'>import</span> <span class='nam'>current_process</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='exc'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>app</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>_state</span><span class='op'>.</span><span class='nam'>_tls</span><span class='op'>,</span> <span class='str'>&#39;current_app&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;-- RETURNING TO CURRENT APP --&#39;</span><span class='op'>)</span>&nbsp; <span class='com'># noqa+</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>print_stack</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_state</span><span class='op'>.</span><span class='nam'>_tls</span><span class='op'>.</span><span class='nam'>current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>current_process</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_name</span> <span class='op'>==</span> <span class='str'>&#39;MainProcess&#39;</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>Exception</span><span class='op'>(</span><span class='str'>&#39;DEFAULT APP&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;-- RETURNING TO DEFAULT APP --&#39;</span><span class='op'>)</span>&nbsp; &nbsp; &nbsp; <span class='com'># noqa+</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>print_stack</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_state</span><span class='op'>.</span><span class='nam'>default_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='exc'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>enable_trace</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'>&nbsp; &nbsp; <span class='key'>global</span> <span class='nam'>app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app_or_default</span> <span class='op'>=</span> <span class='nam'>_app_or_default_trace</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>disable_trace</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'>&nbsp; &nbsp; <span class='key'>global</span> <span class='nam'>app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app_or_default</span> <span class='op'>=</span> <span class='nam'>_app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='exc'><span class='key'>if</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;CELERY_TRACE_APP&#39;</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='exc'>&nbsp; &nbsp; <span class='nam'>enable_trace</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='pln'><span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>disable_trace</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='stm run hide_run'><span class='nam'>App</span> <span class='op'>=</span> <span class='nam'>Celery</span>&nbsp; <span class='com'># XXX Compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>shared_task</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Task decorator that creates shared tasks,</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'><span class='str'>&nbsp; &nbsp; and returns a proxy that always returns the task from the current apps</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='str'>&nbsp; &nbsp; task registry.</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='pln'><span class='str'>&nbsp; &nbsp; This can be used by library authors to create tasks that will work</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'><span class='str'>&nbsp; &nbsp; for any app environment.</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'><span class='str'>&nbsp; &nbsp; Example:</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; from celery import Celery, shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; @shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; ... def add(x, y):</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp;&nbsp; return x + y</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; app1 = Celery(broker=&#39;amqp://&#39;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; add.app is app1</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; True</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; app2 = Celery(broker=&#39;redis://&#39;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; add.app is app2</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>create_shared_task</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__inner</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span> <span class='op'>=</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;name&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Set as shared task so that unfinalized apps,</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># and future apps will load the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_shared_task</span><span class='op'>(</span><span class='key'>lambda</span> <span class='nam'>app</span><span class='op'>:</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_task_from_fun</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Force all finalized apps to take this task as well.</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>app</span> <span class='key'>in</span> <span class='nam'>_get_active_apps</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>finalized</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_finalize_mutex</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm par run hide_run'><span class='annotate' title='no jump to this line number'>127</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_task_from_fun</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Returns a proxy that always gets the task from the current</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># apps task registry.</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>task_by_cons</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>current_app</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>tasks</span><span class='op'>[</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span> <span class='key'>or</span> <span class='nam'>gen_task_name</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>,</span> <span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__name__</span><span class='op'>,</span> <span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__module__</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Proxy</span><span class='op'>(</span><span class='nam'>task_by_cons</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>__inner</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>len</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>)</span> <span class='op'>==</span> <span class='num'>1</span> <span class='key'>and</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>Callable</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>create_shared_task</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>create_shared_task</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 948
celery/tests/cover/celery_app_amqp.html

@@ -1,948 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.amqp: 99%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.amqp</b> :
-            <span class='pc_cov'>99%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            214 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>213 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>1 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>2 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='stm run hide_run'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='stm run hide_run'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='pln'><a href='#n91'>91</a></p>
-<p id='n92' class='pln'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='pln'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='stm run hide_run'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='stm run hide_run'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='stm run hide_run'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='stm run hide_run'><a href='#n112'>112</a></p>
-<p id='n113' class='stm run hide_run'><a href='#n113'>113</a></p>
-<p id='n114' class='stm run hide_run'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='stm run hide_run'><a href='#n118'>118</a></p>
-<p id='n119' class='stm run hide_run'><a href='#n119'>119</a></p>
-<p id='n120' class='pln'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='pln'><a href='#n124'>124</a></p>
-<p id='n125' class='stm run hide_run'><a href='#n125'>125</a></p>
-<p id='n126' class='stm run hide_run'><a href='#n126'>126</a></p>
-<p id='n127' class='stm run hide_run'><a href='#n127'>127</a></p>
-<p id='n128' class='stm run hide_run'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='stm run hide_run'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='pln'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='stm run hide_run'><a href='#n137'>137</a></p>
-<p id='n138' class='stm run hide_run'><a href='#n138'>138</a></p>
-<p id='n139' class='stm run hide_run'><a href='#n139'>139</a></p>
-<p id='n140' class='stm run hide_run'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='stm run hide_run'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='pln'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='pln'><a href='#n147'>147</a></p>
-<p id='n148' class='stm run hide_run'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-<p id='n150' class='pln'><a href='#n150'>150</a></p>
-<p id='n151' class='stm run hide_run'><a href='#n151'>151</a></p>
-<p id='n152' class='stm run hide_run'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='pln'><a href='#n156'>156</a></p>
-<p id='n157' class='stm run hide_run'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='stm run hide_run'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='stm run hide_run'><a href='#n162'>162</a></p>
-<p id='n163' class='stm run hide_run'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='pln'><a href='#n166'>166</a></p>
-<p id='n167' class='stm run hide_run'><a href='#n167'>167</a></p>
-<p id='n168' class='stm run hide_run'><a href='#n168'>168</a></p>
-<p id='n169' class='stm run hide_run'><a href='#n169'>169</a></p>
-<p id='n170' class='stm run hide_run'><a href='#n170'>170</a></p>
-<p id='n171' class='stm run hide_run'><a href='#n171'>171</a></p>
-<p id='n172' class='stm run hide_run'><a href='#n172'>172</a></p>
-<p id='n173' class='stm run hide_run'><a href='#n173'>173</a></p>
-<p id='n174' class='stm run hide_run'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='stm run hide_run'><a href='#n176'>176</a></p>
-<p id='n177' class='stm run hide_run'><a href='#n177'>177</a></p>
-<p id='n178' class='stm run hide_run'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='stm run hide_run'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='stm run hide_run'><a href='#n183'>183</a></p>
-<p id='n184' class='stm run hide_run'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='stm run hide_run'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='pln'><a href='#n189'>189</a></p>
-<p id='n190' class='pln'><a href='#n190'>190</a></p>
-<p id='n191' class='pln'><a href='#n191'>191</a></p>
-<p id='n192' class='pln'><a href='#n192'>192</a></p>
-<p id='n193' class='pln'><a href='#n193'>193</a></p>
-<p id='n194' class='pln'><a href='#n194'>194</a></p>
-<p id='n195' class='pln'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='stm run hide_run'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='stm run hide_run'><a href='#n201'>201</a></p>
-<p id='n202' class='stm run hide_run'><a href='#n202'>202</a></p>
-<p id='n203' class='stm run hide_run'><a href='#n203'>203</a></p>
-<p id='n204' class='stm run hide_run'><a href='#n204'>204</a></p>
-<p id='n205' class='stm run hide_run'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='stm run hide_run'><a href='#n207'>207</a></p>
-<p id='n208' class='stm run hide_run'><a href='#n208'>208</a></p>
-<p id='n209' class='stm run hide_run'><a href='#n209'>209</a></p>
-<p id='n210' class='stm run hide_run'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='pln'><a href='#n212'>212</a></p>
-<p id='n213' class='stm run hide_run'><a href='#n213'>213</a></p>
-<p id='n214' class='stm run hide_run'><a href='#n214'>214</a></p>
-<p id='n215' class='pln'><a href='#n215'>215</a></p>
-<p id='n216' class='stm run hide_run'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='stm run hide_run'><a href='#n218'>218</a></p>
-<p id='n219' class='stm run hide_run'><a href='#n219'>219</a></p>
-<p id='n220' class='stm run hide_run'><a href='#n220'>220</a></p>
-<p id='n221' class='stm run hide_run'><a href='#n221'>221</a></p>
-<p id='n222' class='stm run hide_run'><a href='#n222'>222</a></p>
-<p id='n223' class='stm run hide_run'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='stm run hide_run'><a href='#n226'>226</a></p>
-<p id='n227' class='stm run hide_run'><a href='#n227'>227</a></p>
-<p id='n228' class='stm run hide_run'><a href='#n228'>228</a></p>
-<p id='n229' class='stm run hide_run'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='pln'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='pln'><a href='#n234'>234</a></p>
-<p id='n235' class='pln'><a href='#n235'>235</a></p>
-<p id='n236' class='pln'><a href='#n236'>236</a></p>
-<p id='n237' class='pln'><a href='#n237'>237</a></p>
-<p id='n238' class='pln'><a href='#n238'>238</a></p>
-<p id='n239' class='pln'><a href='#n239'>239</a></p>
-<p id='n240' class='pln'><a href='#n240'>240</a></p>
-<p id='n241' class='pln'><a href='#n241'>241</a></p>
-<p id='n242' class='pln'><a href='#n242'>242</a></p>
-<p id='n243' class='pln'><a href='#n243'>243</a></p>
-<p id='n244' class='pln'><a href='#n244'>244</a></p>
-<p id='n245' class='pln'><a href='#n245'>245</a></p>
-<p id='n246' class='pln'><a href='#n246'>246</a></p>
-<p id='n247' class='pln'><a href='#n247'>247</a></p>
-<p id='n248' class='pln'><a href='#n248'>248</a></p>
-<p id='n249' class='stm run hide_run'><a href='#n249'>249</a></p>
-<p id='n250' class='pln'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='pln'><a href='#n252'>252</a></p>
-<p id='n253' class='pln'><a href='#n253'>253</a></p>
-<p id='n254' class='pln'><a href='#n254'>254</a></p>
-<p id='n255' class='pln'><a href='#n255'>255</a></p>
-<p id='n256' class='pln'><a href='#n256'>256</a></p>
-<p id='n257' class='pln'><a href='#n257'>257</a></p>
-<p id='n258' class='pln'><a href='#n258'>258</a></p>
-<p id='n259' class='stm run hide_run'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='stm run hide_run'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='stm par run hide_run'><a href='#n263'>263</a></p>
-<p id='n264' class='stm mis'><a href='#n264'>264</a></p>
-<p id='n265' class='stm run hide_run'><a href='#n265'>265</a></p>
-<p id='n266' class='pln'><a href='#n266'>266</a></p>
-<p id='n267' class='pln'><a href='#n267'>267</a></p>
-<p id='n268' class='pln'><a href='#n268'>268</a></p>
-<p id='n269' class='pln'><a href='#n269'>269</a></p>
-<p id='n270' class='pln'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='pln'><a href='#n272'>272</a></p>
-<p id='n273' class='pln'><a href='#n273'>273</a></p>
-<p id='n274' class='pln'><a href='#n274'>274</a></p>
-<p id='n275' class='pln'><a href='#n275'>275</a></p>
-<p id='n276' class='pln'><a href='#n276'>276</a></p>
-<p id='n277' class='pln'><a href='#n277'>277</a></p>
-<p id='n278' class='pln'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='pln'><a href='#n280'>280</a></p>
-<p id='n281' class='stm run hide_run'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='pln'><a href='#n283'>283</a></p>
-<p id='n284' class='stm run hide_run'><a href='#n284'>284</a></p>
-<p id='n285' class='pln'><a href='#n285'>285</a></p>
-<p id='n286' class='pln'><a href='#n286'>286</a></p>
-<p id='n287' class='pln'><a href='#n287'>287</a></p>
-<p id='n288' class='stm run hide_run'><a href='#n288'>288</a></p>
-<p id='n289' class='pln'><a href='#n289'>289</a></p>
-<p id='n290' class='pln'><a href='#n290'>290</a></p>
-<p id='n291' class='stm run hide_run'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='pln'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='stm run hide_run'><a href='#n295'>295</a></p>
-<p id='n296' class='stm run hide_run'><a href='#n296'>296</a></p>
-<p id='n297' class='stm run hide_run'><a href='#n297'>297</a></p>
-<p id='n298' class='pln'><a href='#n298'>298</a></p>
-<p id='n299' class='stm run hide_run'><a href='#n299'>299</a></p>
-<p id='n300' class='stm run hide_run'><a href='#n300'>300</a></p>
-<p id='n301' class='stm run hide_run'><a href='#n301'>301</a></p>
-<p id='n302' class='pln'><a href='#n302'>302</a></p>
-<p id='n303' class='stm run hide_run'><a href='#n303'>303</a></p>
-<p id='n304' class='stm run hide_run'><a href='#n304'>304</a></p>
-<p id='n305' class='pln'><a href='#n305'>305</a></p>
-<p id='n306' class='pln'><a href='#n306'>306</a></p>
-<p id='n307' class='stm run hide_run'><a href='#n307'>307</a></p>
-<p id='n308' class='stm run hide_run'><a href='#n308'>308</a></p>
-<p id='n309' class='pln'><a href='#n309'>309</a></p>
-<p id='n310' class='stm run hide_run'><a href='#n310'>310</a></p>
-<p id='n311' class='stm run hide_run'><a href='#n311'>311</a></p>
-<p id='n312' class='stm run hide_run'><a href='#n312'>312</a></p>
-<p id='n313' class='stm run hide_run'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='pln'><a href='#n315'>315</a></p>
-<p id='n316' class='pln'><a href='#n316'>316</a></p>
-<p id='n317' class='pln'><a href='#n317'>317</a></p>
-<p id='n318' class='pln'><a href='#n318'>318</a></p>
-<p id='n319' class='pln'><a href='#n319'>319</a></p>
-<p id='n320' class='pln'><a href='#n320'>320</a></p>
-<p id='n321' class='pln'><a href='#n321'>321</a></p>
-<p id='n322' class='stm run hide_run'><a href='#n322'>322</a></p>
-<p id='n323' class='stm run hide_run'><a href='#n323'>323</a></p>
-<p id='n324' class='stm run hide_run'><a href='#n324'>324</a></p>
-<p id='n325' class='pln'><a href='#n325'>325</a></p>
-<p id='n326' class='pln'><a href='#n326'>326</a></p>
-<p id='n327' class='stm run hide_run'><a href='#n327'>327</a></p>
-<p id='n328' class='pln'><a href='#n328'>328</a></p>
-<p id='n329' class='stm run hide_run'><a href='#n329'>329</a></p>
-<p id='n330' class='stm run hide_run'><a href='#n330'>330</a></p>
-<p id='n331' class='pln'><a href='#n331'>331</a></p>
-<p id='n332' class='pln'><a href='#n332'>332</a></p>
-<p id='n333' class='stm run hide_run'><a href='#n333'>333</a></p>
-<p id='n334' class='pln'><a href='#n334'>334</a></p>
-<p id='n335' class='pln'><a href='#n335'>335</a></p>
-<p id='n336' class='pln'><a href='#n336'>336</a></p>
-<p id='n337' class='stm run hide_run'><a href='#n337'>337</a></p>
-<p id='n338' class='pln'><a href='#n338'>338</a></p>
-<p id='n339' class='stm run hide_run'><a href='#n339'>339</a></p>
-<p id='n340' class='stm run hide_run'><a href='#n340'>340</a></p>
-<p id='n341' class='pln'><a href='#n341'>341</a></p>
-<p id='n342' class='stm run hide_run'><a href='#n342'>342</a></p>
-<p id='n343' class='stm run hide_run'><a href='#n343'>343</a></p>
-<p id='n344' class='pln'><a href='#n344'>344</a></p>
-<p id='n345' class='stm run hide_run'><a href='#n345'>345</a></p>
-<p id='n346' class='pln'><a href='#n346'>346</a></p>
-<p id='n347' class='pln'><a href='#n347'>347</a></p>
-<p id='n348' class='stm run hide_run'><a href='#n348'>348</a></p>
-<p id='n349' class='stm run hide_run'><a href='#n349'>349</a></p>
-<p id='n350' class='stm run hide_run'><a href='#n350'>350</a></p>
-<p id='n351' class='stm par run hide_run'><a href='#n351'>351</a></p>
-<p id='n352' class='stm run hide_run'><a href='#n352'>352</a></p>
-<p id='n353' class='stm run hide_run'><a href='#n353'>353</a></p>
-<p id='n354' class='stm run hide_run'><a href='#n354'>354</a></p>
-<p id='n355' class='pln'><a href='#n355'>355</a></p>
-<p id='n356' class='pln'><a href='#n356'>356</a></p>
-<p id='n357' class='stm run hide_run'><a href='#n357'>357</a></p>
-<p id='n358' class='pln'><a href='#n358'>358</a></p>
-<p id='n359' class='stm run hide_run'><a href='#n359'>359</a></p>
-<p id='n360' class='pln'><a href='#n360'>360</a></p>
-<p id='n361' class='stm run hide_run'><a href='#n361'>361</a></p>
-<p id='n362' class='pln'><a href='#n362'>362</a></p>
-<p id='n363' class='pln'><a href='#n363'>363</a></p>
-<p id='n364' class='pln'><a href='#n364'>364</a></p>
-<p id='n365' class='stm run hide_run'><a href='#n365'>365</a></p>
-<p id='n366' class='pln'><a href='#n366'>366</a></p>
-<p id='n367' class='pln'><a href='#n367'>367</a></p>
-<p id='n368' class='pln'><a href='#n368'>368</a></p>
-<p id='n369' class='stm run hide_run'><a href='#n369'>369</a></p>
-<p id='n370' class='pln'><a href='#n370'>370</a></p>
-<p id='n371' class='stm run hide_run'><a href='#n371'>371</a></p>
-<p id='n372' class='pln'><a href='#n372'>372</a></p>
-<p id='n373' class='stm run hide_run'><a href='#n373'>373</a></p>
-<p id='n374' class='pln'><a href='#n374'>374</a></p>
-<p id='n375' class='pln'><a href='#n375'>375</a></p>
-<p id='n376' class='pln'><a href='#n376'>376</a></p>
-<p id='n377' class='pln'><a href='#n377'>377</a></p>
-<p id='n378' class='pln'><a href='#n378'>378</a></p>
-<p id='n379' class='pln'><a href='#n379'>379</a></p>
-<p id='n380' class='stm run hide_run'><a href='#n380'>380</a></p>
-<p id='n381' class='stm run hide_run'><a href='#n381'>381</a></p>
-<p id='n382' class='pln'><a href='#n382'>382</a></p>
-<p id='n383' class='pln'><a href='#n383'>383</a></p>
-<p id='n384' class='pln'><a href='#n384'>384</a></p>
-<p id='n385' class='pln'><a href='#n385'>385</a></p>
-<p id='n386' class='pln'><a href='#n386'>386</a></p>
-<p id='n387' class='pln'><a href='#n387'>387</a></p>
-<p id='n388' class='pln'><a href='#n388'>388</a></p>
-<p id='n389' class='pln'><a href='#n389'>389</a></p>
-<p id='n390' class='pln'><a href='#n390'>390</a></p>
-<p id='n391' class='pln'><a href='#n391'>391</a></p>
-<p id='n392' class='pln'><a href='#n392'>392</a></p>
-<p id='n393' class='stm run hide_run'><a href='#n393'>393</a></p>
-<p id='n394' class='pln'><a href='#n394'>394</a></p>
-<p id='n395' class='stm run hide_run'><a href='#n395'>395</a></p>
-<p id='n396' class='pln'><a href='#n396'>396</a></p>
-<p id='n397' class='stm run hide_run'><a href='#n397'>397</a></p>
-<p id='n398' class='pln'><a href='#n398'>398</a></p>
-<p id='n399' class='stm run hide_run'><a href='#n399'>399</a></p>
-<p id='n400' class='pln'><a href='#n400'>400</a></p>
-<p id='n401' class='pln'><a href='#n401'>401</a></p>
-<p id='n402' class='stm run hide_run'><a href='#n402'>402</a></p>
-<p id='n403' class='pln'><a href='#n403'>403</a></p>
-<p id='n404' class='stm run hide_run'><a href='#n404'>404</a></p>
-<p id='n405' class='pln'><a href='#n405'>405</a></p>
-<p id='n406' class='stm run hide_run'><a href='#n406'>406</a></p>
-<p id='n407' class='pln'><a href='#n407'>407</a></p>
-<p id='n408' class='stm run hide_run'><a href='#n408'>408</a></p>
-<p id='n409' class='pln'><a href='#n409'>409</a></p>
-<p id='n410' class='stm run hide_run'><a href='#n410'>410</a></p>
-<p id='n411' class='stm run hide_run'><a href='#n411'>411</a></p>
-<p id='n412' class='stm run hide_run'><a href='#n412'>412</a></p>
-<p id='n413' class='pln'><a href='#n413'>413</a></p>
-<p id='n414' class='stm run hide_run'><a href='#n414'>414</a></p>
-<p id='n415' class='pln'><a href='#n415'>415</a></p>
-<p id='n416' class='stm run hide_run'><a href='#n416'>416</a></p>
-<p id='n417' class='pln'><a href='#n417'>417</a></p>
-<p id='n418' class='stm run hide_run'><a href='#n418'>418</a></p>
-<p id='n419' class='pln'><a href='#n419'>419</a></p>
-<p id='n420' class='stm run hide_run'><a href='#n420'>420</a></p>
-<p id='n421' class='stm run hide_run'><a href='#n421'>421</a></p>
-<p id='n422' class='pln'><a href='#n422'>422</a></p>
-<p id='n423' class='pln'><a href='#n423'>423</a></p>
-<p id='n424' class='pln'><a href='#n424'>424</a></p>
-<p id='n425' class='pln'><a href='#n425'>425</a></p>
-<p id='n426' class='stm run hide_run'><a href='#n426'>426</a></p>
-<p id='n427' class='stm run hide_run'><a href='#n427'>427</a></p>
-<p id='n428' class='pln'><a href='#n428'>428</a></p>
-<p id='n429' class='stm run hide_run'><a href='#n429'>429</a></p>
-<p id='n430' class='pln'><a href='#n430'>430</a></p>
-<p id='n431' class='stm run hide_run'><a href='#n431'>431</a></p>
-<p id='n432' class='pln'><a href='#n432'>432</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.amqp</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Sending and receiving messages using Kombu.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>datetime</span> <span class='key'>import</span> <span class='nam'>timedelta</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>weakref</span> <span class='key'>import</span> <span class='nam'>WeakValueDictionary</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span> <span class='key'>import</span> <span class='nam'>Connection</span><span class='op'>,</span> <span class='nam'>Consumer</span><span class='op'>,</span> <span class='nam'>Exchange</span><span class='op'>,</span> <span class='nam'>Producer</span><span class='op'>,</span> <span class='nam'>Queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>common</span> <span class='key'>import</span> <span class='nam'>entry_to_queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>pools</span> <span class='key'>import</span> <span class='nam'>ProducerPool</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>cached_property</span><span class='op'>,</span> <span class='nam'>uuid</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>encoding</span> <span class='key'>import</span> <span class='nam'>safe_repr</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>signals</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>items</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>text</span> <span class='key'>import</span> <span class='nam'>indent</span> <span class='key'>as</span> <span class='nam'>textindent</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span> <span class='key'>import</span> <span class='nam'>app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span> <span class='key'>import</span> <span class='nam'>routes</span> <span class='key'>as</span> <span class='nam'>_routes</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='com'>#: Human readable queue declaration.</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'><span class='nam'>QUEUE_FORMAT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='str'>.&gt; {0.name:&lt;16} exchange={0.exchange.name}({0.exchange.type}) \</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='str'>key={0.routing_key}</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Queues</span><span class='op'>(</span><span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Queue name&#8658; declaration mapping.</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='str'>&nbsp; &nbsp; :param queues: Initial list/tuple or dict of queues.</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='str'>&nbsp; &nbsp; :keyword create_missing: By default any unknown queues will be</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; added automatically, but if disabled</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; the occurrence of unknown queues</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; in `wanted` will raise :exc:`KeyError`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'><span class='str'>&nbsp; &nbsp; :keyword ha_policy: Default HA policy for queues with none set.</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'>&nbsp; &nbsp; <span class='com'>#: If set, this is a subset of queues to consume from.</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'>&nbsp; &nbsp; <span class='com'>#: The rest of the queues are then used for routing only.</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_consume_from</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>default_exchange</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>create_missing</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>ha_policy</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>dict</span><span class='op'>.</span><span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aliases</span> <span class='op'>=</span> <span class='nam'>WeakValueDictionary</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span> <span class='op'>=</span> <span class='nam'>default_exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>create_missing</span> <span class='op'>=</span> <span class='nam'>create_missing</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>ha_policy</span> <span class='op'>=</span> <span class='nam'>ha_policy</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>queues</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>tuple</span><span class='op'>,</span> <span class='nam'>list</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queues</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>q</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>q</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>q</span> <span class='key'>in</span> <span class='nam'>queues</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>q</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>queues</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>q</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>q</span><span class='op'>,</span> <span class='nam'>Queue</span><span class='op'>)</span> <span class='key'>else</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add_compat</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>q</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__getitem__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aliases</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>.</span><span class='nam'>__getitem__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__setitem__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span> <span class='key'>and</span> <span class='op'>(</span><span class='key'>not</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>exchange</span> <span class='key'>or</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>not</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>exchange</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>exchange</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>dict</span><span class='op'>.</span><span class='nam'>__setitem__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>alias</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aliases</span><span class='op'>[</span><span class='nam'>queue</span><span class='op'>.</span><span class='nam'>alias</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__missing__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>create_missing</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>new_missing</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>KeyError</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>add</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Add new queue.</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The first argument can either be a :class:`kombu.Queue` instance,</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; or the name of a queue.&nbsp; If the former the rest of the keyword</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; arguments are ignored, and options are simply taken from the queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param queue: :class:`kombu.Queue` instance or name of the queue.</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exchange: (if named) specifies exchange name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword routing_key: (if named) specifies binding key.</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exchange_type: (if named) specifies type of exchange.</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword \*\*options: (if named) Additional declaration options.</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>Queue</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add_compat</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>ha_policy</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>queue_arguments</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>queue_arguments</span> <span class='op'>=</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_set_ha_policy</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>.</span><span class='nam'>queue_arguments</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>[</span><span class='nam'>queue</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>add_compat</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># docs used to use binding_key as routing key</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;routing_key&#39;</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;binding_key&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>options</span><span class='op'>[</span><span class='str'>&#39;routing_key&#39;</span><span class='op'>]</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>[</span><span class='str'>&#39;routing_key&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>name</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>ha_policy</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_set_ha_policy</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;queue_arguments&#39;</span><span class='op'>,</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>q</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>entry_to_queue</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>q</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_set_ha_policy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>policy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>ha_policy</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>policy</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>args</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='op'>{</span><span class='str'>&#39;x-ha-policy&#39;</span><span class='op'>:</span> <span class='str'>&#39;nodes&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;x-ha-policy-params&#39;</span><span class='op'>:</span> <span class='nam'>list</span><span class='op'>(</span><span class='nam'>policy</span><span class='op'>)</span><span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span><span class='op'>[</span><span class='str'>&#39;x-ha-policy&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>policy</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>format</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>indent</span><span class='op'>=</span><span class='num'>0</span><span class='op'>,</span> <span class='nam'>indent_first</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Format routing table into string for log dumps.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>active</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>consume_from</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>active</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>info</span> <span class='op'>=</span> <span class='op'>[</span><span class='nam'>QUEUE_FORMAT</span><span class='op'>.</span><span class='nam'>strip</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>q</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>q</span> <span class='key'>in</span> <span class='nam'>sorted</span><span class='op'>(</span><span class='nam'>items</span><span class='op'>(</span><span class='nam'>active</span><span class='op'>)</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>indent_first</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>textindent</span><span class='op'>(</span><span class='str'>&#39;\n&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>info</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>indent</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>info</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span> <span class='op'>+</span> <span class='str'>&#39;\n&#39;</span> <span class='op'>+</span> <span class='nam'>textindent</span><span class='op'>(</span><span class='str'>&#39;\n&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>info</span><span class='op'>[</span><span class='num'>1</span><span class='op'>:</span><span class='op'>]</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>indent</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>select_add</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Add new task queue that will be consumed from even when</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; a subset has been selected using the :option:`-Q` option.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>q</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span><span class='op'>[</span><span class='nam'>q</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>q</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>q</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>select_subset</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>wanted</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Sets :attr:`consume_from` by selecting a subset of the</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; currently defined queues.</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param wanted: List of wanted queue names.</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>wanted</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>]</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>name</span> <span class='key'>in</span> <span class='nam'>wanted</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>select_remove</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>select_subset</span><span class='op'>(</span><span class='nam'>k</span> <span class='key'>for</span> <span class='nam'>k</span> <span class='key'>in</span> <span class='nam'>self</span> <span class='key'>if</span> <span class='nam'>k</span> <span class='op'>!=</span> <span class='nam'>queue</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>new_missing</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Queue</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>Exchange</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>consume_from</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_consume_from</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskProducer</span><span class='op'>(</span><span class='nam'>Producer</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>auto_declare</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>retry</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>retry_policy</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>utc</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>event_dispatcher</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>send_sent_event</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>channel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;retry&#39;</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;retry_policy&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>send_sent_event</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;send_sent_event&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>send_sent_event</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span> <span class='op'>=</span> <span class='nam'>exchange</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>queues</span>&nbsp; <span class='com'># shortcut</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_queue</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>default_queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>super</span><span class='op'>(</span><span class='nam'>TaskProducer</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>channel</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>publish_task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_name</span><span class='op'>,</span> <span class='nam'>task_args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>task_kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>eta</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>taskset_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span>&nbsp; <span class='com'># compat alias to group_id</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>expires</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exchange_type</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>event_dispatcher</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>retry</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>retry_policy</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>queue</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>now</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>retries</span><span class='op'>=</span><span class='num'>0</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>callbacks</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>errbacks</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>routing_key</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>serializer</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>delivery_mode</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>compression</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>reply_to</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>timeout</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>soft_timeout</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>timeouts</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>declare</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Send task message.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retry</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span> <span class='key'>if</span> <span class='nam'>retry</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>retry</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>qname</span> <span class='op'>=</span> <span class='nam'>queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>queue</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>and</span> <span class='nam'>exchange</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queue</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_queue</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>queue</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>qname</span><span class='op'>,</span> <span class='nam'>queue</span> <span class='op'>=</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>[</span><span class='nam'>queue</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>qname</span> <span class='op'>=</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>name</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span> <span class='op'>=</span> <span class='nam'>exchange</span> <span class='key'>or</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>exchange</span><span class='op'>.</span><span class='nam'>name</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>routing_key</span> <span class='op'>=</span> <span class='nam'>routing_key</span> <span class='key'>or</span> <span class='nam'>queue</span><span class='op'>.</span><span class='nam'>routing_key</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>declare</span> <span class='op'>=</span> <span class='nam'>declare</span> <span class='key'>or</span> <span class='op'>(</span><span class='op'>[</span><span class='nam'>queue</span><span class='op'>]</span> <span class='key'>if</span> <span class='nam'>queue</span> <span class='key'>else</span> <span class='op'>[</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># merge default and custom policy</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retry</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span> <span class='key'>if</span> <span class='nam'>retry</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>retry</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_rp</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>dict</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>retry_policy</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>retry_policy</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='key'>else</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>task_id</span> <span class='key'>or</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_args</span> <span class='op'>=</span> <span class='nam'>task_args</span> <span class='key'>or</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_kwargs</span> <span class='op'>=</span> <span class='nam'>task_kwargs</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>task_args</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>ValueError</span><span class='op'>(</span><span class='str'>&#39;task args must be a list or tuple&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>task_kwargs</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>ValueError</span><span class='op'>(</span><span class='str'>&#39;task kwargs must be a dictionary&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>countdown</span><span class='op'>:</span>&nbsp; <span class='com'># Convert countdown to ETA.</span><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>now</span> <span class='op'>=</span> <span class='nam'>now</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>now</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>eta</span> <span class='op'>=</span> <span class='nam'>now</span> <span class='op'>+</span> <span class='nam'>timedelta</span><span class='op'>(</span><span class='nam'>seconds</span><span class='op'>=</span><span class='nam'>countdown</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>expires</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>int</span><span class='op'>,</span> <span class='nam'>float</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>now</span> <span class='op'>=</span> <span class='nam'>now</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>now</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>expires</span> <span class='op'>=</span> <span class='nam'>now</span> <span class='op'>+</span> <span class='nam'>timedelta</span><span class='op'>(</span><span class='nam'>seconds</span><span class='op'>=</span><span class='nam'>expires</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>eta</span> <span class='op'>=</span> <span class='nam'>eta</span> <span class='key'>and</span> <span class='nam'>eta</span><span class='op'>.</span><span class='nam'>isoformat</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>expires</span> <span class='op'>=</span> <span class='nam'>expires</span> <span class='key'>and</span> <span class='nam'>expires</span><span class='op'>.</span><span class='nam'>isoformat</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span> <span class='op'>=</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task&#39;</span><span class='op'>:</span> <span class='nam'>task_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;id&#39;</span><span class='op'>:</span> <span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;args&#39;</span><span class='op'>:</span> <span class='nam'>task_args</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;kwargs&#39;</span><span class='op'>:</span> <span class='nam'>task_kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;retries&#39;</span><span class='op'>:</span> <span class='nam'>retries</span> <span class='key'>or</span> <span class='num'>0</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;eta&#39;</span><span class='op'>:</span> <span class='nam'>eta</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;expires&#39;</span><span class='op'>:</span> <span class='nam'>expires</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;utc&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>utc</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;callbacks&#39;</span><span class='op'>:</span> <span class='nam'>callbacks</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;errbacks&#39;</span><span class='op'>:</span> <span class='nam'>errbacks</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;reply_to&#39;</span><span class='op'>:</span> <span class='nam'>reply_to</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;timeouts&#39;</span><span class='op'>:</span> <span class='nam'>timeouts</span> <span class='key'>or</span> <span class='op'>(</span><span class='nam'>timeout</span><span class='op'>,</span> <span class='nam'>soft_timeout</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;taskset&#39;</span><span class='op'>:</span> <span class='nam'>group_id</span> <span class='key'>or</span> <span class='nam'>taskset_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;chord&#39;</span><span class='op'>:</span> <span class='nam'>chord</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>publish</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>exchange</span><span class='op'>,</span> <span class='nam'>routing_key</span><span class='op'>=</span><span class='nam'>routing_key</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>serializer</span><span class='op'>=</span><span class='nam'>serializer</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>serializer</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>compression</span><span class='op'>=</span><span class='nam'>compression</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>compression</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retry</span><span class='op'>=</span><span class='nam'>retry</span><span class='op'>,</span> <span class='nam'>retry_policy</span><span class='op'>=</span><span class='nam'>_rp</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>delivery_mode</span><span class='op'>=</span><span class='nam'>delivery_mode</span><span class='op'>,</span> <span class='nam'>declare</span><span class='op'>=</span><span class='nam'>declare</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>task_sent</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='nam'>sender</span><span class='op'>=</span><span class='nam'>task_name</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>body</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>send_sent_event</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>evd</span> <span class='op'>=</span> <span class='nam'>event_dispatcher</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>event_dispatcher</span><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exname</span> <span class='op'>=</span> <span class='nam'>exchange</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='stm par run hide_run'><span class='annotate' title='no jump to this line number'>264</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>exname</span><span class='op'>,</span> <span class='nam'>Exchange</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm mis'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exname</span> <span class='op'>=</span> <span class='nam'>exname</span><span class='op'>.</span><span class='nam'>name</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>evd</span><span class='op'>.</span><span class='nam'>publish</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task-sent&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;uuid&#39;</span><span class='op'>:</span> <span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;name&#39;</span><span class='op'>:</span> <span class='nam'>task_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;args&#39;</span><span class='op'>:</span> <span class='nam'>safe_repr</span><span class='op'>(</span><span class='nam'>task_args</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;kwargs&#39;</span><span class='op'>:</span> <span class='nam'>safe_repr</span><span class='op'>(</span><span class='nam'>task_kwargs</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;retries&#39;</span><span class='op'>:</span> <span class='nam'>retries</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;eta&#39;</span><span class='op'>:</span> <span class='nam'>eta</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;expires&#39;</span><span class='op'>:</span> <span class='nam'>expires</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;queue&#39;</span><span class='op'>:</span> <span class='nam'>qname</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;exchange&#39;</span><span class='op'>:</span> <span class='nam'>exname</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;routing_key&#39;</span><span class='op'>:</span> <span class='nam'>routing_key</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>,</span> <span class='nam'>retry</span><span class='op'>=</span><span class='nam'>retry</span><span class='op'>,</span> <span class='nam'>retry_policy</span><span class='op'>=</span><span class='nam'>retry_policy</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task_id</span><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>delay_task</span> <span class='op'>=</span> <span class='nam'>publish_task</span>&nbsp;&nbsp; <span class='com'># XXX Compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>event_dispatcher</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># We call Dispatcher.publish with a custom producer</span><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># so don&#39;t need the dispatcher to be &quot;enabled&quot;.</span><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>events</span><span class='op'>.</span><span class='nam'>Dispatcher</span><span class='op'>(</span><span class='nam'>enabled</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskPublisher</span><span class='op'>(</span><span class='nam'>TaskProducer</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Deprecated version of :class:`TaskProducer`.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>channel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app_or_default</span><span class='op'>(</span><span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;app&#39;</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;retry&#39;</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;retry_policy&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>retry_policy</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span> <span class='op'>=</span> <span class='nam'>exchange</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>exchange</span><span class='op'>,</span> <span class='nam'>Exchange</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span> <span class='op'>=</span> <span class='nam'>Exchange</span><span class='op'>(</span><span class='nam'>exchange</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;exchange_type&#39;</span><span class='op'>,</span> <span class='str'>&#39;direct&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>queues</span>&nbsp; <span class='com'># shortcut</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>super</span><span class='op'>(</span><span class='nam'>TaskPublisher</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>channel</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t306' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t307' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskConsumer</span><span class='op'>(</span><span class='nam'>Consumer</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t308' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t309' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t310' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>channel</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>accept</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kw</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t311' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t312' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>accept</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t313' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ACCEPT_CONTENT</span><span class='strut'>&nbsp;</span></p>
-<p id='t314' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>super</span><span class='op'>(</span><span class='nam'>TaskConsumer</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__init__</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t315' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>channel</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t316' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queues</span> <span class='key'>or</span> <span class='nam'>list</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>.</span><span class='nam'>consume_from</span><span class='op'>.</span><span class='nam'>values</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t317' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept</span><span class='op'>=</span><span class='nam'>accept</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t318' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>kw</span><span class='strut'>&nbsp;</span></p>
-<p id='t319' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t320' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t321' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t322' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>AMQP</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t323' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Connection</span> <span class='op'>=</span> <span class='nam'>Connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t324' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Consumer</span> <span class='op'>=</span> <span class='nam'>Consumer</span><span class='strut'>&nbsp;</span></p>
-<p id='t325' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t326' class='pln'>&nbsp; &nbsp; <span class='com'>#: compat alias to Connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t327' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>BrokerConnection</span> <span class='op'>=</span> <span class='nam'>Connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t328' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t329' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>producer_cls</span> <span class='op'>=</span> <span class='nam'>TaskProducer</span><span class='strut'>&nbsp;</span></p>
-<p id='t330' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>consumer_cls</span> <span class='op'>=</span> <span class='nam'>TaskConsumer</span><span class='strut'>&nbsp;</span></p>
-<p id='t331' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t332' class='pln'>&nbsp; &nbsp; <span class='com'>#: Cached and prepared routing table.</span><span class='strut'>&nbsp;</span></p>
-<p id='t333' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_rtable</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t334' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t335' class='pln'>&nbsp; &nbsp; <span class='com'>#: Underlying producer pool instance automatically</span><span class='strut'>&nbsp;</span></p>
-<p id='t336' class='pln'>&nbsp; &nbsp; <span class='com'>#: set by the :attr:`producer_pool`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t337' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_producer_pool</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t338' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t339' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t340' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t341' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t342' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>flush_routes</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t343' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_rtable</span> <span class='op'>=</span> <span class='nam'>_routes</span><span class='op'>.</span><span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ROUTES</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t344' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t345' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>Queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>,</span> <span class='nam'>create_missing</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>ha_policy</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t346' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Create new :class:`Queues` instance, using queue defaults</span><span class='strut'>&nbsp;</span></p>
-<p id='t347' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; from the current configuration.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t348' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conf</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='strut'>&nbsp;</span></p>
-<p id='t349' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>create_missing</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t350' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>create_missing</span> <span class='op'>=</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_CREATE_MISSING_QUEUES</span><span class='strut'>&nbsp;</span></p>
-<p id='t351' class='stm par run hide_run'><span class='annotate' title='no jump to this line number'>353</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>ha_policy</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t352' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ha_policy</span> <span class='op'>=</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_QUEUE_HA_POLICY</span><span class='strut'>&nbsp;</span></p>
-<p id='t353' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>queues</span> <span class='key'>and</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_QUEUE</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t354' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queues</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>Queue</span><span class='op'>(</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_QUEUE</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t355' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t356' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>routing_key</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_ROUTING_KEY</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t357' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Queues</span><span class='op'>(</span><span class='nam'>queues</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span><span class='op'>,</span> <span class='nam'>create_missing</span><span class='op'>,</span> <span class='nam'>ha_policy</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t358' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t359' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>Router</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>create_missing</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t360' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns the current task router.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t361' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_routes</span><span class='op'>.</span><span class='nam'>Router</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>routes</span><span class='op'>,</span> <span class='nam'>queues</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t362' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>either</span><span class='op'>(</span><span class='str'>&#39;CELERY_CREATE_MISSING_QUEUES&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t363' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>create_missing</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t364' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t365' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t366' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>TaskConsumer</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t367' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Return consumer configured to consume from the queues</span><span class='strut'>&nbsp;</span></p>
-<p id='t368' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; we are configured for (``app.amqp.queues.consume_from``).&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t369' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>consumer_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t370' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>reverse</span><span class='op'>=</span><span class='str'>&#39;amqp.TaskConsumer&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t371' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>get_task_consumer</span> <span class='op'>=</span> <span class='nam'>TaskConsumer</span>&nbsp; <span class='com'># XXX compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t372' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t373' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t374' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>TaskProducer</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t375' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns publisher used to send tasks.</span><span class='strut'>&nbsp;</span></p>
-<p id='t376' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t377' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; You should use `app.send_task` instead.</span><span class='strut'>&nbsp;</span></p>
-<p id='t378' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t379' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t380' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conf</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='strut'>&nbsp;</span></p>
-<p id='t381' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t382' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>producer_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t383' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reverse</span><span class='op'>=</span><span class='str'>&#39;amqp.TaskProducer&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t384' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_exchange</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t385' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>routing_key</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_ROUTING_KEY</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t386' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>serializer</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_TASK_SERIALIZER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t387' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>compression</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_MESSAGE_COMPRESSION</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t388' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retry</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_TASK_PUBLISH_RETRY</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t389' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retry_policy</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_TASK_PUBLISH_RETRY_POLICY</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t390' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>send_sent_event</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_SEND_TASK_SENT_EVENT</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t391' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>utc</span><span class='op'>=</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ENABLE_UTC</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t392' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t393' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>TaskPublisher</span> <span class='op'>=</span> <span class='nam'>TaskProducer</span>&nbsp; <span class='com'># compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t394' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t395' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t396' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>default_queue</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t397' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_QUEUE</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t398' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t399' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t400' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t401' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Queue name&#8658; declaration mapping.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t402' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_QUEUES</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t403' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t404' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>queues</span><span class='op'>.</span><span class='nam'>setter</span>&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t405' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t406' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Queues</span><span class='op'>(</span><span class='nam'>queues</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t407' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t408' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t409' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>routes</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t410' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_rtable</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t411' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>flush_routes</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t412' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_rtable</span><span class='strut'>&nbsp;</span></p>
-<p id='t413' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t414' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t415' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>router</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t416' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Router</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t417' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t418' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t419' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>producer_pool</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t420' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_producer_pool</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t421' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_producer_pool</span> <span class='op'>=</span> <span class='nam'>ProducerPool</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t422' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>pool</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t423' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>limit</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>pool</span><span class='op'>.</span><span class='nam'>limit</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t424' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>Producer</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>TaskProducer</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t425' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t426' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_producer_pool</span><span class='strut'>&nbsp;</span></p>
-<p id='t427' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>publisher_pool</span> <span class='op'>=</span> <span class='nam'>producer_pool</span>&nbsp; <span class='com'># compat alias</span><span class='strut'>&nbsp;</span></p>
-<p id='t428' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t429' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t430' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>default_exchange</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t431' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Exchange</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_EXCHANGE</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t432' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_EXCHANGE_TYPE</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 196
celery/tests/cover/celery_app_annotations.html

@@ -1,196 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.annotations: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.annotations</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            32 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>32 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.annotations</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Annotations is a nice term for moneky patching</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='str'>&nbsp; &nbsp; task classes in the configuration.</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&nbsp; &nbsp; This prepares and performs the annotations in the</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='str'>&nbsp; &nbsp; :setting:`CELERY_ANNOTATIONS` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>string_t</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>firstmethod</span><span class='op'>,</span> <span class='nam'>mpromise</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>instantiate</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='nam'>_first_match</span> <span class='op'>=</span> <span class='nam'>firstmethod</span><span class='op'>(</span><span class='str'>&#39;annotate&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='nam'>_first_match_any</span> <span class='op'>=</span> <span class='nam'>firstmethod</span><span class='op'>(</span><span class='str'>&#39;annotate_any&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>resolve_all</span><span class='op'>(</span><span class='nam'>anno</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>x</span> <span class='key'>for</span> <span class='nam'>x</span> <span class='key'>in</span> <span class='op'>(</span><span class='nam'>_first_match</span><span class='op'>(</span><span class='nam'>anno</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>_first_match_any</span><span class='op'>(</span><span class='nam'>anno</span><span class='op'>)</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>x</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>MapAnnotation</span><span class='op'>(</span><span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>annotate_any</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>[</span><span class='str'>&#39;*&#39;</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>annotate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>[</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>annotations</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Expands the :setting:`CELERY_ANNOTATIONS` setting.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>expand_annotation</span><span class='op'>(</span><span class='nam'>annotation</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>annotation</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>MapAnnotation</span><span class='op'>(</span><span class='nam'>annotation</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>elif</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>annotation</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>mpromise</span><span class='op'>(</span><span class='nam'>instantiate</span><span class='op'>,</span> <span class='nam'>annotation</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>annotation</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>annotations</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>elif</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>annotations</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>annotations</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>annotations</span><span class='op'>,</span> <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='op'>[</span><span class='nam'>expand_annotation</span><span class='op'>(</span><span class='nam'>anno</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>anno</span> <span class='key'>in</span> <span class='nam'>annotations</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 1242
celery/tests/cover/celery_app_base.html

@@ -1,1242 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.base: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.base</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            308 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>308 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>2 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='pln'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='pln'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='stm run hide_run'><a href='#n74'>74</a></p>
-<p id='n75' class='stm run hide_run'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='stm run hide_run'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='stm run hide_run'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='stm run hide_run'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='stm run hide_run'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='stm run hide_run'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='stm run hide_run'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='stm run hide_run'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='stm run hide_run'><a href='#n131'>131</a></p>
-<p id='n132' class='pln'><a href='#n132'>132</a></p>
-<p id='n133' class='stm run hide_run'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='pln'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='stm run hide_run'><a href='#n140'>140</a></p>
-<p id='n141' class='stm run hide_run'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='stm run hide_run'><a href='#n143'>143</a></p>
-<p id='n144' class='stm run hide_run'><a href='#n144'>144</a></p>
-<p id='n145' class='pln'><a href='#n145'>145</a></p>
-<p id='n146' class='stm run hide_run'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='stm run hide_run'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='stm run hide_run'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='stm run hide_run'><a href='#n162'>162</a></p>
-<p id='n163' class='stm run hide_run'><a href='#n163'>163</a></p>
-<p id='n164' class='pln'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='pln'><a href='#n166'>166</a></p>
-<p id='n167' class='stm run hide_run'><a href='#n167'>167</a></p>
-<p id='n168' class='stm run hide_run'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='pln'><a href='#n171'>171</a></p>
-<p id='n172' class='stm run hide_run'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='stm run hide_run'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='pln'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='stm run hide_run'><a href='#n180'>180</a></p>
-<p id='n181' class='stm run hide_run'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='stm run hide_run'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='stm run hide_run'><a href='#n187'>187</a></p>
-<p id='n188' class='stm run hide_run'><a href='#n188'>188</a></p>
-<p id='n189' class='stm run hide_run'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='stm run hide_run'><a href='#n191'>191</a></p>
-<p id='n192' class='stm run hide_run'><a href='#n192'>192</a></p>
-<p id='n193' class='stm run hide_run'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='stm run hide_run'><a href='#n195'>195</a></p>
-<p id='n196' class='stm run hide_run'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='pln'><a href='#n198'>198</a></p>
-<p id='n199' class='stm run hide_run'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='stm run hide_run'><a href='#n201'>201</a></p>
-<p id='n202' class='stm run hide_run'><a href='#n202'>202</a></p>
-<p id='n203' class='stm run hide_run'><a href='#n203'>203</a></p>
-<p id='n204' class='pln'><a href='#n204'>204</a></p>
-<p id='n205' class='stm run hide_run'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='stm run hide_run'><a href='#n207'>207</a></p>
-<p id='n208' class='stm run hide_run'><a href='#n208'>208</a></p>
-<p id='n209' class='stm run hide_run'><a href='#n209'>209</a></p>
-<p id='n210' class='stm run hide_run'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='stm run hide_run'><a href='#n214'>214</a></p>
-<p id='n215' class='stm run hide_run'><a href='#n215'>215</a></p>
-<p id='n216' class='pln'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='pln'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='pln'><a href='#n220'>220</a></p>
-<p id='n221' class='pln'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='stm run hide_run'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='stm run hide_run'><a href='#n227'>227</a></p>
-<p id='n228' class='stm run hide_run'><a href='#n228'>228</a></p>
-<p id='n229' class='stm run hide_run'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='stm run hide_run'><a href='#n231'>231</a></p>
-<p id='n232' class='pln'><a href='#n232'>232</a></p>
-<p id='n233' class='stm run hide_run'><a href='#n233'>233</a></p>
-<p id='n234' class='stm run hide_run'><a href='#n234'>234</a></p>
-<p id='n235' class='stm run hide_run'><a href='#n235'>235</a></p>
-<p id='n236' class='pln'><a href='#n236'>236</a></p>
-<p id='n237' class='stm run hide_run'><a href='#n237'>237</a></p>
-<p id='n238' class='stm run hide_run'><a href='#n238'>238</a></p>
-<p id='n239' class='pln'><a href='#n239'>239</a></p>
-<p id='n240' class='stm run hide_run'><a href='#n240'>240</a></p>
-<p id='n241' class='stm run hide_run'><a href='#n241'>241</a></p>
-<p id='n242' class='stm run hide_run'><a href='#n242'>242</a></p>
-<p id='n243' class='stm run hide_run'><a href='#n243'>243</a></p>
-<p id='n244' class='stm run hide_run'><a href='#n244'>244</a></p>
-<p id='n245' class='stm run hide_run'><a href='#n245'>245</a></p>
-<p id='n246' class='pln'><a href='#n246'>246</a></p>
-<p id='n247' class='stm run hide_run'><a href='#n247'>247</a></p>
-<p id='n248' class='stm run hide_run'><a href='#n248'>248</a></p>
-<p id='n249' class='stm run hide_run'><a href='#n249'>249</a></p>
-<p id='n250' class='stm run hide_run'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='stm run hide_run'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='stm run hide_run'><a href='#n254'>254</a></p>
-<p id='n255' class='stm run hide_run'><a href='#n255'>255</a></p>
-<p id='n256' class='stm run hide_run'><a href='#n256'>256</a></p>
-<p id='n257' class='stm run hide_run'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='pln'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='stm run hide_run'><a href='#n261'>261</a></p>
-<p id='n262' class='pln'><a href='#n262'>262</a></p>
-<p id='n263' class='stm run hide_run'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='pln'><a href='#n265'>265</a></p>
-<p id='n266' class='pln'><a href='#n266'>266</a></p>
-<p id='n267' class='pln'><a href='#n267'>267</a></p>
-<p id='n268' class='stm run hide_run'><a href='#n268'>268</a></p>
-<p id='n269' class='pln'><a href='#n269'>269</a></p>
-<p id='n270' class='stm run hide_run'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='stm run hide_run'><a href='#n272'>272</a></p>
-<p id='n273' class='pln'><a href='#n273'>273</a></p>
-<p id='n274' class='pln'><a href='#n274'>274</a></p>
-<p id='n275' class='pln'><a href='#n275'>275</a></p>
-<p id='n276' class='stm run hide_run'><a href='#n276'>276</a></p>
-<p id='n277' class='exc'><a href='#n277'>277</a></p>
-<p id='n278' class='exc'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='pln'><a href='#n280'>280</a></p>
-<p id='n281' class='stm run hide_run'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='stm run hide_run'><a href='#n283'>283</a></p>
-<p id='n284' class='pln'><a href='#n284'>284</a></p>
-<p id='n285' class='stm run hide_run'><a href='#n285'>285</a></p>
-<p id='n286' class='stm run hide_run'><a href='#n286'>286</a></p>
-<p id='n287' class='stm run hide_run'><a href='#n287'>287</a></p>
-<p id='n288' class='pln'><a href='#n288'>288</a></p>
-<p id='n289' class='pln'><a href='#n289'>289</a></p>
-<p id='n290' class='pln'><a href='#n290'>290</a></p>
-<p id='n291' class='pln'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='pln'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='pln'><a href='#n295'>295</a></p>
-<p id='n296' class='pln'><a href='#n296'>296</a></p>
-<p id='n297' class='pln'><a href='#n297'>297</a></p>
-<p id='n298' class='stm run hide_run'><a href='#n298'>298</a></p>
-<p id='n299' class='stm run hide_run'><a href='#n299'>299</a></p>
-<p id='n300' class='pln'><a href='#n300'>300</a></p>
-<p id='n301' class='pln'><a href='#n301'>301</a></p>
-<p id='n302' class='pln'><a href='#n302'>302</a></p>
-<p id='n303' class='pln'><a href='#n303'>303</a></p>
-<p id='n304' class='pln'><a href='#n304'>304</a></p>
-<p id='n305' class='pln'><a href='#n305'>305</a></p>
-<p id='n306' class='pln'><a href='#n306'>306</a></p>
-<p id='n307' class='pln'><a href='#n307'>307</a></p>
-<p id='n308' class='pln'><a href='#n308'>308</a></p>
-<p id='n309' class='pln'><a href='#n309'>309</a></p>
-<p id='n310' class='pln'><a href='#n310'>310</a></p>
-<p id='n311' class='pln'><a href='#n311'>311</a></p>
-<p id='n312' class='stm run hide_run'><a href='#n312'>312</a></p>
-<p id='n313' class='pln'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='stm run hide_run'><a href='#n315'>315</a></p>
-<p id='n316' class='pln'><a href='#n316'>316</a></p>
-<p id='n317' class='stm run hide_run'><a href='#n317'>317</a></p>
-<p id='n318' class='stm run hide_run'><a href='#n318'>318</a></p>
-<p id='n319' class='pln'><a href='#n319'>319</a></p>
-<p id='n320' class='stm run hide_run'><a href='#n320'>320</a></p>
-<p id='n321' class='stm run hide_run'><a href='#n321'>321</a></p>
-<p id='n322' class='stm run hide_run'><a href='#n322'>322</a></p>
-<p id='n323' class='pln'><a href='#n323'>323</a></p>
-<p id='n324' class='stm run hide_run'><a href='#n324'>324</a></p>
-<p id='n325' class='stm run hide_run'><a href='#n325'>325</a></p>
-<p id='n326' class='stm run hide_run'><a href='#n326'>326</a></p>
-<p id='n327' class='pln'><a href='#n327'>327</a></p>
-<p id='n328' class='stm run hide_run'><a href='#n328'>328</a></p>
-<p id='n329' class='stm run hide_run'><a href='#n329'>329</a></p>
-<p id='n330' class='stm run hide_run'><a href='#n330'>330</a></p>
-<p id='n331' class='stm run hide_run'><a href='#n331'>331</a></p>
-<p id='n332' class='pln'><a href='#n332'>332</a></p>
-<p id='n333' class='stm run hide_run'><a href='#n333'>333</a></p>
-<p id='n334' class='stm run hide_run'><a href='#n334'>334</a></p>
-<p id='n335' class='stm run hide_run'><a href='#n335'>335</a></p>
-<p id='n336' class='pln'><a href='#n336'>336</a></p>
-<p id='n337' class='stm run hide_run'><a href='#n337'>337</a></p>
-<p id='n338' class='pln'><a href='#n338'>338</a></p>
-<p id='n339' class='pln'><a href='#n339'>339</a></p>
-<p id='n340' class='pln'><a href='#n340'>340</a></p>
-<p id='n341' class='pln'><a href='#n341'>341</a></p>
-<p id='n342' class='pln'><a href='#n342'>342</a></p>
-<p id='n343' class='pln'><a href='#n343'>343</a></p>
-<p id='n344' class='pln'><a href='#n344'>344</a></p>
-<p id='n345' class='pln'><a href='#n345'>345</a></p>
-<p id='n346' class='pln'><a href='#n346'>346</a></p>
-<p id='n347' class='pln'><a href='#n347'>347</a></p>
-<p id='n348' class='pln'><a href='#n348'>348</a></p>
-<p id='n349' class='pln'><a href='#n349'>349</a></p>
-<p id='n350' class='stm run hide_run'><a href='#n350'>350</a></p>
-<p id='n351' class='pln'><a href='#n351'>351</a></p>
-<p id='n352' class='stm run hide_run'><a href='#n352'>352</a></p>
-<p id='n353' class='stm run hide_run'><a href='#n353'>353</a></p>
-<p id='n354' class='stm run hide_run'><a href='#n354'>354</a></p>
-<p id='n355' class='stm run hide_run'><a href='#n355'>355</a></p>
-<p id='n356' class='pln'><a href='#n356'>356</a></p>
-<p id='n357' class='stm run hide_run'><a href='#n357'>357</a></p>
-<p id='n358' class='pln'><a href='#n358'>358</a></p>
-<p id='n359' class='stm run hide_run'><a href='#n359'>359</a></p>
-<p id='n360' class='pln'><a href='#n360'>360</a></p>
-<p id='n361' class='stm run hide_run'><a href='#n361'>361</a></p>
-<p id='n362' class='stm run hide_run'><a href='#n362'>362</a></p>
-<p id='n363' class='pln'><a href='#n363'>363</a></p>
-<p id='n364' class='stm run hide_run'><a href='#n364'>364</a></p>
-<p id='n365' class='stm run hide_run'><a href='#n365'>365</a></p>
-<p id='n366' class='stm run hide_run'><a href='#n366'>366</a></p>
-<p id='n367' class='stm run hide_run'><a href='#n367'>367</a></p>
-<p id='n368' class='pln'><a href='#n368'>368</a></p>
-<p id='n369' class='pln'><a href='#n369'>369</a></p>
-<p id='n370' class='pln'><a href='#n370'>370</a></p>
-<p id='n371' class='pln'><a href='#n371'>371</a></p>
-<p id='n372' class='pln'><a href='#n372'>372</a></p>
-<p id='n373' class='pln'><a href='#n373'>373</a></p>
-<p id='n374' class='pln'><a href='#n374'>374</a></p>
-<p id='n375' class='pln'><a href='#n375'>375</a></p>
-<p id='n376' class='pln'><a href='#n376'>376</a></p>
-<p id='n377' class='pln'><a href='#n377'>377</a></p>
-<p id='n378' class='pln'><a href='#n378'>378</a></p>
-<p id='n379' class='stm run hide_run'><a href='#n379'>379</a></p>
-<p id='n380' class='stm run hide_run'><a href='#n380'>380</a></p>
-<p id='n381' class='pln'><a href='#n381'>381</a></p>
-<p id='n382' class='stm run hide_run'><a href='#n382'>382</a></p>
-<p id='n383' class='pln'><a href='#n383'>383</a></p>
-<p id='n384' class='pln'><a href='#n384'>384</a></p>
-<p id='n385' class='stm run hide_run'><a href='#n385'>385</a></p>
-<p id='n386' class='pln'><a href='#n386'>386</a></p>
-<p id='n387' class='stm run hide_run'><a href='#n387'>387</a></p>
-<p id='n388' class='stm run hide_run'><a href='#n388'>388</a></p>
-<p id='n389' class='pln'><a href='#n389'>389</a></p>
-<p id='n390' class='stm run hide_run'><a href='#n390'>390</a></p>
-<p id='n391' class='stm run hide_run'><a href='#n391'>391</a></p>
-<p id='n392' class='stm run hide_run'><a href='#n392'>392</a></p>
-<p id='n393' class='pln'><a href='#n393'>393</a></p>
-<p id='n394' class='pln'><a href='#n394'>394</a></p>
-<p id='n395' class='stm run hide_run'><a href='#n395'>395</a></p>
-<p id='n396' class='pln'><a href='#n396'>396</a></p>
-<p id='n397' class='stm run hide_run'><a href='#n397'>397</a></p>
-<p id='n398' class='stm run hide_run'><a href='#n398'>398</a></p>
-<p id='n399' class='stm run hide_run'><a href='#n399'>399</a></p>
-<p id='n400' class='pln'><a href='#n400'>400</a></p>
-<p id='n401' class='pln'><a href='#n401'>401</a></p>
-<p id='n402' class='pln'><a href='#n402'>402</a></p>
-<p id='n403' class='stm run hide_run'><a href='#n403'>403</a></p>
-<p id='n404' class='stm run hide_run'><a href='#n404'>404</a></p>
-<p id='n405' class='stm run hide_run'><a href='#n405'>405</a></p>
-<p id='n406' class='stm run hide_run'><a href='#n406'>406</a></p>
-<p id='n407' class='stm run hide_run'><a href='#n407'>407</a></p>
-<p id='n408' class='stm run hide_run'><a href='#n408'>408</a></p>
-<p id='n409' class='stm run hide_run'><a href='#n409'>409</a></p>
-<p id='n410' class='pln'><a href='#n410'>410</a></p>
-<p id='n411' class='stm run hide_run'><a href='#n411'>411</a></p>
-<p id='n412' class='stm run hide_run'><a href='#n412'>412</a></p>
-<p id='n413' class='pln'><a href='#n413'>413</a></p>
-<p id='n414' class='stm run hide_run'><a href='#n414'>414</a></p>
-<p id='n415' class='stm run hide_run'><a href='#n415'>415</a></p>
-<p id='n416' class='stm run hide_run'><a href='#n416'>416</a></p>
-<p id='n417' class='stm run hide_run'><a href='#n417'>417</a></p>
-<p id='n418' class='stm run hide_run'><a href='#n418'>418</a></p>
-<p id='n419' class='stm run hide_run'><a href='#n419'>419</a></p>
-<p id='n420' class='stm run hide_run'><a href='#n420'>420</a></p>
-<p id='n421' class='stm run hide_run'><a href='#n421'>421</a></p>
-<p id='n422' class='pln'><a href='#n422'>422</a></p>
-<p id='n423' class='stm run hide_run'><a href='#n423'>423</a></p>
-<p id='n424' class='pln'><a href='#n424'>424</a></p>
-<p id='n425' class='pln'><a href='#n425'>425</a></p>
-<p id='n426' class='stm run hide_run'><a href='#n426'>426</a></p>
-<p id='n427' class='pln'><a href='#n427'>427</a></p>
-<p id='n428' class='pln'><a href='#n428'>428</a></p>
-<p id='n429' class='stm run hide_run'><a href='#n429'>429</a></p>
-<p id='n430' class='pln'><a href='#n430'>430</a></p>
-<p id='n431' class='pln'><a href='#n431'>431</a></p>
-<p id='n432' class='pln'><a href='#n432'>432</a></p>
-<p id='n433' class='pln'><a href='#n433'>433</a></p>
-<p id='n434' class='pln'><a href='#n434'>434</a></p>
-<p id='n435' class='pln'><a href='#n435'>435</a></p>
-<p id='n436' class='pln'><a href='#n436'>436</a></p>
-<p id='n437' class='pln'><a href='#n437'>437</a></p>
-<p id='n438' class='pln'><a href='#n438'>438</a></p>
-<p id='n439' class='pln'><a href='#n439'>439</a></p>
-<p id='n440' class='pln'><a href='#n440'>440</a></p>
-<p id='n441' class='pln'><a href='#n441'>441</a></p>
-<p id='n442' class='pln'><a href='#n442'>442</a></p>
-<p id='n443' class='pln'><a href='#n443'>443</a></p>
-<p id='n444' class='stm run hide_run'><a href='#n444'>444</a></p>
-<p id='n445' class='stm run hide_run'><a href='#n445'>445</a></p>
-<p id='n446' class='pln'><a href='#n446'>446</a></p>
-<p id='n447' class='stm run hide_run'><a href='#n447'>447</a></p>
-<p id='n448' class='stm run hide_run'><a href='#n448'>448</a></p>
-<p id='n449' class='pln'><a href='#n449'>449</a></p>
-<p id='n450' class='stm run hide_run'><a href='#n450'>450</a></p>
-<p id='n451' class='pln'><a href='#n451'>451</a></p>
-<p id='n452' class='pln'><a href='#n452'>452</a></p>
-<p id='n453' class='stm run hide_run'><a href='#n453'>453</a></p>
-<p id='n454' class='pln'><a href='#n454'>454</a></p>
-<p id='n455' class='stm run hide_run'><a href='#n455'>455</a></p>
-<p id='n456' class='stm run hide_run'><a href='#n456'>456</a></p>
-<p id='n457' class='pln'><a href='#n457'>457</a></p>
-<p id='n458' class='stm run hide_run'><a href='#n458'>458</a></p>
-<p id='n459' class='stm run hide_run'><a href='#n459'>459</a></p>
-<p id='n460' class='pln'><a href='#n460'>460</a></p>
-<p id='n461' class='stm run hide_run'><a href='#n461'>461</a></p>
-<p id='n462' class='stm run hide_run'><a href='#n462'>462</a></p>
-<p id='n463' class='stm run hide_run'><a href='#n463'>463</a></p>
-<p id='n464' class='stm run hide_run'><a href='#n464'>464</a></p>
-<p id='n465' class='pln'><a href='#n465'>465</a></p>
-<p id='n466' class='stm run hide_run'><a href='#n466'>466</a></p>
-<p id='n467' class='pln'><a href='#n467'>467</a></p>
-<p id='n468' class='pln'><a href='#n468'>468</a></p>
-<p id='n469' class='pln'><a href='#n469'>469</a></p>
-<p id='n470' class='stm run hide_run'><a href='#n470'>470</a></p>
-<p id='n471' class='pln'><a href='#n471'>471</a></p>
-<p id='n472' class='pln'><a href='#n472'>472</a></p>
-<p id='n473' class='pln'><a href='#n473'>473</a></p>
-<p id='n474' class='pln'><a href='#n474'>474</a></p>
-<p id='n475' class='stm run hide_run'><a href='#n475'>475</a></p>
-<p id='n476' class='pln'><a href='#n476'>476</a></p>
-<p id='n477' class='pln'><a href='#n477'>477</a></p>
-<p id='n478' class='stm run hide_run'><a href='#n478'>478</a></p>
-<p id='n479' class='pln'><a href='#n479'>479</a></p>
-<p id='n480' class='pln'><a href='#n480'>480</a></p>
-<p id='n481' class='pln'><a href='#n481'>481</a></p>
-<p id='n482' class='pln'><a href='#n482'>482</a></p>
-<p id='n483' class='pln'><a href='#n483'>483</a></p>
-<p id='n484' class='pln'><a href='#n484'>484</a></p>
-<p id='n485' class='pln'><a href='#n485'>485</a></p>
-<p id='n486' class='pln'><a href='#n486'>486</a></p>
-<p id='n487' class='pln'><a href='#n487'>487</a></p>
-<p id='n488' class='pln'><a href='#n488'>488</a></p>
-<p id='n489' class='pln'><a href='#n489'>489</a></p>
-<p id='n490' class='pln'><a href='#n490'>490</a></p>
-<p id='n491' class='pln'><a href='#n491'>491</a></p>
-<p id='n492' class='stm run hide_run'><a href='#n492'>492</a></p>
-<p id='n493' class='pln'><a href='#n493'>493</a></p>
-<p id='n494' class='stm run hide_run'><a href='#n494'>494</a></p>
-<p id='n495' class='pln'><a href='#n495'>495</a></p>
-<p id='n496' class='pln'><a href='#n496'>496</a></p>
-<p id='n497' class='pln'><a href='#n497'>497</a></p>
-<p id='n498' class='pln'><a href='#n498'>498</a></p>
-<p id='n499' class='stm run hide_run'><a href='#n499'>499</a></p>
-<p id='n500' class='pln'><a href='#n500'>500</a></p>
-<p id='n501' class='stm run hide_run'><a href='#n501'>501</a></p>
-<p id='n502' class='pln'><a href='#n502'>502</a></p>
-<p id='n503' class='stm run hide_run'><a href='#n503'>503</a></p>
-<p id='n504' class='pln'><a href='#n504'>504</a></p>
-<p id='n505' class='stm run hide_run'><a href='#n505'>505</a></p>
-<p id='n506' class='pln'><a href='#n506'>506</a></p>
-<p id='n507' class='stm run hide_run'><a href='#n507'>507</a></p>
-<p id='n508' class='pln'><a href='#n508'>508</a></p>
-<p id='n509' class='stm run hide_run'><a href='#n509'>509</a></p>
-<p id='n510' class='pln'><a href='#n510'>510</a></p>
-<p id='n511' class='stm run hide_run'><a href='#n511'>511</a></p>
-<p id='n512' class='pln'><a href='#n512'>512</a></p>
-<p id='n513' class='stm run hide_run'><a href='#n513'>513</a></p>
-<p id='n514' class='pln'><a href='#n514'>514</a></p>
-<p id='n515' class='stm run hide_run'><a href='#n515'>515</a></p>
-<p id='n516' class='pln'><a href='#n516'>516</a></p>
-<p id='n517' class='stm run hide_run'><a href='#n517'>517</a></p>
-<p id='n518' class='pln'><a href='#n518'>518</a></p>
-<p id='n519' class='stm run hide_run'><a href='#n519'>519</a></p>
-<p id='n520' class='pln'><a href='#n520'>520</a></p>
-<p id='n521' class='stm run hide_run'><a href='#n521'>521</a></p>
-<p id='n522' class='pln'><a href='#n522'>522</a></p>
-<p id='n523' class='stm run hide_run'><a href='#n523'>523</a></p>
-<p id='n524' class='pln'><a href='#n524'>524</a></p>
-<p id='n525' class='stm run hide_run'><a href='#n525'>525</a></p>
-<p id='n526' class='pln'><a href='#n526'>526</a></p>
-<p id='n527' class='stm run hide_run'><a href='#n527'>527</a></p>
-<p id='n528' class='pln'><a href='#n528'>528</a></p>
-<p id='n529' class='stm run hide_run'><a href='#n529'>529</a></p>
-<p id='n530' class='pln'><a href='#n530'>530</a></p>
-<p id='n531' class='stm run hide_run'><a href='#n531'>531</a></p>
-<p id='n532' class='pln'><a href='#n532'>532</a></p>
-<p id='n533' class='stm run hide_run'><a href='#n533'>533</a></p>
-<p id='n534' class='pln'><a href='#n534'>534</a></p>
-<p id='n535' class='stm run hide_run'><a href='#n535'>535</a></p>
-<p id='n536' class='pln'><a href='#n536'>536</a></p>
-<p id='n537' class='stm run hide_run'><a href='#n537'>537</a></p>
-<p id='n538' class='stm run hide_run'><a href='#n538'>538</a></p>
-<p id='n539' class='stm run hide_run'><a href='#n539'>539</a></p>
-<p id='n540' class='stm run hide_run'><a href='#n540'>540</a></p>
-<p id='n541' class='stm run hide_run'><a href='#n541'>541</a></p>
-<p id='n542' class='pln'><a href='#n542'>542</a></p>
-<p id='n543' class='stm run hide_run'><a href='#n543'>543</a></p>
-<p id='n544' class='pln'><a href='#n544'>544</a></p>
-<p id='n545' class='stm run hide_run'><a href='#n545'>545</a></p>
-<p id='n546' class='pln'><a href='#n546'>546</a></p>
-<p id='n547' class='stm run hide_run'><a href='#n547'>547</a></p>
-<p id='n548' class='pln'><a href='#n548'>548</a></p>
-<p id='n549' class='stm run hide_run'><a href='#n549'>549</a></p>
-<p id='n550' class='pln'><a href='#n550'>550</a></p>
-<p id='n551' class='stm run hide_run'><a href='#n551'>551</a></p>
-<p id='n552' class='pln'><a href='#n552'>552</a></p>
-<p id='n553' class='stm run hide_run'><a href='#n553'>553</a></p>
-<p id='n554' class='pln'><a href='#n554'>554</a></p>
-<p id='n555' class='stm run hide_run'><a href='#n555'>555</a></p>
-<p id='n556' class='pln'><a href='#n556'>556</a></p>
-<p id='n557' class='stm run hide_run'><a href='#n557'>557</a></p>
-<p id='n558' class='pln'><a href='#n558'>558</a></p>
-<p id='n559' class='stm run hide_run'><a href='#n559'>559</a></p>
-<p id='n560' class='pln'><a href='#n560'>560</a></p>
-<p id='n561' class='stm run hide_run'><a href='#n561'>561</a></p>
-<p id='n562' class='pln'><a href='#n562'>562</a></p>
-<p id='n563' class='stm run hide_run'><a href='#n563'>563</a></p>
-<p id='n564' class='pln'><a href='#n564'>564</a></p>
-<p id='n565' class='stm run hide_run'><a href='#n565'>565</a></p>
-<p id='n566' class='pln'><a href='#n566'>566</a></p>
-<p id='n567' class='stm run hide_run'><a href='#n567'>567</a></p>
-<p id='n568' class='pln'><a href='#n568'>568</a></p>
-<p id='n569' class='stm run hide_run'><a href='#n569'>569</a></p>
-<p id='n570' class='pln'><a href='#n570'>570</a></p>
-<p id='n571' class='stm run hide_run'><a href='#n571'>571</a></p>
-<p id='n572' class='pln'><a href='#n572'>572</a></p>
-<p id='n573' class='stm run hide_run'><a href='#n573'>573</a></p>
-<p id='n574' class='pln'><a href='#n574'>574</a></p>
-<p id='n575' class='stm run hide_run'><a href='#n575'>575</a></p>
-<p id='n576' class='pln'><a href='#n576'>576</a></p>
-<p id='n577' class='stm run hide_run'><a href='#n577'>577</a></p>
-<p id='n578' class='stm run hide_run'><a href='#n578'>578</a></p>
-<p id='n579' class='stm run hide_run'><a href='#n579'>579</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.base</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Actual App instance implementation.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>threading</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>warnings</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>collections</span> <span class='key'>import</span> <span class='nam'>Callable</span><span class='op'>,</span> <span class='nam'>defaultdict</span><span class='op'>,</span> <span class='nam'>deque</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>contextlib</span> <span class='key'>import</span> <span class='nam'>contextmanager</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>copy</span> <span class='key'>import</span> <span class='nam'>deepcopy</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>functools</span> <span class='key'>import</span> <span class='nam'>wraps</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>operator</span> <span class='key'>import</span> <span class='nam'>attrgetter</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>billiard</span><span class='op'>.</span><span class='nam'>util</span> <span class='key'>import</span> <span class='nam'>register_after_fork</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>clocks</span> <span class='key'>import</span> <span class='nam'>LamportClock</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>serialization</span> <span class='key'>import</span> <span class='nam'>enable_insecure_serializers</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>platforms</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>_task_stack</span><span class='op'>,</span> <span class='nam'>_tls</span><span class='op'>,</span> <span class='nam'>get_current_app</span><span class='op'>,</span> <span class='nam'>_register_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>AlwaysEagerIgnored</span><span class='op'>,</span> <span class='nam'>ImproperlyConfigured</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>items</span><span class='op'>,</span> <span class='nam'>values</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>loaders</span> <span class='key'>import</span> <span class='nam'>get_loader_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>local</span> <span class='key'>import</span> <span class='nam'>PromiseProxy</span><span class='op'>,</span> <span class='nam'>maybe_evaluate</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>first</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>instantiate</span><span class='op'>,</span> <span class='nam'>symbol_by_name</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>log</span> <span class='key'>import</span> <span class='nam'>ensure_process_aware_logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>objects</span> <span class='key'>import</span> <span class='nam'>mro_lookup</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>annotations</span> <span class='key'>import</span> <span class='nam'>prepare</span> <span class='key'>as</span> <span class='nam'>prepare_annotations</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>builtins</span> <span class='key'>import</span> <span class='nam'>shared_task</span><span class='op'>,</span> <span class='nam'>load_shared_tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>defaults</span> <span class='key'>import</span> <span class='nam'>DEFAULTS</span><span class='op'>,</span> <span class='nam'>find_deprecated_settings</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>registry</span> <span class='key'>import</span> <span class='nam'>TaskRegistry</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'>&nbsp; &nbsp; <span class='nam'>AppPickler</span><span class='op'>,</span> <span class='nam'>Settings</span><span class='op'>,</span> <span class='nam'>bugreport</span><span class='op'>,</span> <span class='nam'>_unpickle_app</span><span class='op'>,</span> <span class='nam'>_unpickle_app_v2</span><span class='op'>,</span> <span class='nam'>appstr</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'><span class='nam'>_EXECV</span> <span class='op'>=</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;FORKED_BY_MULTIPROCESSING&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'><span class='nam'>BUILTIN_FIXUPS</span> <span class='op'>=</span> <span class='nam'>frozenset</span><span class='op'>(</span><span class='op'>[</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;celery.fixups.django:fixup&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='pln'><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'><span class='nam'>ERR_ENVVAR_NOT_SET</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;\</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'><span class='str'>The environment variable {0!r} is not set,</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='str'>and as such the configuration could not be loaded.</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'><span class='str'>Please set this variable and make it point to</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'><span class='str'>a configuration module.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>app_has_custom</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>mro_lookup</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>stop</span><span class='op'>=</span><span class='op'>(</span><span class='nam'>Celery</span><span class='op'>,</span> <span class='nam'>object</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>monkey_patched</span><span class='op'>=</span><span class='op'>[</span><span class='nam'>__name__</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_unpickle_appattr</span><span class='op'>(</span><span class='nam'>reverse_name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Given an attribute name and a list of args, gets</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'><span class='str'>&nbsp; &nbsp; the attribute from the current app and calls it.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_rgetattr</span><span class='op'>(</span><span class='nam'>reverse_name</span><span class='op'>)</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Celery</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Pickler</span> <span class='op'>=</span> <span class='nam'>AppPickler</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>SYSTEM</span> <span class='op'>=</span> <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>SYSTEM</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>IS_OSX</span><span class='op'>,</span> <span class='nam'>IS_WINDOWS</span> <span class='op'>=</span> <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>IS_OSX</span><span class='op'>,</span> <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>IS_WINDOWS</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>amqp_cls</span> <span class='op'>=</span> <span class='str'>&#39;celery.app.amqp:AMQP&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>backend_cls</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>events_cls</span> <span class='op'>=</span> <span class='str'>&#39;celery.events:Events&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>loader_cls</span> <span class='op'>=</span> <span class='str'>&#39;celery.loaders.app:AppLoader&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>log_cls</span> <span class='op'>=</span> <span class='str'>&#39;celery.app.log:Logging&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>control_cls</span> <span class='op'>=</span> <span class='str'>&#39;celery.app.control:Control&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>registry_cls</span> <span class='op'>=</span> <span class='nam'>TaskRegistry</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_pool</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>main</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>backend</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>amqp</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>events</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>log</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>control</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>set_as_current</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>accept_magic_kwargs</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>tasks</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>broker</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>include</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>changes</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>config_source</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>fixups</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>clock</span> <span class='op'>=</span> <span class='nam'>LamportClock</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>main</span> <span class='op'>=</span> <span class='nam'>main</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp_cls</span> <span class='op'>=</span> <span class='nam'>amqp</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend_cls</span> <span class='op'>=</span> <span class='nam'>backend</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>events_cls</span> <span class='op'>=</span> <span class='nam'>events</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>events_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader_cls</span> <span class='op'>=</span> <span class='nam'>loader</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_cls</span> <span class='op'>=</span> <span class='nam'>log</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>control_cls</span> <span class='op'>=</span> <span class='nam'>control</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>control_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_as_current</span> <span class='op'>=</span> <span class='nam'>set_as_current</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>registry_cls</span> <span class='op'>=</span> <span class='nam'>symbol_by_name</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>registry_cls</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>accept_magic_kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>user_options</span> <span class='op'>=</span> <span class='nam'>defaultdict</span><span class='op'>(</span><span class='nam'>set</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span> <span class='op'>=</span> <span class='nam'>config_source</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>steps</span> <span class='op'>=</span> <span class='nam'>defaultdict</span><span class='op'>(</span><span class='nam'>set</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>configured</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending_defaults</span> <span class='op'>=</span> <span class='nam'>deque</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>finalized</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_finalize_mutex</span> <span class='op'>=</span> <span class='nam'>threading</span><span class='op'>.</span><span class='nam'>Lock</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending</span> <span class='op'>=</span> <span class='nam'>deque</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span> <span class='op'>=</span> <span class='nam'>tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>,</span> <span class='nam'>TaskRegistry</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span> <span class='op'>=</span> <span class='nam'>TaskRegistry</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># If the class defins a custom __reduce_args__ we need to use</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># the old way of pickling apps, which is pickling a list of</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># args instead of the new way that pickles a dict of keywords.</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_using_v1_reduce</span> <span class='op'>=</span> <span class='nam'>app_has_custom</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='str'>&#39;__reduce_args__&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># these options are moved to the config to</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># simplify pickling of the app object.</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_preconf</span> <span class='op'>=</span> <span class='nam'>changes</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>broker</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_preconf</span><span class='op'>[</span><span class='str'>&#39;BROKER_URL&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>broker</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>include</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_preconf</span><span class='op'>[</span><span class='str'>&#39;CELERY_IMPORTS&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>include</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>enable_insecure_serializers</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Apply fixups.</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>fixups</span> <span class='op'>=</span> <span class='nam'>set</span><span class='op'>(</span><span class='nam'>fixups</span> <span class='key'>or</span> <span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>fixup</span> <span class='key'>in</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>fixups</span> <span class='op'>|</span> <span class='nam'>BUILTIN_FIXUPS</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>symbol_by_name</span><span class='op'>(</span><span class='nam'>fixup</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_as_current</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_current</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># See Issue #1126</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># this is used when pickling the app object so that configuration</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># is reread without having to pickle the contents</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># (which is often unpickleable anyway)</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>config_from_object</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>on_init</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_register_app</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>set_current</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_tls</span><span class='op'>.</span><span class='nam'>current_app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__enter__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__exit__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>exc_info</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>close</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>close</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_maybe_close_pool</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_init</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Optional callback called at init.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>start</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>argv</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.bin.celery:CeleryCommand&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>execute_from_commandline</span><span class='op'>(</span><span class='nam'>argv</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>worker_main</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>argv</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery.bin.worker:worker&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>execute_from_commandline</span><span class='op'>(</span><span class='nam'>argv</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates new task class from any callable.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>_EXECV</span> <span class='key'>and</span> <span class='key'>not</span> <span class='nam'>opts</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;_force_evaluate&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># When using execv the task in the original module will point to a</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># different app, so doing things like &#39;add.request&#39; will point to</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># a differnt task instance.&nbsp; This makes sure it will always use</span><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># the task instance from the current app.</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Really need a better solution for this :(</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='op'>.</span> <span class='key'>import</span> <span class='nam'>shared_task</span> <span class='key'>as</span> <span class='nam'>proxies_to_curapp</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;_force_evaluate&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>True</span>&nbsp; <span class='com'># XXX Py2.5</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>proxies_to_curapp</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>inner_create_task_cls</span><span class='op'>(</span><span class='nam'>shared</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>filter</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_filt</span> <span class='op'>=</span> <span class='nam'>filter</span>&nbsp; <span class='com'># stupid 2to3</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_create_task_cls</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>shared</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>cons</span> <span class='op'>=</span> <span class='key'>lambda</span> <span class='nam'>app</span><span class='op'>:</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_task_from_fun</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>cons</span><span class='op'>.</span><span class='nam'>__name__</span> <span class='op'>=</span> <span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__name__</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>shared_task</span><span class='op'>(</span><span class='nam'>cons</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span><span class='op'>:</span>&nbsp; <span class='com'># compat mode</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_task_from_fun</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>filter</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>filter</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># return a proxy object that is only evaluated when first used</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>promise</span> <span class='op'>=</span> <span class='nam'>PromiseProxy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_task_from_fun</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>,</span> <span class='nam'>opts</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>promise</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>_filt</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_filt</span><span class='op'>(</span><span class='nam'>promise</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>promise</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_create_task_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>len</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>)</span> <span class='op'>==</span> <span class='num'>1</span> <span class='key'>and</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>Callable</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>inner_create_task_cls</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>args</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>TypeError</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task() takes no arguments (%s given)&#39;</span> <span class='op'>%</span> <span class='op'>(</span><span class='nam'>len</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>inner_create_task_cls</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>opts</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_task_from_fun</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>fun</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>base</span> <span class='op'>=</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;base&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Task</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>T</span> <span class='op'>=</span> <span class='nam'>type</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__name__</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>base</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;app&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;accept_magic_kwargs&#39;</span><span class='op'>:</span> <span class='nam'>False</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;run&#39;</span><span class='op'>:</span> <span class='nam'>staticmethod</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;__doc__&#39;</span><span class='op'>:</span> <span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__doc__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;__module__&#39;</span><span class='op'>:</span> <span class='nam'>fun</span><span class='op'>.</span><span class='nam'>__module__</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>)</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>[</span><span class='nam'>T</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span>&nbsp; <span class='com'># return global instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span><span class='op'>.</span><span class='nam'>bind</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>finalize</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_finalize_mutex</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>finalized</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>finalized</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>load_shared_tasks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>pending</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>while</span> <span class='nam'>pending</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>maybe_evaluate</span><span class='op'>(</span><span class='nam'>pending</span><span class='op'>.</span><span class='nam'>popleft</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>values</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span><span class='op'>.</span><span class='nam'>bind</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>add_defaults</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>fun</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>,</span> <span class='nam'>Callable</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>d</span><span class='op'>,</span> <span class='nam'>fun</span> <span class='op'>=</span> <span class='nam'>fun</span><span class='op'>,</span> <span class='key'>lambda</span><span class='op'>:</span> <span class='nam'>d</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>configured</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>add_defaults</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending_defaults</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>config_from_object</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>,</span> <span class='nam'>silent</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>del</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span> <span class='op'>=</span> <span class='nam'>obj</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>config_from_object</span><span class='op'>(</span><span class='nam'>obj</span><span class='op'>,</span> <span class='nam'>silent</span><span class='op'>=</span><span class='nam'>silent</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>config_from_envvar</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>variable_name</span><span class='op'>,</span> <span class='nam'>silent</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>module_name</span> <span class='op'>=</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>variable_name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>module_name</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>silent</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>ImproperlyConfigured</span><span class='op'>(</span><span class='nam'>ERR_ENVVAR_NOT_SET</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>module_name</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>config_from_object</span><span class='op'>(</span><span class='nam'>module_name</span><span class='op'>,</span> <span class='nam'>silent</span><span class='op'>=</span><span class='nam'>silent</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>config_from_cmdline</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>argv</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>cmdline_config_parser</span><span class='op'>(</span><span class='nam'>argv</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>autodiscover_tasks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>packages</span><span class='op'>,</span> <span class='nam'>related_name</span><span class='op'>=</span><span class='str'>&#39;tasks&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_FORCE_BILLIARD_LOGGING</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># we&#39;ll use billiard&#39;s processName instead of</span><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># multiprocessing&#39;s one in all the loggers</span><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># created after this call</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ensure_process_aware_logger</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>autodiscover_tasks</span><span class='op'>(</span><span class='nam'>packages</span><span class='op'>,</span> <span class='nam'>related_name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>send_task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>eta</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>producer</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result_cls</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>expires</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>publisher</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>producer</span> <span class='op'>=</span> <span class='nam'>producer</span> <span class='key'>or</span> <span class='nam'>publisher</span>&nbsp; <span class='com'># XXX compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>warnings</span><span class='op'>.</span><span class='nam'>warn</span><span class='op'>(</span><span class='nam'>AlwaysEagerIgnored</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CELERY_ALWAYS_EAGER has no effect on send_task&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result_cls</span> <span class='op'>=</span> <span class='nam'>result_cls</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>router</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>Router</span><span class='op'>(</span><span class='nam'>queues</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;compression&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_MESSAGE_COMPRESSION</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>router</span><span class='op'>.</span><span class='nam'>route</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>producer_or_acquire</span><span class='op'>(</span><span class='nam'>producer</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>producer</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>result_cls</span><span class='op'>(</span><span class='nam'>producer</span><span class='op'>.</span><span class='nam'>publish_task</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>countdown</span><span class='op'>,</span> <span class='nam'>eta</span><span class='op'>=</span><span class='nam'>eta</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>expires</span><span class='op'>=</span><span class='nam'>expires</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>connection</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>hostname</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>userid</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>password</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>virtual_host</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>port</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>ssl</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>connect_timeout</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>transport</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>transport_options</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>heartbeat</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conf</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>Connection</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>hostname</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_HOST</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>userid</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_USER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>password</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_PASSWORD</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>virtual_host</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_VHOST</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>port</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_PORT</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>transport</span><span class='op'>=</span><span class='nam'>transport</span> <span class='key'>or</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_TRANSPORT</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t306' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ssl</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>either</span><span class='op'>(</span><span class='str'>&#39;BROKER_USE_SSL&#39;</span><span class='op'>,</span> <span class='nam'>ssl</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t307' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>connect_timeout</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>either</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t308' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;BROKER_CONNECTION_TIMEOUT&#39;</span><span class='op'>,</span> <span class='nam'>connect_timeout</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t309' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>heartbeat</span><span class='op'>=</span><span class='nam'>heartbeat</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t310' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>transport_options</span><span class='op'>=</span><span class='nam'>dict</span><span class='op'>(</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_TRANSPORT_OPTIONS</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t311' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='op'>**</span><span class='nam'>transport_options</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t312' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>broker_connection</span> <span class='op'>=</span> <span class='nam'>connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t313' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t314' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>contextmanager</span><span class='strut'>&nbsp;</span></p>
-<p id='t315' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>connection_or_acquire</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>pool</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t316' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t317' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>connection</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t318' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t319' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t320' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>pool</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t321' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pool</span><span class='op'>.</span><span class='nam'>acquire</span><span class='op'>(</span><span class='nam'>block</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>connection</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t322' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t323' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t324' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>connection</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t325' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t326' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_connection</span> <span class='op'>=</span> <span class='nam'>connection_or_acquire</span>&nbsp; <span class='com'># XXX compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t327' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t328' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>contextmanager</span><span class='strut'>&nbsp;</span></p>
-<p id='t329' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>producer_or_acquire</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>producer</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t330' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>producer</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t331' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>producer</span><span class='strut'>&nbsp;</span></p>
-<p id='t332' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t333' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>producer_pool</span><span class='op'>.</span><span class='nam'>acquire</span><span class='op'>(</span><span class='nam'>block</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>producer</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t334' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>producer</span><span class='strut'>&nbsp;</span></p>
-<p id='t335' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_producer</span> <span class='op'>=</span> <span class='nam'>producer_or_acquire</span>&nbsp; <span class='com'># XXX compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t336' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t337' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>with_default_connection</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>fun</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t338' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;With any function accepting a `connection`</span><span class='strut'>&nbsp;</span></p>
-<p id='t339' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; keyword argument, establishes a default connection if one is</span><span class='strut'>&nbsp;</span></p>
-<p id='t340' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; not already passed to it.</span><span class='strut'>&nbsp;</span></p>
-<p id='t341' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t342' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Any automatically established connection will be closed after</span><span class='strut'>&nbsp;</span></p>
-<p id='t343' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; the function returns.</span><span class='strut'>&nbsp;</span></p>
-<p id='t344' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t345' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; **Deprecated**</span><span class='strut'>&nbsp;</span></p>
-<p id='t346' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t347' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Use ``with app.connection_or_acquire(connection)`` instead.</span><span class='strut'>&nbsp;</span></p>
-<p id='t348' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t349' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t350' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>@</span><span class='nam'>wraps</span><span class='op'>(</span><span class='nam'>fun</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t351' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_inner</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t352' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>connection</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;connection&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t353' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>connection_or_acquire</span><span class='op'>(</span><span class='nam'>connection</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>c</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t354' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>fun</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>c</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t355' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_inner</span><span class='strut'>&nbsp;</span></p>
-<p id='t356' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t357' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>prepare_config</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>c</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t358' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Prepare configuration before it is merged with the defaults.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t359' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>find_deprecated_settings</span><span class='op'>(</span><span class='nam'>c</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t360' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t361' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>now</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t362' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>now</span><span class='op'>(</span><span class='nam'>utc</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ENABLE_UTC</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t363' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t364' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>mail_admins</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>subject</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>fail_silently</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t365' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>ADMINS</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t366' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>to</span> <span class='op'>=</span> <span class='op'>[</span><span class='nam'>admin_email</span> <span class='key'>for</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>admin_email</span> <span class='key'>in</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>ADMINS</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t367' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>mail_admins</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t368' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>subject</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>fail_silently</span><span class='op'>,</span> <span class='nam'>to</span><span class='op'>=</span><span class='nam'>to</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t369' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>SERVER_EMAIL</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t370' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>host</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_HOST</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t371' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>port</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_PORT</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t372' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>user</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_HOST_USER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t373' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>password</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_HOST_PASSWORD</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t374' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>timeout</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_TIMEOUT</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t375' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>use_ssl</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_USE_SSL</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t376' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>use_tls</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>EMAIL_USE_TLS</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t377' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t378' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t379' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>select_queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t380' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>.</span><span class='nam'>select_subset</span><span class='op'>(</span><span class='nam'>queues</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t381' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t382' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>either</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>default_key</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>values</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t383' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Fallback to the value of a configuration key if none of the</span><span class='strut'>&nbsp;</span></p>
-<p id='t384' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; `*values` are true.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t385' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>first</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>values</span><span class='op'>)</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>default_key</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t386' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t387' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>bugreport</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t388' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>bugreport</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t389' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t390' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_get_backend</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t391' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>backends</span> <span class='key'>import</span> <span class='nam'>get_backend_by_url</span><span class='strut'>&nbsp;</span></p>
-<p id='t392' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>url</span> <span class='op'>=</span> <span class='nam'>get_backend_by_url</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t393' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend_cls</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_RESULT_BACKEND</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t394' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t395' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>backend</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>url</span><span class='op'>=</span><span class='nam'>url</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t396' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t397' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_get_config</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t398' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>configured</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t399' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>s</span> <span class='op'>=</span> <span class='nam'>Settings</span><span class='op'>(</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>prepare_config</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t400' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>deepcopy</span><span class='op'>(</span><span class='nam'>DEFAULTS</span><span class='op'>)</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t401' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t402' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># load lazy config dict initializers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t403' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>pending</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pending_defaults</span><span class='strut'>&nbsp;</span></p>
-<p id='t404' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>while</span> <span class='nam'>pending</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t405' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>s</span><span class='op'>.</span><span class='nam'>add_defaults</span><span class='op'>(</span><span class='nam'>pending</span><span class='op'>.</span><span class='nam'>popleft</span><span class='op'>(</span><span class='op'>)</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t406' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_preconf</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t407' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_preconf</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t408' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>s</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t409' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>s</span><span class='strut'>&nbsp;</span></p>
-<p id='t410' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t411' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_after_fork</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj_</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t412' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_maybe_close_pool</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t413' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t414' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_maybe_close_pool</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t415' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t416' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span><span class='op'>.</span><span class='nam'>force_close_all</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t417' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t418' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>amqp</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp</span><span class='strut'>&nbsp;</span></p>
-<p id='t419' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>_producer_pool</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t420' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>_producer_pool</span><span class='op'>.</span><span class='nam'>force_close_all</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t421' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>_producer_pool</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t422' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t423' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>create_task_cls</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t424' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates a base task class using default configuration</span><span class='strut'>&nbsp;</span></p>
-<p id='t425' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; taken from this app.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t426' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.app.task:Task&#39;</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;Task&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t427' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>attribute</span><span class='op'>=</span><span class='str'>&#39;_app&#39;</span><span class='op'>,</span> <span class='nam'>abstract</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t428' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t429' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>Class</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>attribute</span><span class='op'>=</span><span class='str'>&#39;app&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t430' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>reverse</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kw</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t431' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Subclass an app-compatible class by setting its app attribute</span><span class='strut'>&nbsp;</span></p>
-<p id='t432' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; to be this app instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t433' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t434' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; App-compatible means that the class has a class attribute that</span><span class='strut'>&nbsp;</span></p>
-<p id='t435' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; provides the default app it should use, e.g.</span><span class='strut'>&nbsp;</span></p>
-<p id='t436' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; ``class Foo: app = None``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t437' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t438' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param Class: The app-compatible class to subclass.</span><span class='strut'>&nbsp;</span></p>
-<p id='t439' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword name: Custom name for the target class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t440' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword attribute: Name of the attribute holding the app,</span><span class='strut'>&nbsp;</span></p>
-<p id='t441' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; default is &#39;app&#39;.</span><span class='strut'>&nbsp;</span></p>
-<p id='t442' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t443' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t444' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>Class</span> <span class='op'>=</span> <span class='nam'>symbol_by_name</span><span class='op'>(</span><span class='nam'>Class</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t445' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reverse</span> <span class='op'>=</span> <span class='nam'>reverse</span> <span class='key'>if</span> <span class='nam'>reverse</span> <span class='key'>else</span> <span class='nam'>Class</span><span class='op'>.</span><span class='nam'>__name__</span><span class='strut'>&nbsp;</span></p>
-<p id='t446' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t447' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t448' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_unpickle_appattr</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>reverse</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__reduce_args__</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t449' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t450' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>attrs</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>{</span><span class='nam'>attribute</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>__module__</span><span class='op'>=</span><span class='nam'>Class</span><span class='op'>.</span><span class='nam'>__module__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t451' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>__doc__</span><span class='op'>=</span><span class='nam'>Class</span><span class='op'>.</span><span class='nam'>__doc__</span><span class='op'>,</span> <span class='nam'>__reduce__</span><span class='op'>=</span><span class='nam'>__reduce__</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kw</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t452' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t453' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>type</span><span class='op'>(</span><span class='nam'>name</span> <span class='key'>or</span> <span class='nam'>Class</span><span class='op'>.</span><span class='nam'>__name__</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>Class</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t454' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t455' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_rgetattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>path</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t456' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>attrgetter</span><span class='op'>(</span><span class='nam'>path</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t457' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t458' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__repr__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t459' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;&lt;{0} {1}&gt;&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__name__</span><span class='op'>,</span> <span class='nam'>appstr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t460' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t461' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t462' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_using_v1_reduce</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t463' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__reduce_v1__</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t464' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>_unpickle_app_v2</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__reduce_keys__</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t465' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t466' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce_v1__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t467' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Reduce only pickles the configuration changes,</span><span class='strut'>&nbsp;</span></p>
-<p id='t468' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># so the default configuration doesn&#39;t have to be passed</span><span class='strut'>&nbsp;</span></p>
-<p id='t469' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># between processes.</span><span class='strut'>&nbsp;</span></p>
-<p id='t470' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t471' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_unpickle_app</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t472' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Pickler</span><span class='op'>)</span> <span class='op'>+</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__reduce_args__</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t473' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t474' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t475' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce_keys__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t476' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns keyword arguments used to reconstruct the object</span><span class='strut'>&nbsp;</span></p>
-<p id='t477' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; when unpickling.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t478' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t479' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;main&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>main</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t480' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;changes&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>changes</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t481' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;loader&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t482' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;backend&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t483' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;amqp&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t484' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;events&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>events_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t485' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;log&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t486' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;control&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>control_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t487' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;accept_magic_kwargs&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t488' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;fixups&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>fixups</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t489' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;config_source&#39;</span><span class='op'>:</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t490' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t491' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t492' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce_args__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t493' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Deprecated method, please use :meth:`__reduce_keys__` instead.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t494' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>main</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>changes</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t495' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader_cls</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend_cls</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t496' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>events_cls</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_cls</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>control_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t497' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_config_source</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t498' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t499' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t500' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>Worker</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t501' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.apps.worker:Worker&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t502' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t503' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t504' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>WorkController</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t505' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.worker:WorkController&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t506' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t507' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t508' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>Beat</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t509' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.apps.beat:Beat&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t510' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t511' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t512' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>TaskSet</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t513' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.task.sets:TaskSet&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t514' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t515' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t516' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>Task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t517' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>create_task_cls</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t518' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t519' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t520' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>annotations</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t521' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>prepare_annotations</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ANNOTATIONS</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t522' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t523' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t524' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t525' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.result:AsyncResult&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t526' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t527' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t528' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>GroupResult</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t529' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.result:GroupResult&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t530' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t531' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t532' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>TaskSetResult</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># XXX compat</span><span class='strut'>&nbsp;</span></p>
-<p id='t533' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='str'>&#39;celery.result:TaskSetResult&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t534' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t535' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t536' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>pool</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t537' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t538' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>register_after_fork</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_after_fork</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t539' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>limit</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>BROKER_POOL_LIMIT</span><span class='strut'>&nbsp;</span></p>
-<p id='t540' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>Pool</span><span class='op'>(</span><span class='nam'>limit</span><span class='op'>=</span><span class='nam'>limit</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t541' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_pool</span><span class='strut'>&nbsp;</span></p>
-<p id='t542' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t543' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t544' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>current_task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t545' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_task_stack</span><span class='op'>.</span><span class='nam'>top</span><span class='strut'>&nbsp;</span></p>
-<p id='t546' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t547' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t548' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>amqp</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t549' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>amqp_cls</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t550' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t551' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t552' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>backend</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t553' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_get_backend</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t554' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t555' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t556' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>conf</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t557' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_get_config</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t558' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t559' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t560' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>control</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t561' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>control_cls</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t562' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t563' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t564' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>events</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t565' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>events_cls</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t566' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t567' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t568' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>loader</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t569' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_loader_cls</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loader_cls</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t570' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t571' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t572' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>log</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t573' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_cls</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t574' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t575' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t576' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>tasks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t577' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>finalize</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t578' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t579' class='stm run hide_run'><span class='nam'>App</span> <span class='op'>=</span> <span class='nam'>Celery</span>&nbsp; <span class='com'># compat</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 850
celery/tests/cover/celery_app_builtins.html

@@ -1,850 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.builtins: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.builtins</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            219 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>219 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='stm run hide_run'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='pln'><a href='#n16'>16</a></p>
-<p id='n17' class='pln'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='pln'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='pln'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='pln'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='pln'><a href='#n66'>66</a></p>
-<p id='n67' class='stm run hide_run'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='pln'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='stm run hide_run'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='stm run hide_run'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='stm run hide_run'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='pln'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='pln'><a href='#n124'>124</a></p>
-<p id='n125' class='stm run hide_run'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='stm run hide_run'><a href='#n127'>127</a></p>
-<p id='n128' class='stm run hide_run'><a href='#n128'>128</a></p>
-<p id='n129' class='stm run hide_run'><a href='#n129'>129</a></p>
-<p id='n130' class='pln'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='pln'><a href='#n135'>135</a></p>
-<p id='n136' class='stm run hide_run'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='stm run hide_run'><a href='#n138'>138</a></p>
-<p id='n139' class='stm run hide_run'><a href='#n139'>139</a></p>
-<p id='n140' class='stm run hide_run'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='stm run hide_run'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='pln'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='stm run hide_run'><a href='#n157'>157</a></p>
-<p id='n158' class='pln'><a href='#n158'>158</a></p>
-<p id='n159' class='stm run hide_run'><a href='#n159'>159</a></p>
-<p id='n160' class='stm run hide_run'><a href='#n160'>160</a></p>
-<p id='n161' class='stm run hide_run'><a href='#n161'>161</a></p>
-<p id='n162' class='stm run hide_run'><a href='#n162'>162</a></p>
-<p id='n163' class='pln'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='stm run hide_run'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='pln'><a href='#n167'>167</a></p>
-<p id='n168' class='stm run hide_run'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='stm run hide_run'><a href='#n170'>170</a></p>
-<p id='n171' class='stm run hide_run'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='stm run hide_run'><a href='#n175'>175</a></p>
-<p id='n176' class='stm run hide_run'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='stm run hide_run'><a href='#n178'>178</a></p>
-<p id='n179' class='stm run hide_run'><a href='#n179'>179</a></p>
-<p id='n180' class='stm run hide_run'><a href='#n180'>180</a></p>
-<p id='n181' class='stm run hide_run'><a href='#n181'>181</a></p>
-<p id='n182' class='pln'><a href='#n182'>182</a></p>
-<p id='n183' class='stm run hide_run'><a href='#n183'>183</a></p>
-<p id='n184' class='stm run hide_run'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='pln'><a href='#n187'>187</a></p>
-<p id='n188' class='stm run hide_run'><a href='#n188'>188</a></p>
-<p id='n189' class='stm run hide_run'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='stm run hide_run'><a href='#n191'>191</a></p>
-<p id='n192' class='stm run hide_run'><a href='#n192'>192</a></p>
-<p id='n193' class='stm run hide_run'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='stm run hide_run'><a href='#n195'>195</a></p>
-<p id='n196' class='stm run hide_run'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='stm run hide_run'><a href='#n198'>198</a></p>
-<p id='n199' class='stm run hide_run'><a href='#n199'>199</a></p>
-<p id='n200' class='pln'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='stm run hide_run'><a href='#n202'>202</a></p>
-<p id='n203' class='stm run hide_run'><a href='#n203'>203</a></p>
-<p id='n204' class='stm run hide_run'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='stm run hide_run'><a href='#n206'>206</a></p>
-<p id='n207' class='stm run hide_run'><a href='#n207'>207</a></p>
-<p id='n208' class='stm run hide_run'><a href='#n208'>208</a></p>
-<p id='n209' class='stm run hide_run'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='pln'><a href='#n214'>214</a></p>
-<p id='n215' class='stm run hide_run'><a href='#n215'>215</a></p>
-<p id='n216' class='pln'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='stm run hide_run'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='pln'><a href='#n220'>220</a></p>
-<p id='n221' class='stm run hide_run'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='pln'><a href='#n225'>225</a></p>
-<p id='n226' class='stm run hide_run'><a href='#n226'>226</a></p>
-<p id='n227' class='stm run hide_run'><a href='#n227'>227</a></p>
-<p id='n228' class='pln'><a href='#n228'>228</a></p>
-<p id='n229' class='stm run hide_run'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='stm run hide_run'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='stm run hide_run'><a href='#n234'>234</a></p>
-<p id='n235' class='stm run hide_run'><a href='#n235'>235</a></p>
-<p id='n236' class='stm run hide_run'><a href='#n236'>236</a></p>
-<p id='n237' class='stm run hide_run'><a href='#n237'>237</a></p>
-<p id='n238' class='stm run hide_run'><a href='#n238'>238</a></p>
-<p id='n239' class='stm run hide_run'><a href='#n239'>239</a></p>
-<p id='n240' class='pln'><a href='#n240'>240</a></p>
-<p id='n241' class='stm run hide_run'><a href='#n241'>241</a></p>
-<p id='n242' class='stm run hide_run'><a href='#n242'>242</a></p>
-<p id='n243' class='stm run hide_run'><a href='#n243'>243</a></p>
-<p id='n244' class='stm run hide_run'><a href='#n244'>244</a></p>
-<p id='n245' class='pln'><a href='#n245'>245</a></p>
-<p id='n246' class='stm run hide_run'><a href='#n246'>246</a></p>
-<p id='n247' class='pln'><a href='#n247'>247</a></p>
-<p id='n248' class='stm run hide_run'><a href='#n248'>248</a></p>
-<p id='n249' class='stm run hide_run'><a href='#n249'>249</a></p>
-<p id='n250' class='pln'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='stm run hide_run'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='stm run hide_run'><a href='#n254'>254</a></p>
-<p id='n255' class='stm run hide_run'><a href='#n255'>255</a></p>
-<p id='n256' class='stm run hide_run'><a href='#n256'>256</a></p>
-<p id='n257' class='pln'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='pln'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='pln'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='stm run hide_run'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='stm run hide_run'><a href='#n265'>265</a></p>
-<p id='n266' class='pln'><a href='#n266'>266</a></p>
-<p id='n267' class='stm run hide_run'><a href='#n267'>267</a></p>
-<p id='n268' class='pln'><a href='#n268'>268</a></p>
-<p id='n269' class='stm run hide_run'><a href='#n269'>269</a></p>
-<p id='n270' class='pln'><a href='#n270'>270</a></p>
-<p id='n271' class='stm run hide_run'><a href='#n271'>271</a></p>
-<p id='n272' class='stm run hide_run'><a href='#n272'>272</a></p>
-<p id='n273' class='stm run hide_run'><a href='#n273'>273</a></p>
-<p id='n274' class='stm run hide_run'><a href='#n274'>274</a></p>
-<p id='n275' class='stm run hide_run'><a href='#n275'>275</a></p>
-<p id='n276' class='stm run hide_run'><a href='#n276'>276</a></p>
-<p id='n277' class='stm run hide_run'><a href='#n277'>277</a></p>
-<p id='n278' class='stm run hide_run'><a href='#n278'>278</a></p>
-<p id='n279' class='stm run hide_run'><a href='#n279'>279</a></p>
-<p id='n280' class='stm run hide_run'><a href='#n280'>280</a></p>
-<p id='n281' class='stm run hide_run'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='pln'><a href='#n283'>283</a></p>
-<p id='n284' class='stm run hide_run'><a href='#n284'>284</a></p>
-<p id='n285' class='stm run hide_run'><a href='#n285'>285</a></p>
-<p id='n286' class='pln'><a href='#n286'>286</a></p>
-<p id='n287' class='stm run hide_run'><a href='#n287'>287</a></p>
-<p id='n288' class='stm run hide_run'><a href='#n288'>288</a></p>
-<p id='n289' class='stm run hide_run'><a href='#n289'>289</a></p>
-<p id='n290' class='stm run hide_run'><a href='#n290'>290</a></p>
-<p id='n291' class='stm run hide_run'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='stm run hide_run'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='stm run hide_run'><a href='#n295'>295</a></p>
-<p id='n296' class='stm run hide_run'><a href='#n296'>296</a></p>
-<p id='n297' class='stm run hide_run'><a href='#n297'>297</a></p>
-<p id='n298' class='stm run hide_run'><a href='#n298'>298</a></p>
-<p id='n299' class='stm run hide_run'><a href='#n299'>299</a></p>
-<p id='n300' class='pln'><a href='#n300'>300</a></p>
-<p id='n301' class='pln'><a href='#n301'>301</a></p>
-<p id='n302' class='stm run hide_run'><a href='#n302'>302</a></p>
-<p id='n303' class='pln'><a href='#n303'>303</a></p>
-<p id='n304' class='pln'><a href='#n304'>304</a></p>
-<p id='n305' class='pln'><a href='#n305'>305</a></p>
-<p id='n306' class='pln'><a href='#n306'>306</a></p>
-<p id='n307' class='stm run hide_run'><a href='#n307'>307</a></p>
-<p id='n308' class='stm run hide_run'><a href='#n308'>308</a></p>
-<p id='n309' class='stm run hide_run'><a href='#n309'>309</a></p>
-<p id='n310' class='stm run hide_run'><a href='#n310'>310</a></p>
-<p id='n311' class='pln'><a href='#n311'>311</a></p>
-<p id='n312' class='stm run hide_run'><a href='#n312'>312</a></p>
-<p id='n313' class='stm run hide_run'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='stm run hide_run'><a href='#n315'>315</a></p>
-<p id='n316' class='stm run hide_run'><a href='#n316'>316</a></p>
-<p id='n317' class='pln'><a href='#n317'>317</a></p>
-<p id='n318' class='stm run hide_run'><a href='#n318'>318</a></p>
-<p id='n319' class='pln'><a href='#n319'>319</a></p>
-<p id='n320' class='stm run hide_run'><a href='#n320'>320</a></p>
-<p id='n321' class='stm run hide_run'><a href='#n321'>321</a></p>
-<p id='n322' class='stm run hide_run'><a href='#n322'>322</a></p>
-<p id='n323' class='stm run hide_run'><a href='#n323'>323</a></p>
-<p id='n324' class='pln'><a href='#n324'>324</a></p>
-<p id='n325' class='pln'><a href='#n325'>325</a></p>
-<p id='n326' class='stm run hide_run'><a href='#n326'>326</a></p>
-<p id='n327' class='stm run hide_run'><a href='#n327'>327</a></p>
-<p id='n328' class='pln'><a href='#n328'>328</a></p>
-<p id='n329' class='stm run hide_run'><a href='#n329'>329</a></p>
-<p id='n330' class='stm run hide_run'><a href='#n330'>330</a></p>
-<p id='n331' class='pln'><a href='#n331'>331</a></p>
-<p id='n332' class='stm run hide_run'><a href='#n332'>332</a></p>
-<p id='n333' class='pln'><a href='#n333'>333</a></p>
-<p id='n334' class='pln'><a href='#n334'>334</a></p>
-<p id='n335' class='pln'><a href='#n335'>335</a></p>
-<p id='n336' class='stm run hide_run'><a href='#n336'>336</a></p>
-<p id='n337' class='pln'><a href='#n337'>337</a></p>
-<p id='n338' class='pln'><a href='#n338'>338</a></p>
-<p id='n339' class='pln'><a href='#n339'>339</a></p>
-<p id='n340' class='pln'><a href='#n340'>340</a></p>
-<p id='n341' class='pln'><a href='#n341'>341</a></p>
-<p id='n342' class='pln'><a href='#n342'>342</a></p>
-<p id='n343' class='stm run hide_run'><a href='#n343'>343</a></p>
-<p id='n344' class='pln'><a href='#n344'>344</a></p>
-<p id='n345' class='stm run hide_run'><a href='#n345'>345</a></p>
-<p id='n346' class='stm run hide_run'><a href='#n346'>346</a></p>
-<p id='n347' class='pln'><a href='#n347'>347</a></p>
-<p id='n348' class='stm run hide_run'><a href='#n348'>348</a></p>
-<p id='n349' class='stm run hide_run'><a href='#n349'>349</a></p>
-<p id='n350' class='stm run hide_run'><a href='#n350'>350</a></p>
-<p id='n351' class='stm run hide_run'><a href='#n351'>351</a></p>
-<p id='n352' class='stm run hide_run'><a href='#n352'>352</a></p>
-<p id='n353' class='stm run hide_run'><a href='#n353'>353</a></p>
-<p id='n354' class='pln'><a href='#n354'>354</a></p>
-<p id='n355' class='stm run hide_run'><a href='#n355'>355</a></p>
-<p id='n356' class='pln'><a href='#n356'>356</a></p>
-<p id='n357' class='stm run hide_run'><a href='#n357'>357</a></p>
-<p id='n358' class='stm run hide_run'><a href='#n358'>358</a></p>
-<p id='n359' class='stm run hide_run'><a href='#n359'>359</a></p>
-<p id='n360' class='stm run hide_run'><a href='#n360'>360</a></p>
-<p id='n361' class='stm run hide_run'><a href='#n361'>361</a></p>
-<p id='n362' class='pln'><a href='#n362'>362</a></p>
-<p id='n363' class='pln'><a href='#n363'>363</a></p>
-<p id='n364' class='stm run hide_run'><a href='#n364'>364</a></p>
-<p id='n365' class='stm run hide_run'><a href='#n365'>365</a></p>
-<p id='n366' class='stm run hide_run'><a href='#n366'>366</a></p>
-<p id='n367' class='stm run hide_run'><a href='#n367'>367</a></p>
-<p id='n368' class='stm run hide_run'><a href='#n368'>368</a></p>
-<p id='n369' class='stm run hide_run'><a href='#n369'>369</a></p>
-<p id='n370' class='stm run hide_run'><a href='#n370'>370</a></p>
-<p id='n371' class='stm run hide_run'><a href='#n371'>371</a></p>
-<p id='n372' class='stm run hide_run'><a href='#n372'>372</a></p>
-<p id='n373' class='pln'><a href='#n373'>373</a></p>
-<p id='n374' class='stm run hide_run'><a href='#n374'>374</a></p>
-<p id='n375' class='stm run hide_run'><a href='#n375'>375</a></p>
-<p id='n376' class='pln'><a href='#n376'>376</a></p>
-<p id='n377' class='stm run hide_run'><a href='#n377'>377</a></p>
-<p id='n378' class='stm run hide_run'><a href='#n378'>378</a></p>
-<p id='n379' class='stm run hide_run'><a href='#n379'>379</a></p>
-<p id='n380' class='pln'><a href='#n380'>380</a></p>
-<p id='n381' class='stm run hide_run'><a href='#n381'>381</a></p>
-<p id='n382' class='pln'><a href='#n382'>382</a></p>
-<p id='n383' class='stm run hide_run'><a href='#n383'>383</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.builtins</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Built-in tasks that are always available in all</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='str'>&nbsp; &nbsp; app instances. E.g. chord, group and xmap.</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>collections</span> <span class='key'>import</span> <span class='nam'>deque</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>get_current_worker_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>uuid</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='pln'><span class='com'>#: global list of functions defining tasks that should be</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='com'>#: added to all apps.</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='nam'>_shared_tasks</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>shared_task</span><span class='op'>(</span><span class='nam'>constructor</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Decorator that specifies a function that generates a built-in task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='str'>&nbsp; &nbsp; The function will then be called for every new app instance created</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='str'>&nbsp; &nbsp; (lazily, so more exactly when the task registry for that app is needed).</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='str'>&nbsp; &nbsp; The function must take a single ``app`` argument.</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_shared_tasks</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>constructor</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>constructor</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>load_shared_tasks</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Create built-in tasks for an app instance.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>constructor</span> <span class='key'>in</span> <span class='nam'>_shared_tasks</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>constructor</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='key'>def</span> <span class='nam'>add_backend_cleanup_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;The backend cleanup task can be used to clean up the default result</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='str'>&nbsp; &nbsp; backend.</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'><span class='str'>&nbsp; &nbsp; If the configured backend requires periodic cleanup this task is also</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'><span class='str'>&nbsp; &nbsp; automatically configured to run every day at midnight (requires</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'><span class='str'>&nbsp; &nbsp; :program:`celery beat` to be running).</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.backend_cleanup&#39;</span><span class='op'>,</span> <span class='nam'>_force_evaluate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>backend_cleanup</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>cleanup</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>backend_cleanup</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'><span class='key'>def</span> <span class='nam'>add_unlock_chord_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;This task is used by result backends without native chord support.</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'><span class='str'>&nbsp; &nbsp; It joins chords by creating a task chain polling the header for completion.</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>ChordError</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>result</span> <span class='key'>import</span> <span class='nam'>from_serializable</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_propagate</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_CHORD_PROPAGATES</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.chord_unlock&#39;</span><span class='op'>,</span> <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>default_retry_delay</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>ignore_result</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>_force_evaluate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>unlock_chord</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>callback</span><span class='op'>,</span> <span class='nam'>interval</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>result</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>Result</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='op'>,</span> <span class='nam'>GroupResult</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>GroupResult</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>from_serializable</span><span class='op'>=</span><span class='nam'>from_serializable</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># if propagate is disabled exceptions raised by chord tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># will be sent as part of the result list to the chord callback.</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Since 3.1 propagate will be enabled by default, and instead</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># the chord callback changes state to FAILURE with the</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># exception set to ChordError.</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>propagate</span> <span class='op'>=</span> <span class='nam'>default_propagate</span> <span class='key'>if</span> <span class='nam'>propagate</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>propagate</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>interval</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>interval</span> <span class='op'>=</span> <span class='nam'>unlock_chord</span><span class='op'>.</span><span class='nam'>default_retry_delay</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># check if the task group is ready, and if so apply the callback.</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>deps</span> <span class='op'>=</span> <span class='nam'>GroupResult</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>group_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>[</span><span class='nam'>from_serializable</span><span class='op'>(</span><span class='nam'>r</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>r</span> <span class='key'>in</span> <span class='nam'>result</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>j</span> <span class='op'>=</span> <span class='nam'>deps</span><span class='op'>.</span><span class='nam'>join_native</span> <span class='key'>if</span> <span class='nam'>deps</span><span class='op'>.</span><span class='nam'>supports_native_join</span> <span class='key'>else</span> <span class='nam'>deps</span><span class='op'>.</span><span class='nam'>join</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>deps</span><span class='op'>.</span><span class='nam'>ready</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span> <span class='op'>=</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>callback</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ret</span> <span class='op'>=</span> <span class='nam'>j</span><span class='op'>(</span><span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>propagate</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>Exception</span> <span class='key'>as</span> <span class='nam'>exc</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>culprit</span> <span class='op'>=</span> <span class='nam'>next</span><span class='op'>(</span><span class='nam'>deps</span><span class='op'>.</span><span class='nam'>_failed_join_report</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reason</span> <span class='op'>=</span> <span class='str'>&#39;Dependency {0.id} raised {1!r}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>culprit</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>StopIteration</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reason</span> <span class='op'>=</span> <span class='nam'>repr</span><span class='op'>(</span><span class='nam'>exc</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>[</span><span class='nam'>callback</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>fail_from_current_stack</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>ChordError</span><span class='op'>(</span><span class='nam'>reason</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>.</span><span class='nam'>delay</span><span class='op'>(</span><span class='nam'>ret</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>Exception</span> <span class='key'>as</span> <span class='nam'>exc</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>[</span><span class='nam'>callback</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>fail_from_current_stack</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>ChordError</span><span class='op'>(</span><span class='str'>&#39;Callback error: {0!r}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>exc</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>unlock_chord</span><span class='op'>.</span><span class='nam'>retry</span><span class='op'>(</span><span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>interval</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>max_retries</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>unlock_chord</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'><span class='key'>def</span> <span class='nam'>add_map_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.map&#39;</span><span class='op'>,</span> <span class='nam'>_force_evaluate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>xmap</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>type</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>[</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>item</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>item</span> <span class='key'>in</span> <span class='nam'>it</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>xmap</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'><span class='key'>def</span> <span class='nam'>add_starmap_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.starmap&#39;</span><span class='op'>,</span> <span class='nam'>_force_evaluate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>xstarmap</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>type</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>[</span><span class='nam'>task</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>item</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>item</span> <span class='key'>in</span> <span class='nam'>it</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>xstarmap</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='key'>def</span> <span class='nam'>add_chunk_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>chunks</span> <span class='key'>as</span> <span class='nam'>_chunks</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.chunks&#39;</span><span class='op'>,</span> <span class='nam'>_force_evaluate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>chunks</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_chunks</span><span class='op'>.</span><span class='nam'>apply_chunks</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>chunks</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'><span class='key'>def</span> <span class='nam'>add_group_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>maybe_subtask</span><span class='op'>,</span> <span class='nam'>subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>result</span> <span class='key'>import</span> <span class='nam'>from_serializable</span><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>class</span> <span class='nam'>Group</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>Task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span> <span class='op'>=</span> <span class='str'>&#39;celery.group&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>run</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>result</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>partial_args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result</span> <span class='op'>=</span> <span class='nam'>from_serializable</span><span class='op'>(</span><span class='nam'>result</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># any partial args are added to all tasks in the group</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>taskit</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>clone</span><span class='op'>(</span><span class='nam'>partial_args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='nam'>tasks</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>is_eager</span> <span class='key'>or</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>GroupResult</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>[</span><span class='nam'>stask</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>stask</span> <span class='key'>in</span> <span class='nam'>taskit</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>producer_or_acquire</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>pub</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>[</span><span class='nam'>stask</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>publisher</span><span class='op'>=</span><span class='nam'>pub</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>add_to_parent</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>stask</span> <span class='key'>in</span> <span class='nam'>taskit</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>parent</span> <span class='op'>=</span> <span class='nam'>get_current_worker_task</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>parent</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>parent</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>children</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>result</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>result</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>,</span> <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>AsyncResult</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>[</span><span class='str'>&#39;group_id&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>group_id</span> <span class='op'>=</span> <span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;task_id&#39;</span><span class='op'>,</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>prepare_member</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>opts</span> <span class='op'>=</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;group_id&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>group_id</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tid</span> <span class='op'>=</span> <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;task_id&#39;</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tid</span> <span class='op'>=</span> <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;task_id&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>tid</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>res</span> <span class='op'>=</span> <span class='nam'>list</span><span class='op'>(</span><span class='nam'>zip</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>*</span><span class='op'>[</span><span class='nam'>prepare_member</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>tasks</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>ValueError</span><span class='op'>:</span>&nbsp; <span class='com'># tasks empty</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>res</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='op'>,</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>GroupResult</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>res</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>partial_args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>partial_args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>result</span><span class='op'>,</span> <span class='nam'>gid</span><span class='op'>,</span> <span class='nam'>args</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>prepare</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>partial_args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>super</span><span class='op'>(</span><span class='nam'>Group</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>list</span><span class='op'>(</span><span class='nam'>tasks</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>result</span><span class='op'>.</span><span class='nam'>serializable</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>gid</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>result</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>super</span><span class='op'>(</span><span class='nam'>Group</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Group</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='pln'><span class='key'>def</span> <span class='nam'>add_chain_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>Signature</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>,</span> <span class='nam'>group</span><span class='op'>,</span> <span class='nam'>maybe_subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>class</span> <span class='nam'>Chain</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>Task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span> <span class='op'>=</span> <span class='str'>&#39;celery.chain&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>prepare_steps</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>tasks</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>steps</span> <span class='op'>=</span> <span class='nam'>deque</span><span class='op'>(</span><span class='nam'>tasks</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>next_step</span> <span class='op'>=</span> <span class='nam'>prev_task</span> <span class='op'>=</span> <span class='nam'>prev_res</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>results</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='op'>,</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>i</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>while</span> <span class='nam'>steps</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># First task get partial args from chain.</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>steps</span><span class='op'>.</span><span class='nam'>popleft</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>clone</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>i</span> <span class='key'>else</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>clone</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span> <span class='op'>=</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>_freeze</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>i</span> <span class='op'>+=</span> <span class='num'>1</span><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>group</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># automatically upgrade group(..) | s to chord(group, s)</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>next_step</span> <span class='op'>=</span> <span class='nam'>steps</span><span class='op'>.</span><span class='nam'>popleft</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># for chords we freeze by pretending it&#39;s a normal</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># task instead of a group.</span><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span> <span class='op'>=</span> <span class='nam'>Signature</span><span class='op'>.</span><span class='nam'>_freeze</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>chord</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>=</span><span class='nam'>next_step</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>res</span><span class='op'>.</span><span class='nam'>task_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>IndexError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span>&nbsp; <span class='com'># no callback, so keep as group</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>prev_task</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># link previous task to this task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>prev_task</span><span class='op'>.</span><span class='nam'>link</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># set the results parent attribute.</span><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span><span class='op'>.</span><span class='nam'>parent</span> <span class='op'>=</span> <span class='nam'>prev_res</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>prev_task</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>results</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>res</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>prev_task</span><span class='op'>,</span> <span class='nam'>prev_res</span> <span class='op'>=</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>res</span><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>results</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>link</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>link_error</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;publisher&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>,</span> <span class='nam'>results</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>prepare_steps</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>[</span><span class='str'>&#39;tasks&#39;</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result</span> <span class='op'>=</span> <span class='nam'>results</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>group_id</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>set</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>chord</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>set</span><span class='op'>(</span><span class='nam'>chord</span><span class='op'>=</span><span class='nam'>chord</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>task_id</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>set</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>task_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result</span> <span class='op'>=</span> <span class='nam'>tasks</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>type</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># make sure we can do a link() and link_error() on a chain object.</span><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>link</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>set</span><span class='op'>(</span><span class='nam'>link</span><span class='op'>=</span><span class='nam'>link</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># and if any task in the chain fails, call the errbacks</span><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>link_error</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>tasks</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span><span class='op'>.</span><span class='nam'>set</span><span class='op'>(</span><span class='nam'>link_error</span><span class='op'>=</span><span class='nam'>link_error</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>result</span><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>subtask</span><span class='op'>=</span><span class='nam'>maybe_subtask</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>last</span><span class='op'>,</span> <span class='nam'>fargs</span> <span class='op'>=</span> <span class='nam'>None</span><span class='op'>,</span> <span class='nam'>args</span>&nbsp; <span class='com'># fargs passed to first task only</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>kwargs</span><span class='op'>[</span><span class='str'>&#39;tasks&#39;</span><span class='op'>]</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span> <span class='op'>=</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>clone</span><span class='op'>(</span><span class='nam'>fargs</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>last</span> <span class='key'>and</span> <span class='op'>(</span><span class='nam'>last</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span><span class='op'>.</span><span class='nam'>parent</span><span class='op'>,</span> <span class='nam'>last</span><span class='op'>,</span> <span class='nam'>fargs</span> <span class='op'>=</span> <span class='nam'>last</span><span class='op'>,</span> <span class='nam'>res</span><span class='op'>,</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>last</span><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Chain</span><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='stm run hide_run'><span class='op'>@</span><span class='nam'>shared_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='pln'><span class='key'>def</span> <span class='nam'>add_chord_task</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Every chord is executed in a dedicated task, so that the chord</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='pln'><span class='str'>&nbsp; &nbsp; can be used as a subtask, and this generates the task</span><span class='strut'>&nbsp;</span></p>
-<p id='t306' class='pln'><span class='str'>&nbsp; &nbsp; responsible for that.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t307' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>group</span><span class='strut'>&nbsp;</span></p>
-<p id='t308' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>maybe_subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t309' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t310' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_propagate</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_CHORD_PROPAGATES</span><span class='strut'>&nbsp;</span></p>
-<p id='t311' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t312' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>class</span> <span class='nam'>Chord</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>Task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t313' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t314' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span> <span class='op'>=</span> <span class='str'>&#39;celery.chord&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t315' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t316' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ignore_result</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t317' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t318' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>run</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>header</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>partial_args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>interval</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>countdown</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t319' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>eager</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t320' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>propagate</span> <span class='op'>=</span> <span class='nam'>default_propagate</span> <span class='key'>if</span> <span class='nam'>propagate</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>propagate</span><span class='strut'>&nbsp;</span></p>
-<p id='t321' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>group_id</span> <span class='op'>=</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t322' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>AsyncResult</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='strut'>&nbsp;</span></p>
-<p id='t323' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>prepare_member</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_prepare_member</span><span class='strut'>&nbsp;</span></p>
-<p id='t324' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t325' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - convert back to group if serialized</span><span class='strut'>&nbsp;</span></p>
-<p id='t326' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span> <span class='op'>=</span> <span class='nam'>header</span><span class='op'>.</span><span class='nam'>tasks</span> <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>header</span><span class='op'>,</span> <span class='nam'>group</span><span class='op'>)</span> <span class='key'>else</span> <span class='nam'>header</span><span class='strut'>&nbsp;</span></p>
-<p id='t327' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>header</span> <span class='op'>=</span> <span class='nam'>group</span><span class='op'>(</span><span class='op'>[</span><span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>s</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>clone</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>s</span> <span class='key'>in</span> <span class='nam'>tasks</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t328' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - eager applies the group inline</span><span class='strut'>&nbsp;</span></p>
-<p id='t329' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>eager</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t330' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>header</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>=</span><span class='nam'>partial_args</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t331' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t332' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>results</span> <span class='op'>=</span> <span class='op'>[</span><span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>prepare_member</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t333' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>header</span><span class='op'>.</span><span class='nam'>tasks</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t334' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t335' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - fallback implementations schedules the chord_unlock task here</span><span class='strut'>&nbsp;</span></p>
-<p id='t336' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>on_chord_apply</span><span class='op'>(</span><span class='nam'>group_id</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t337' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>interval</span><span class='op'>=</span><span class='nam'>interval</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t338' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>countdown</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t339' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>max_retries</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t340' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>propagate</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t341' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>result</span><span class='op'>=</span><span class='nam'>results</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t342' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - call the header group, returning the GroupResult.</span><span class='strut'>&nbsp;</span></p>
-<p id='t343' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>header</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>partial_args</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t344' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t345' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_prepare_member</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t346' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>opts</span> <span class='op'>=</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t347' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># d.setdefault would work but generating uuid&#39;s are expensive</span><span class='strut'>&nbsp;</span></p>
-<p id='t348' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t349' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;task_id&#39;</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t350' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t351' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>opts</span><span class='op'>[</span><span class='str'>&#39;task_id&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t352' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>opts</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>chord</span><span class='op'>=</span><span class='nam'>body</span><span class='op'>,</span> <span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>group_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t353' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>task_id</span><span class='strut'>&nbsp;</span></p>
-<p id='t354' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t355' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t356' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>group_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>chord</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t357' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t358' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t359' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>header</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;header&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t360' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;body&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t361' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>header</span><span class='op'>,</span> <span class='nam'>body</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>(</span><span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>header</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t362' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>body</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t363' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># forward certain options to body</span><span class='strut'>&nbsp;</span></p>
-<p id='t364' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>chord</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t365' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span><span class='op'>.</span><span class='nam'>options</span><span class='op'>[</span><span class='str'>&#39;chord&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>chord</span><span class='strut'>&nbsp;</span></p>
-<p id='t366' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>group_id</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t367' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span><span class='op'>.</span><span class='nam'>options</span><span class='op'>[</span><span class='str'>&#39;group_id&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>group_id</span><span class='strut'>&nbsp;</span></p>
-<p id='t368' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>[</span><span class='nam'>body</span><span class='op'>.</span><span class='nam'>link</span><span class='op'>(</span><span class='nam'>s</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>s</span> <span class='key'>in</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;link&#39;</span><span class='op'>,</span> <span class='op'>[</span><span class='op'>]</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t369' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>[</span><span class='nam'>body</span><span class='op'>.</span><span class='nam'>link_error</span><span class='op'>(</span><span class='nam'>s</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>s</span> <span class='key'>in</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;link_error&#39;</span><span class='op'>,</span> <span class='op'>[</span><span class='op'>]</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t370' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback_id</span> <span class='op'>=</span> <span class='nam'>body</span><span class='op'>.</span><span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;task_id&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='nam'>task_id</span> <span class='key'>or</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t371' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body_result</span> <span class='op'>=</span> <span class='nam'>body</span><span class='op'>.</span><span class='nam'>_freeze</span><span class='op'>(</span><span class='nam'>callback_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t372' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>parent</span> <span class='op'>=</span> <span class='nam'>super</span><span class='op'>(</span><span class='nam'>Chord</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>header</span><span class='op'>,</span> <span class='nam'>body</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t373' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t374' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body_result</span><span class='op'>.</span><span class='nam'>parent</span> <span class='op'>=</span> <span class='nam'>parent</span><span class='strut'>&nbsp;</span></p>
-<p id='t375' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>body_result</span><span class='strut'>&nbsp;</span></p>
-<p id='t376' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t377' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t378' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>body</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>[</span><span class='str'>&#39;body&#39;</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t379' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>res</span> <span class='op'>=</span> <span class='nam'>super</span><span class='op'>(</span><span class='nam'>Chord</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>eager</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t380' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t381' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>maybe_subtask</span><span class='op'>(</span><span class='nam'>body</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t382' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='nam'>res</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>propagate</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t383' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Chord</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 694
celery/tests/cover/celery_app_control.html

@@ -1,694 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.control: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.control</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            104 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>104 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='stm run hide_run'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='pln'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='pln'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='stm run hide_run'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='stm run hide_run'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='stm run hide_run'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='pln'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='stm run hide_run'><a href='#n113'>113</a></p>
-<p id='n114' class='stm run hide_run'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='stm run hide_run'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='stm run hide_run'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='pln'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='stm run hide_run'><a href='#n141'>141</a></p>
-<p id='n142' class='stm run hide_run'><a href='#n142'>142</a></p>
-<p id='n143' class='stm run hide_run'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='stm run hide_run'><a href='#n146'>146</a></p>
-<p id='n147' class='pln'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='pln'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='pln'><a href='#n152'>152</a></p>
-<p id='n153' class='pln'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='pln'><a href='#n155'>155</a></p>
-<p id='n156' class='pln'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='pln'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='pln'><a href='#n163'>163</a></p>
-<p id='n164' class='pln'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='pln'><a href='#n167'>167</a></p>
-<p id='n168' class='pln'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='stm run hide_run'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='pln'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='stm run hide_run'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='pln'><a href='#n184'>184</a></p>
-<p id='n185' class='pln'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='pln'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='pln'><a href='#n189'>189</a></p>
-<p id='n190' class='pln'><a href='#n190'>190</a></p>
-<p id='n191' class='pln'><a href='#n191'>191</a></p>
-<p id='n192' class='pln'><a href='#n192'>192</a></p>
-<p id='n193' class='pln'><a href='#n193'>193</a></p>
-<p id='n194' class='pln'><a href='#n194'>194</a></p>
-<p id='n195' class='stm run hide_run'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='pln'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='pln'><a href='#n203'>203</a></p>
-<p id='n204' class='pln'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='pln'><a href='#n207'>207</a></p>
-<p id='n208' class='pln'><a href='#n208'>208</a></p>
-<p id='n209' class='pln'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='pln'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='pln'><a href='#n214'>214</a></p>
-<p id='n215' class='pln'><a href='#n215'>215</a></p>
-<p id='n216' class='pln'><a href='#n216'>216</a></p>
-<p id='n217' class='pln'><a href='#n217'>217</a></p>
-<p id='n218' class='pln'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='pln'><a href='#n220'>220</a></p>
-<p id='n221' class='pln'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='pln'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='pln'><a href='#n227'>227</a></p>
-<p id='n228' class='pln'><a href='#n228'>228</a></p>
-<p id='n229' class='pln'><a href='#n229'>229</a></p>
-<p id='n230' class='pln'><a href='#n230'>230</a></p>
-<p id='n231' class='pln'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='pln'><a href='#n234'>234</a></p>
-<p id='n235' class='pln'><a href='#n235'>235</a></p>
-<p id='n236' class='pln'><a href='#n236'>236</a></p>
-<p id='n237' class='pln'><a href='#n237'>237</a></p>
-<p id='n238' class='stm run hide_run'><a href='#n238'>238</a></p>
-<p id='n239' class='pln'><a href='#n239'>239</a></p>
-<p id='n240' class='pln'><a href='#n240'>240</a></p>
-<p id='n241' class='pln'><a href='#n241'>241</a></p>
-<p id='n242' class='stm run hide_run'><a href='#n242'>242</a></p>
-<p id='n243' class='pln'><a href='#n243'>243</a></p>
-<p id='n244' class='pln'><a href='#n244'>244</a></p>
-<p id='n245' class='pln'><a href='#n245'>245</a></p>
-<p id='n246' class='pln'><a href='#n246'>246</a></p>
-<p id='n247' class='pln'><a href='#n247'>247</a></p>
-<p id='n248' class='pln'><a href='#n248'>248</a></p>
-<p id='n249' class='pln'><a href='#n249'>249</a></p>
-<p id='n250' class='pln'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='pln'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='pln'><a href='#n254'>254</a></p>
-<p id='n255' class='pln'><a href='#n255'>255</a></p>
-<p id='n256' class='pln'><a href='#n256'>256</a></p>
-<p id='n257' class='pln'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='pln'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='pln'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='pln'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='pln'><a href='#n265'>265</a></p>
-<p id='n266' class='stm run hide_run'><a href='#n266'>266</a></p>
-<p id='n267' class='pln'><a href='#n267'>267</a></p>
-<p id='n268' class='pln'><a href='#n268'>268</a></p>
-<p id='n269' class='pln'><a href='#n269'>269</a></p>
-<p id='n270' class='pln'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='stm run hide_run'><a href='#n272'>272</a></p>
-<p id='n273' class='pln'><a href='#n273'>273</a></p>
-<p id='n274' class='stm run hide_run'><a href='#n274'>274</a></p>
-<p id='n275' class='pln'><a href='#n275'>275</a></p>
-<p id='n276' class='pln'><a href='#n276'>276</a></p>
-<p id='n277' class='pln'><a href='#n277'>277</a></p>
-<p id='n278' class='pln'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='stm run hide_run'><a href='#n280'>280</a></p>
-<p id='n281' class='pln'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='pln'><a href='#n283'>283</a></p>
-<p id='n284' class='pln'><a href='#n284'>284</a></p>
-<p id='n285' class='pln'><a href='#n285'>285</a></p>
-<p id='n286' class='pln'><a href='#n286'>286</a></p>
-<p id='n287' class='pln'><a href='#n287'>287</a></p>
-<p id='n288' class='pln'><a href='#n288'>288</a></p>
-<p id='n289' class='pln'><a href='#n289'>289</a></p>
-<p id='n290' class='pln'><a href='#n290'>290</a></p>
-<p id='n291' class='pln'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='pln'><a href='#n293'>293</a></p>
-<p id='n294' class='pln'><a href='#n294'>294</a></p>
-<p id='n295' class='pln'><a href='#n295'>295</a></p>
-<p id='n296' class='pln'><a href='#n296'>296</a></p>
-<p id='n297' class='pln'><a href='#n297'>297</a></p>
-<p id='n298' class='pln'><a href='#n298'>298</a></p>
-<p id='n299' class='pln'><a href='#n299'>299</a></p>
-<p id='n300' class='stm run hide_run'><a href='#n300'>300</a></p>
-<p id='n301' class='stm run hide_run'><a href='#n301'>301</a></p>
-<p id='n302' class='stm run hide_run'><a href='#n302'>302</a></p>
-<p id='n303' class='pln'><a href='#n303'>303</a></p>
-<p id='n304' class='pln'><a href='#n304'>304</a></p>
-<p id='n305' class='pln'><a href='#n305'>305</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.control</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Client for worker remote control commands.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='str'>&nbsp; &nbsp; Server implementation is in :mod:`celery.worker.control`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>warnings</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>pidbox</span> <span class='key'>import</span> <span class='nam'>Mailbox</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>DuplicateNodenameWarning</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span> <span class='key'>import</span> <span class='nam'>app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='nam'>W_DUPNODE</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;\</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='str'>Received multiple replies from node name {0!r}.</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='str'>Please make sure you give each node a unique nodename using the `-n` option.\</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>flatten_reply</span><span class='op'>(</span><span class='nam'>reply</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>nodes</span> <span class='op'>=</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>seen</span> <span class='op'>=</span> <span class='nam'>set</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>item</span> <span class='key'>in</span> <span class='nam'>reply</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>dup</span> <span class='op'>=</span> <span class='nam'>next</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>nodename</span> <span class='key'>in</span> <span class='nam'>seen</span> <span class='key'>for</span> <span class='nam'>nodename</span> <span class='key'>in</span> <span class='nam'>item</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>dup</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>warnings</span><span class='op'>.</span><span class='nam'>warn</span><span class='op'>(</span><span class='nam'>DuplicateNodenameWarning</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>W_DUPNODE</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>dup</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>seen</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>item</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>nodes</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>item</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>nodes</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Inspect</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>timeout</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>callback</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>limit</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>destination</span> <span class='op'>=</span> <span class='nam'>destination</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>timeout</span> <span class='op'>=</span> <span class='nam'>timeout</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>callback</span> <span class='op'>=</span> <span class='nam'>callback</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>connection</span> <span class='op'>=</span> <span class='nam'>connection</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>limit</span> <span class='op'>=</span> <span class='nam'>limit</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_prepare</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>reply</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>reply</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>by_node</span> <span class='op'>=</span> <span class='nam'>flatten_reply</span><span class='op'>(</span><span class='nam'>reply</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>destination</span> <span class='key'>and</span> <span class='xx'>\</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>destination</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>by_node</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>destination</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>by_node</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_request</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>command</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_prepare</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>control</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>command</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span><span class='op'>=</span><span class='nam'>kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>destination</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>callback</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>limit</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>limit</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>timeout</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>timeout</span><span class='op'>,</span> <span class='nam'>reply</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>report</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;report&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>clock</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;clock&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>active</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_active&#39;</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>safe</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>scheduled</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_schedule&#39;</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>safe</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>reserved</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_reserved&#39;</span><span class='op'>,</span> <span class='nam'>safe</span><span class='op'>=</span><span class='nam'>safe</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>stats</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;stats&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>revoked</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_revoked&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>registered</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>taskinfoitems</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_tasks&#39;</span><span class='op'>,</span> <span class='nam'>taskinfoitems</span><span class='op'>=</span><span class='nam'>taskinfoitems</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>registered_tasks</span> <span class='op'>=</span> <span class='nam'>registered</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>ping</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;ping&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>active_queues</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;active_queues&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>conf</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;dump_conf&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>hello</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;hello&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>memsample</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;memsample&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>memdump</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>samples</span><span class='op'>=</span><span class='num'>10</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;memdump&#39;</span><span class='op'>,</span> <span class='nam'>samples</span><span class='op'>=</span><span class='nam'>samples</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>objgraph</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>=</span><span class='num'>200</span><span class='op'>,</span> <span class='nam'>max_depth</span><span class='op'>=</span><span class='num'>10</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_request</span><span class='op'>(</span><span class='str'>&#39;objgraph&#39;</span><span class='op'>,</span> <span class='nam'>num</span><span class='op'>=</span><span class='nam'>n</span><span class='op'>,</span> <span class='nam'>max_depth</span><span class='op'>=</span><span class='nam'>max_depth</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Control</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Mailbox</span> <span class='op'>=</span> <span class='nam'>Mailbox</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app_or_default</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>mailbox</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Mailbox</span><span class='op'>(</span><span class='str'>&#39;celery&#39;</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;fanout&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ACCEPT_CONTENT</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>cached_property</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>inspect</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>subclass_with_self</span><span class='op'>(</span><span class='nam'>Inspect</span><span class='op'>,</span> <span class='nam'>reverse</span><span class='op'>=</span><span class='str'>&#39;control.inspect&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>purge</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Discard all waiting tasks.</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; This will ignore all tasks waiting for execution, and they will</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; be deleted from the messaging server.</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :returns: the number of tasks discarded.</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>connection_or_acquire</span><span class='op'>(</span><span class='nam'>connection</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>conn</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>TaskConsumer</span><span class='op'>(</span><span class='nam'>conn</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>purge</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>discard_all</span> <span class='op'>=</span> <span class='nam'>purge</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>election</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>id</span><span class='op'>,</span> <span class='nam'>topic</span><span class='op'>,</span> <span class='nam'>action</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;election&#39;</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>connection</span><span class='op'>,</span> <span class='nam'>arguments</span><span class='op'>=</span><span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;id&#39;</span><span class='op'>:</span> <span class='nam'>id</span><span class='op'>,</span> <span class='str'>&#39;topic&#39;</span><span class='op'>:</span> <span class='nam'>topic</span><span class='op'>,</span> <span class='str'>&#39;action&#39;</span><span class='op'>:</span> <span class='nam'>action</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>revoke</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>terminate</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>signal</span><span class='op'>=</span><span class='str'>&#39;SIGTERM&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to revoke a task by id.</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; If a task is revoked, the workers will ignore the task and</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; not execute it after all.</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Id of the task to revoke.</span><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword terminate: Also terminate the process currently working</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on the task (if any).</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword signal: Name of signal to send to process if terminate.</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Default is TERM.</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; See :meth:`broadcast` for supported keyword arguments.</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;revoke&#39;</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>destination</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span><span class='op'>=</span><span class='op'>{</span><span class='str'>&#39;task_id&#39;</span><span class='op'>:</span> <span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;terminate&#39;</span><span class='op'>:</span> <span class='nam'>terminate</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;signal&#39;</span><span class='op'>:</span> <span class='nam'>signal</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>ping</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>timeout</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Ping all (or specific) workers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Returns answer from alive workers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; See :meth:`broadcast` for supported keyword arguments.</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;ping&#39;</span><span class='op'>,</span> <span class='nam'>reply</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>destination</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>timeout</span><span class='op'>=</span><span class='nam'>timeout</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>rate_limit</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_name</span><span class='op'>,</span> <span class='nam'>rate_limit</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to set a new rate limit</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; for task by type.</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_name: Name of task to change rate limit for.</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param rate_limit: The rate limit as tasks per second, or a rate limit</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string (`&#39;100/m&#39;`, etc.</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; see :attr:`celery.task.base.Task.rate_limit` for</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; more information).</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; See :meth:`broadcast` for supported keyword arguments.</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;rate_limit&#39;</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>destination</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span><span class='op'>=</span><span class='op'>{</span><span class='str'>&#39;task_name&#39;</span><span class='op'>:</span> <span class='nam'>task_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;rate_limit&#39;</span><span class='op'>:</span> <span class='nam'>rate_limit</span><span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>add_consumer</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>exchange</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exchange_type</span><span class='op'>=</span><span class='str'>&#39;direct&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>routing_key</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to start consuming from a new queue.</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Only the queue name is required as if only the queue is specified</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; then the exchange/routing key will be set to the same name (</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; like automatic queues do).</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; .. note::</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; This command does not respect the default queue/exchange</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; options in the configuration.</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param queue: Name of queue to start consuming from.</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exchange: Optional name of exchange.</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exchange_type: Type of exchange (defaults to &#39;direct&#39;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; command to, when empty broadcast to all workers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword routing_key: Optional routing key.</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword options: Additional options as supported</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; by :meth:`kombu.entitiy.Queue.from_dict`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; See :meth:`broadcast` for supported keyword arguments.</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;add_consumer&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span><span class='op'>=</span><span class='nam'>dict</span><span class='op'>(</span><span class='op'>{</span><span class='str'>&#39;queue&#39;</span><span class='op'>:</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='str'>&#39;exchange&#39;</span><span class='op'>:</span> <span class='nam'>exchange</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;exchange_type&#39;</span><span class='op'>:</span> <span class='nam'>exchange_type</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;routing_key&#39;</span><span class='op'>:</span> <span class='nam'>routing_key</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>cancel_consumer</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>queue</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to stop consuming from ``queue``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Supports the same keyword arguments as :meth:`broadcast`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;cancel_consumer&#39;</span><span class='op'>,</span> <span class='nam'>arguments</span><span class='op'>=</span><span class='op'>{</span><span class='str'>&#39;queue&#39;</span><span class='op'>:</span> <span class='nam'>queue</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>time_limit</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_name</span><span class='op'>,</span> <span class='nam'>soft</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>hard</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to set time limits for</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; a task by type.</span><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_name: Name of task to change time limits for.</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword soft: New soft time limit (in seconds).</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword hard: New hard time limit (in seconds).</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Any additional keyword arguments are passed on to :meth:`broadcast`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;time_limit&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span><span class='op'>=</span><span class='op'>{</span><span class='str'>&#39;task_name&#39;</span><span class='op'>:</span> <span class='nam'>task_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;hard&#39;</span><span class='op'>:</span> <span class='nam'>hard</span><span class='op'>,</span> <span class='str'>&#39;soft&#39;</span><span class='op'>:</span> <span class='nam'>soft</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>enable_events</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to enable events.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;enable_events&#39;</span><span class='op'>,</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>disable_events</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to enable events.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;disable_events&#39;</span><span class='op'>,</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>pool_grow</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to grow the pool by ``n``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Supports the same arguments as :meth:`broadcast`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;pool_grow&#39;</span><span class='op'>,</span> <span class='op'>{</span><span class='str'>&#39;n&#39;</span><span class='op'>:</span> <span class='nam'>n</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>pool_shrink</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Tell all (or specific) workers to shrink the pool by ``n``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Supports the same arguments as :meth:`broadcast`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>broadcast</span><span class='op'>(</span><span class='str'>&#39;pool_shrink&#39;</span><span class='op'>,</span> <span class='op'>{</span><span class='str'>&#39;n&#39;</span><span class='op'>:</span> <span class='nam'>n</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>broadcast</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>command</span><span class='op'>,</span> <span class='nam'>arguments</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>reply</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>timeout</span><span class='op'>=</span><span class='num'>1</span><span class='op'>,</span> <span class='nam'>limit</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>channel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>extra_kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Broadcast a control command to the celery workers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param command: Name of command to send.</span><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param arguments: Keyword arguments for the command.</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword destination: If set, a list of the hosts to send the</span><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; command to, when empty broadcast to all workers.</span><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword connection: Custom broker connection to use, if not set,</span><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a connection will be established automatically.</span><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword reply: Wait for and return the reply.</span><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword timeout: Timeout in seconds to wait for the reply.</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword limit: Limit number of replies.</span><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword callback: Callback called immediately for each reply</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; received.</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>connection_or_acquire</span><span class='op'>(</span><span class='nam'>connection</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>conn</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arguments</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>arguments</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>extra_kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>mailbox</span><span class='op'>(</span><span class='nam'>conn</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_broadcast</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>command</span><span class='op'>,</span> <span class='nam'>arguments</span><span class='op'>,</span> <span class='nam'>destination</span><span class='op'>,</span> <span class='nam'>reply</span><span class='op'>,</span> <span class='nam'>timeout</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>limit</span><span class='op'>,</span> <span class='nam'>callback</span><span class='op'>,</span> <span class='nam'>channel</span><span class='op'>=</span><span class='nam'>channel</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 596
celery/tests/cover/celery_app_defaults.html

@@ -1,596 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.defaults: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.defaults</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            67 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>67 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='pln'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='stm run hide_run'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='pln'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='pln'><a href='#n91'>91</a></p>
-<p id='n92' class='pln'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='pln'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='pln'><a href='#n108'>108</a></p>
-<p id='n109' class='pln'><a href='#n109'>109</a></p>
-<p id='n110' class='pln'><a href='#n110'>110</a></p>
-<p id='n111' class='pln'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='pln'><a href='#n120'>120</a></p>
-<p id='n121' class='pln'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='pln'><a href='#n123'>123</a></p>
-<p id='n124' class='pln'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='pln'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='pln'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='pln'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='pln'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='pln'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='pln'><a href='#n149'>149</a></p>
-<p id='n150' class='pln'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='pln'><a href='#n152'>152</a></p>
-<p id='n153' class='pln'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='pln'><a href='#n155'>155</a></p>
-<p id='n156' class='pln'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='pln'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='pln'><a href='#n163'>163</a></p>
-<p id='n164' class='pln'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='pln'><a href='#n166'>166</a></p>
-<p id='n167' class='pln'><a href='#n167'>167</a></p>
-<p id='n168' class='pln'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='pln'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='pln'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='pln'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='pln'><a href='#n184'>184</a></p>
-<p id='n185' class='pln'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='pln'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='pln'><a href='#n189'>189</a></p>
-<p id='n190' class='pln'><a href='#n190'>190</a></p>
-<p id='n191' class='pln'><a href='#n191'>191</a></p>
-<p id='n192' class='pln'><a href='#n192'>192</a></p>
-<p id='n193' class='pln'><a href='#n193'>193</a></p>
-<p id='n194' class='pln'><a href='#n194'>194</a></p>
-<p id='n195' class='pln'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='pln'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='pln'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='pln'><a href='#n203'>203</a></p>
-<p id='n204' class='pln'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='pln'><a href='#n207'>207</a></p>
-<p id='n208' class='pln'><a href='#n208'>208</a></p>
-<p id='n209' class='pln'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='pln'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='pln'><a href='#n214'>214</a></p>
-<p id='n215' class='pln'><a href='#n215'>215</a></p>
-<p id='n216' class='stm run hide_run'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='stm run hide_run'><a href='#n218'>218</a></p>
-<p id='n219' class='stm run hide_run'><a href='#n219'>219</a></p>
-<p id='n220' class='stm run hide_run'><a href='#n220'>220</a></p>
-<p id='n221' class='stm run hide_run'><a href='#n221'>221</a></p>
-<p id='n222' class='stm run hide_run'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='pln'><a href='#n227'>227</a></p>
-<p id='n228' class='stm run hide_run'><a href='#n228'>228</a></p>
-<p id='n229' class='stm run hide_run'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='stm run hide_run'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='pln'><a href='#n234'>234</a></p>
-<p id='n235' class='pln'><a href='#n235'>235</a></p>
-<p id='n236' class='stm run hide_run'><a href='#n236'>236</a></p>
-<p id='n237' class='pln'><a href='#n237'>237</a></p>
-<p id='n238' class='pln'><a href='#n238'>238</a></p>
-<p id='n239' class='stm run hide_run'><a href='#n239'>239</a></p>
-<p id='n240' class='stm run hide_run'><a href='#n240'>240</a></p>
-<p id='n241' class='pln'><a href='#n241'>241</a></p>
-<p id='n242' class='stm run hide_run'><a href='#n242'>242</a></p>
-<p id='n243' class='stm run hide_run'><a href='#n243'>243</a></p>
-<p id='n244' class='stm run hide_run'><a href='#n244'>244</a></p>
-<p id='n245' class='stm run hide_run'><a href='#n245'>245</a></p>
-<p id='n246' class='pln'><a href='#n246'>246</a></p>
-<p id='n247' class='stm run hide_run'><a href='#n247'>247</a></p>
-<p id='n248' class='stm run hide_run'><a href='#n248'>248</a></p>
-<p id='n249' class='stm run hide_run'><a href='#n249'>249</a></p>
-<p id='n250' class='stm run hide_run'><a href='#n250'>250</a></p>
-<p id='n251' class='stm run hide_run'><a href='#n251'>251</a></p>
-<p id='n252' class='stm run hide_run'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='stm run hide_run'><a href='#n254'>254</a></p>
-<p id='n255' class='pln'><a href='#n255'>255</a></p>
-<p id='n256' class='stm run hide_run'><a href='#n256'>256</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.defaults</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Configuration introspection and defaults.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>collections</span> <span class='key'>import</span> <span class='nam'>deque</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>datetime</span> <span class='key'>import</span> <span class='nam'>timedelta</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>items</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>strtobool</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>memoize</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='nam'>is_jython</span> <span class='op'>=</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>platform</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;java&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='nam'>is_pypy</span> <span class='op'>=</span> <span class='nam'>hasattr</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>,</span> <span class='str'>&#39;pypy_version_info&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='nam'>DEFAULT_POOL</span> <span class='op'>=</span> <span class='str'>&#39;processes&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>if</span> <span class='nam'>is_jython</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>DEFAULT_POOL</span> <span class='op'>=</span> <span class='str'>&#39;threads&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>elif</span> <span class='nam'>is_pypy</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>pypy_version_info</span><span class='op'>[</span><span class='num'>0</span><span class='op'>:</span><span class='num'>3</span><span class='op'>]</span> <span class='op'>&lt;</span> <span class='op'>(</span><span class='num'>1</span><span class='op'>,</span> <span class='num'>5</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>DEFAULT_POOL</span> <span class='op'>=</span> <span class='str'>&#39;solo&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'>&nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>DEFAULT_POOL</span> <span class='op'>=</span> <span class='str'>&#39;processes&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='nam'>DEFAULT_PROCESS_LOG_FMT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='str'>&nbsp; &nbsp; [%(asctime)s: %(levelname)s/%(processName)s] %(message)s</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='op'>.</span><span class='nam'>strip</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='stm run hide_run'><span class='nam'>DEFAULT_LOG_FMT</span> <span class='op'>=</span> <span class='str'>&#39;[%(asctime)s: %(levelname)s] %(message)s&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'><span class='nam'>DEFAULT_TASK_LOG_FMT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;[%(asctime)s: %(levelname)s/%(processName)s] \</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='str'>%(task_name)s[%(task_id)s]: %(message)s&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='nam'>_BROKER_OLD</span> <span class='op'>=</span> <span class='op'>{</span><span class='str'>&#39;deprecate_by&#39;</span><span class='op'>:</span> <span class='str'>&#39;2.5&#39;</span><span class='op'>,</span> <span class='str'>&#39;remove_by&#39;</span><span class='op'>:</span> <span class='str'>&#39;4.0&#39;</span><span class='op'>,</span> <span class='str'>&#39;alt&#39;</span><span class='op'>:</span> <span class='str'>&#39;BROKER_URL&#39;</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='nam'>_REDIS_OLD</span> <span class='op'>=</span> <span class='op'>{</span><span class='str'>&#39;deprecate_by&#39;</span><span class='op'>:</span> <span class='str'>&#39;2.5&#39;</span><span class='op'>,</span> <span class='str'>&#39;remove_by&#39;</span><span class='op'>:</span> <span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;alt&#39;</span><span class='op'>:</span> <span class='str'>&#39;URL form of CELERY_RESULT_BACKEND&#39;</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>alt</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>deprecate_by</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>remove_by</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>typemap</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>string</span><span class='op'>=</span><span class='nam'>str</span><span class='op'>,</span> <span class='nam'>int</span><span class='op'>=</span><span class='nam'>int</span><span class='op'>,</span> <span class='nam'>float</span><span class='op'>=</span><span class='nam'>float</span><span class='op'>,</span> <span class='nam'>any</span><span class='op'>=</span><span class='key'>lambda</span> <span class='nam'>v</span><span class='op'>:</span> <span class='nam'>v</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>bool</span><span class='op'>=</span><span class='nam'>strtobool</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>=</span><span class='nam'>dict</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>=</span><span class='nam'>tuple</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>default</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default</span> <span class='op'>=</span> <span class='nam'>default</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>type</span> <span class='op'>=</span> <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;type&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;string&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>to_python</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>typemap</span><span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>type</span><span class='op'>]</span><span class='op'>(</span><span class='nam'>value</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__repr__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;&lt;Option: type-&gt;{0} default-&gt;{1!r}&gt;&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>type</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'><span class='nam'>NAMESPACES</span> <span class='op'>=</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;BROKER&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;URL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CONNECTION_TIMEOUT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>4</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CONNECTION_RETRY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CONNECTION_MAX_RETRIES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>100</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HEARTBEAT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HEARTBEAT_CHECKRATE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>3.0</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;POOL_LIMIT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>10</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;USE_SSL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TRANSPORT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TRANSPORT_OPTIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HOST&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_BROKER_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;PORT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_BROKER_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;USER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_BROKER_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;PASSWORD&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_BROKER_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;VHOST&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_BROKER_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;CASSANDRA&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;COLUMN_FAMILY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DETAILED_MODE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;KEYSPACE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;READ_CONSISTENCY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SERVERS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;list&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;WRITE_CONSISTENCY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;CELERY&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ACCEPT_CONTENT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;any&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ACKS_LATE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ALWAYS_EAGER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ANNOTATIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;any&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;FORCE_BILLIARD_LOGGING&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;BROADCAST_QUEUE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celeryctl&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;BROADCAST_EXCHANGE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celeryctl&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;BROADCAST_EXCHANGE_TYPE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;fanout&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CACHE_BACKEND&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CACHE_BACKEND_OPTIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CHORD_PROPAGATES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CREATE_MISSING_QUEUES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_RATE_LIMIT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DISABLE_RATE_LIMITS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_ROUTING_KEY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_QUEUE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_EXCHANGE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_EXCHANGE_TYPE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;direct&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;DEFAULT_DELIVERY_MODE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>2</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;EAGER_PROPAGATES_EXCEPTIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ENABLE_UTC&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;EVENT_SERIALIZER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;json&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;IMPORTS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;tuple&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;INCLUDE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;tuple&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;IGNORE_RESULT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;MAX_CACHED_RESULTS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>5000</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;MESSAGE_COMPRESSION&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;MONGODB_BACKEND_SETTINGS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIS_HOST&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_REDIS_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIS_PORT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_REDIS_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIS_DB&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_REDIS_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIS_PASSWORD&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>_REDIS_OLD</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIS_MAX_CONNECTIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_BACKEND&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_DB_SHORT_LIVED_SESSIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_DBURI&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_ENGINE_OPTIONS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_EXCHANGE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celeryresults&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_EXCHANGE_TYPE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;direct&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_SERIALIZER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;pickle&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;RESULT_PERSISTENT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;ROUTES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;any&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SEND_EVENTS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SEND_TASK_ERROR_EMAILS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SEND_TASK_SENT_EVENT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;STORE_ERRORS_EVEN_IF_IGNORED&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_PUBLISH_RETRY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_PUBLISH_RETRY_POLICY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;max_retries&#39;</span><span class='op'>:</span> <span class='num'>3</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;interval_start&#39;</span><span class='op'>:</span> <span class='num'>0</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;interval_max&#39;</span><span class='op'>:</span> <span class='num'>1</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;interval_step&#39;</span><span class='op'>:</span> <span class='num'>0.2</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_RESULT_EXPIRES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>timedelta</span><span class='op'>(</span><span class='nam'>days</span><span class='op'>=</span><span class='num'>1</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_SERIALIZER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;pickle&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TIMEZONE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TRACK_STARTED&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIRECT_STDOUTS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;REDIRECT_STDOUTS_LEVEL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;WARNING&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;QUEUES&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;QUEUE_HA_POLICY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SECURITY_KEY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SECURITY_CERTIFICATE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SECURITY_CERT_STORE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;WORKER_DIRECT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;CELERYD&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;AGENT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;AUTOSCALER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery.worker.autoscale:Autoscaler&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;AUTORELOADER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery.worker.autoreload:Autoreloader&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CONCURRENCY&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>0</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TIMER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TIMER_PRECISION&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>1.0</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;FORCE_EXECV&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HIJACK_ROOT_LOGGER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CONSUMER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery.worker.consumer:Consumer&#39;</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;string&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_FORMAT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>DEFAULT_PROCESS_LOG_FMT</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_COLOR&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_LEVEL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;WARN&#39;</span><span class='op'>,</span> <span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--loglevel argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_FILE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--logfile argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;MAX_TASKS_PER_CHILD&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;POOL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>DEFAULT_POOL</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;POOL_PUTLOCKS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;POOL_RESTARTS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;PREFETCH_MULTIPLIER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>4</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;STATE_DB&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_LOG_FORMAT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>DEFAULT_TASK_LOG_FMT</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_SOFT_TIME_LIMIT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TASK_TIME_LIMIT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;WORKER_LOST_WAIT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>10.0</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;CELERYBEAT&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SCHEDULE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;dict&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SCHEDULER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery.beat:PersistentScheduler&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;SCHEDULE_FILENAME&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celerybeat-schedule&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;MAX_LOOP_INTERVAL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>0</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_LEVEL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;INFO&#39;</span><span class='op'>,</span> <span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--loglevel argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_FILE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--logfile argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;CELERYMON&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_LEVEL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;INFO&#39;</span><span class='op'>,</span> <span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--loglevel argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_FILE&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>deprecate_by</span><span class='op'>=</span><span class='str'>&#39;2.4&#39;</span><span class='op'>,</span> <span class='nam'>remove_by</span><span class='op'>=</span><span class='str'>&#39;4.0&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>alt</span><span class='op'>=</span><span class='str'>&#39;--logfile argument&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;LOG_FORMAT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>DEFAULT_LOG_FMT</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;EMAIL&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HOST&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;localhost&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;PORT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>25</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;int&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HOST_USER&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;HOST_PASSWORD&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;TIMEOUT&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='num'>2</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;float&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;USE_SSL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;USE_TLS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;bool&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='pln'>&nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;SERVER_EMAIL&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='str'>&#39;celery@localhost&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;ADMINS&#39;</span><span class='op'>:</span> <span class='nam'>Option</span><span class='op'>(</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='str'>&#39;tuple&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>flatten</span><span class='op'>(</span><span class='nam'>d</span><span class='op'>,</span> <span class='nam'>ns</span><span class='op'>=</span><span class='str'>&#39;&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>stack</span> <span class='op'>=</span> <span class='nam'>deque</span><span class='op'>(</span><span class='op'>[</span><span class='op'>(</span><span class='nam'>ns</span><span class='op'>,</span> <span class='nam'>d</span><span class='op'>)</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>while</span> <span class='nam'>stack</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>space</span> <span class='op'>=</span> <span class='nam'>stack</span><span class='op'>.</span><span class='nam'>popleft</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>space</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>value</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>stack</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>name</span> <span class='op'>+</span> <span class='nam'>key</span> <span class='op'>+</span> <span class='str'>&#39;_&#39;</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>yield</span> <span class='nam'>name</span> <span class='op'>+</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='stm run hide_run'><span class='nam'>DEFAULTS</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>.</span><span class='nam'>default</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>flatten</span><span class='op'>(</span><span class='nam'>NAMESPACES</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>find_deprecated_settings</span><span class='op'>(</span><span class='nam'>source</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>warn_deprecated</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>opt</span> <span class='key'>in</span> <span class='nam'>flatten</span><span class='op'>(</span><span class='nam'>NAMESPACES</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='op'>(</span><span class='nam'>opt</span><span class='op'>.</span><span class='nam'>deprecate_by</span> <span class='key'>or</span> <span class='nam'>opt</span><span class='op'>.</span><span class='nam'>remove_by</span><span class='op'>)</span> <span class='key'>and</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>source</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>warn_deprecated</span><span class='op'>(</span><span class='nam'>description</span><span class='op'>=</span><span class='str'>&#39;The {0!r} setting&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>deprecation</span><span class='op'>=</span><span class='nam'>opt</span><span class='op'>.</span><span class='nam'>deprecate_by</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>removal</span><span class='op'>=</span><span class='nam'>opt</span><span class='op'>.</span><span class='nam'>remove_by</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>alternative</span><span class='op'>=</span><span class='str'>&#39;Use {0.alt} instead&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>opt</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>source</span><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='stm run hide_run'><span class='op'>@</span><span class='nam'>memoize</span><span class='op'>(</span><span class='nam'>maxsize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>find</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='pln'>&nbsp; &nbsp; <span class='com'># - Try specified namespace first.</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>namespace</span> <span class='op'>=</span> <span class='nam'>namespace</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>namespace</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>NAMESPACES</span><span class='op'>[</span><span class='nam'>namespace</span><span class='op'>]</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - Try all the other namespaces.</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>ns</span><span class='op'>,</span> <span class='nam'>keys</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>NAMESPACES</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>ns</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span> <span class='op'>==</span> <span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>None</span><span class='op'>,</span> <span class='nam'>ns</span><span class='op'>,</span> <span class='nam'>keys</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>elif</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>keys</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>ns</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>keys</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='pln'>&nbsp; &nbsp; <span class='com'># - See if name is a qualname last.</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>None</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>DEFAULTS</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 552
celery/tests/cover/celery_app_log.html

@@ -1,552 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.log: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.log</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            112 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>112 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='stm run hide_run'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='stm run hide_run'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='stm run hide_run'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='stm run hide_run'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='stm run hide_run'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='stm run hide_run'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='stm run hide_run'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='pln'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='pln'><a href='#n110'>110</a></p>
-<p id='n111' class='pln'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='stm run hide_run'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='pln'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='pln'><a href='#n123'>123</a></p>
-<p id='n124' class='pln'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='stm run hide_run'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='pln'><a href='#n130'>130</a></p>
-<p id='n131' class='stm run hide_run'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='stm run hide_run'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='stm run hide_run'><a href='#n139'>139</a></p>
-<p id='n140' class='stm run hide_run'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='stm run hide_run'><a href='#n142'>142</a></p>
-<p id='n143' class='stm run hide_run'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='pln'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='pln'><a href='#n149'>149</a></p>
-<p id='n150' class='pln'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='pln'><a href='#n152'>152</a></p>
-<p id='n153' class='pln'><a href='#n153'>153</a></p>
-<p id='n154' class='stm run hide_run'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='stm run hide_run'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='pln'><a href='#n167'>167</a></p>
-<p id='n168' class='pln'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='stm run hide_run'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='stm run hide_run'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='pln'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='stm run hide_run'><a href='#n183'>183</a></p>
-<p id='n184' class='stm run hide_run'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='stm run hide_run'><a href='#n186'>186</a></p>
-<p id='n187' class='stm run hide_run'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='stm run hide_run'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='stm run hide_run'><a href='#n191'>191</a></p>
-<p id='n192' class='pln'><a href='#n192'>192</a></p>
-<p id='n193' class='stm run hide_run'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='pln'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='stm run hide_run'><a href='#n197'>197</a></p>
-<p id='n198' class='stm run hide_run'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='stm run hide_run'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='stm run hide_run'><a href='#n203'>203</a></p>
-<p id='n204' class='pln'><a href='#n204'>204</a></p>
-<p id='n205' class='stm run hide_run'><a href='#n205'>205</a></p>
-<p id='n206' class='stm run hide_run'><a href='#n206'>206</a></p>
-<p id='n207' class='stm run hide_run'><a href='#n207'>207</a></p>
-<p id='n208' class='stm run hide_run'><a href='#n208'>208</a></p>
-<p id='n209' class='stm run hide_run'><a href='#n209'>209</a></p>
-<p id='n210' class='stm run hide_run'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='pln'><a href='#n214'>214</a></p>
-<p id='n215' class='stm run hide_run'><a href='#n215'>215</a></p>
-<p id='n216' class='stm run hide_run'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='stm run hide_run'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='stm run hide_run'><a href='#n220'>220</a></p>
-<p id='n221' class='stm run hide_run'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='pln'><a href='#n227'>227</a></p>
-<p id='n228' class='stm run hide_run'><a href='#n228'>228</a></p>
-<p id='n229' class='pln'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='stm run hide_run'><a href='#n231'>231</a></p>
-<p id='n232' class='pln'><a href='#n232'>232</a></p>
-<p id='n233' class='stm run hide_run'><a href='#n233'>233</a></p>
-<p id='n234' class='stm run hide_run'><a href='#n234'>234</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.log</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; The Celery instances logging section: ``Celery.log``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&nbsp; &nbsp; Sets up logging for the worker and other programs,</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&nbsp; &nbsp; redirects stdouts, colors log output, patches logging</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='str'>&nbsp; &nbsp; related compatibility fixes, and so on.</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>logging</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>handlers</span> <span class='key'>import</span> <span class='nam'>WatchedFileHandler</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>log</span> <span class='key'>import</span> <span class='nam'>NullHandler</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>signals</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>get_current_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>string_t</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>isatty</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>log</span> <span class='key'>import</span> <span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'>&nbsp; &nbsp; <span class='nam'>get_logger</span><span class='op'>,</span> <span class='nam'>mlevel</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'>&nbsp; &nbsp; <span class='nam'>ColorFormatter</span><span class='op'>,</span> <span class='nam'>ensure_process_aware_logger</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'>&nbsp; &nbsp; <span class='nam'>LoggingProxy</span><span class='op'>,</span> <span class='nam'>get_multiprocessing_logger</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'>&nbsp; &nbsp; <span class='nam'>reset_multiprocessing_logger</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>term</span> <span class='key'>import</span> <span class='nam'>colored</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'><span class='nam'>MP_LOG</span> <span class='op'>=</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;MP_LOG&#39;</span><span class='op'>,</span> <span class='nam'>False</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskFormatter</span><span class='op'>(</span><span class='nam'>ColorFormatter</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>format</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>record</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>get_current_task</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>task</span> <span class='key'>and</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>record</span><span class='op'>.</span><span class='nam'>__dict__</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>task_name</span><span class='op'>=</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>record</span><span class='op'>.</span><span class='nam'>__dict__</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;task_name&#39;</span><span class='op'>,</span> <span class='str'>&#39;???&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>record</span><span class='op'>.</span><span class='nam'>__dict__</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;task_id&#39;</span><span class='op'>,</span> <span class='str'>&#39;???&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>ColorFormatter</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>record</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Logging</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'>&nbsp; &nbsp; <span class='com'>#: The logging subsystem is only configured once per process.</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'>&nbsp; &nbsp; <span class='com'>#: setup_logging_subsystem sets this flag, and subsequent calls</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'>&nbsp; &nbsp; <span class='com'>#: will do nothing.</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_setup</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>mlevel</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERYD_LOG_LEVEL</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>format</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERYD_LOG_FORMAT</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>task_format</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERYD_TASK_LOG_FORMAT</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>colorize</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERYD_LOG_COLOR</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>redirect_stdouts</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>redirect_level</span><span class='op'>=</span><span class='str'>&#39;WARNING&#39;</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>handled</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_logging_subsystem</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>handled</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>redirect_stdouts</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span><span class='op'>(</span><span class='nam'>redirect_level</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>CELERY_LOG_LEVEL</span><span class='op'>=</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>loglevel</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>loglevel</span> <span class='key'>else</span> <span class='str'>&#39;&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>CELERY_LOG_FILE</span><span class='op'>=</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>logfile</span> <span class='key'>else</span> <span class='str'>&#39;&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>handled</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>redirect_stdouts</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery.redirected&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts_to_logger</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>get_logger</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>loglevel</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>CELERY_LOG_REDIRECT</span><span class='op'>=</span><span class='str'>&#39;1&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>CELERY_LOG_REDIRECT_LEVEL</span><span class='op'>=</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>loglevel</span> <span class='key'>or</span> <span class='str'>&#39;&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_logging_subsystem</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>Logging</span><span class='op'>.</span><span class='nam'>_setup</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>Logging</span><span class='op'>.</span><span class='nam'>_setup</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>mlevel</span><span class='op'>(</span><span class='nam'>loglevel</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span> <span class='op'>=</span> <span class='nam'>format</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>format</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>supports_color</span><span class='op'>(</span><span class='nam'>colorize</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reset_multiprocessing_logger</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ensure_process_aware_logger</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>receivers</span> <span class='op'>=</span> <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>setup_logging</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>=</span><span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>receivers</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>root</span> <span class='op'>=</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>getLogger</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERYD_HIJACK_ROOT_LOGGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>root</span><span class='op'>.</span><span class='nam'>handlers</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Configure root logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_configure_logger</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>root</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Configure the multiprocessing logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_configure_logger</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>get_multiprocessing_logger</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>loglevel</span> <span class='key'>if</span> <span class='nam'>MP_LOG</span> <span class='key'>else</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>ERROR</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>after_setup_logger</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>=</span><span class='nam'>root</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>=</span><span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># then setup the root task logger.</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_task_loggers</span><span class='op'>(</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># This is a hack for multiprocessing&#39;s fork+exec, so that</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># logging before Process.run works.</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logfile_name</span> <span class='op'>=</span> <span class='nam'>logfile</span> <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span> <span class='key'>else</span> <span class='str'>&#39;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>_MP_FORK_LOGLEVEL_</span><span class='op'>=</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>loglevel</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_MP_FORK_LOGFILE_</span><span class='op'>=</span><span class='nam'>logfile_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_MP_FORK_LOGFORMAT_</span><span class='op'>=</span><span class='nam'>format</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>receivers</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_configure_logger</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>logger</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_handlers</span><span class='op'>(</span><span class='nam'>logger</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>format</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>loglevel</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>setLevel</span><span class='op'>(</span><span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_task_loggers</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>format</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Setup the task logger.</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; If `logfile` is not specified, then `sys.stderr` is used.</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Returns logger object.</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>mlevel</span><span class='op'>(</span><span class='nam'>loglevel</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span> <span class='op'>=</span> <span class='nam'>format</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>task_format</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>supports_color</span><span class='op'>(</span><span class='nam'>colorize</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_handlers</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>get_logger</span><span class='op'>(</span><span class='str'>&#39;celery.task&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>formatter</span><span class='op'>=</span><span class='nam'>TaskFormatter</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>setLevel</span><span class='op'>(</span><span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>propagate</span> <span class='op'>=</span> <span class='nam'>int</span><span class='op'>(</span><span class='nam'>propagate</span><span class='op'>)</span>&nbsp; &nbsp; <span class='com'># this is an int for some reason.</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='com'># better to not question why.</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>after_setup_task_logger</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>=</span><span class='nam'>logger</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>format</span><span class='op'>=</span><span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>redirect_stdouts_to_logger</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>stdout</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>stderr</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Redirect :class:`sys.stdout` and :class:`sys.stderr` to a</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; logging instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param logger: The :class:`logging.Logger` instance to redirect to.</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param loglevel: The loglevel redirected messages will be logged as.</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>proxy</span> <span class='op'>=</span> <span class='nam'>LoggingProxy</span><span class='op'>(</span><span class='nam'>logger</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>stdout</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stdout</span> <span class='op'>=</span> <span class='nam'>proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>stderr</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stderr</span> <span class='op'>=</span> <span class='nam'>proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>supports_color</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>colorize</span> <span class='key'>if</span> <span class='nam'>colorize</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>colorize</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>IS_WINDOWS</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Windows does not support ANSI color codes.</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>colorize</span> <span class='key'>or</span> <span class='nam'>colorize</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Only use color if there is no active log file</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># and stderr is an actual terminal.</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logfile</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>and</span> <span class='nam'>isatty</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stderr</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>colorize</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>colored</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>enabled</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>colored</span><span class='op'>(</span><span class='nam'>enabled</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>supports_color</span><span class='op'>(</span><span class='nam'>enabled</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_handlers</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>,</span> <span class='nam'>format</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>formatter</span><span class='op'>=</span><span class='nam'>ColorFormatter</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_is_configured</span><span class='op'>(</span><span class='nam'>logger</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>handler</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_detect_handler</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>handler</span><span class='op'>.</span><span class='nam'>setFormatter</span><span class='op'>(</span><span class='nam'>formatter</span><span class='op'>(</span><span class='nam'>format</span><span class='op'>,</span> <span class='nam'>use_color</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>addHandler</span><span class='op'>(</span><span class='nam'>handler</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_detect_handler</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Create log handler with either a filename, an open stream</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; or :const:`None` (stderr).&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logfile</span> <span class='op'>=</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stderr__</span> <span class='key'>if</span> <span class='nam'>logfile</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>logfile</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>hasattr</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>,</span> <span class='str'>&#39;write&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>StreamHandler</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>WatchedFileHandler</span><span class='op'>(</span><span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_has_handler</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>logger</span><span class='op'>.</span><span class='nam'>handlers</span> <span class='key'>and</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>logger</span><span class='op'>.</span><span class='nam'>handlers</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>NullHandler</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_is_configured</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>logger</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_has_handler</span><span class='op'>(</span><span class='nam'>logger</span><span class='op'>)</span> <span class='key'>and</span> <span class='key'>not</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>,</span> <span class='str'>&#39;_rudimentary_setup&#39;</span><span class='op'>,</span> <span class='nam'>False</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_logger</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Deprecated: No longer used.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_logging_subsystem</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>root</span><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>get_default_logger</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_logger</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 222
celery/tests/cover/celery_app_registry.html

@@ -1,222 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.registry: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.registry</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            30 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>30 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='pln'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='stm run hide_run'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.registry</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Registry of available tasks.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>inspect</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>importlib</span> <span class='key'>import</span> <span class='nam'>import_module</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>get_current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>NotRegistered</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>items</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskRegistry</span><span class='op'>(</span><span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>NotRegistered</span> <span class='op'>=</span> <span class='nam'>NotRegistered</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__missing__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>NotRegistered</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>register</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Register a task in the task registry.</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The task will be automatically instantiated if not already an</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; instance.</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>[</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>inspect</span><span class='op'>.</span><span class='nam'>isclass</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span> <span class='key'>and</span> <span class='nam'>task</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>or</span> <span class='nam'>task</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>unregister</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Unregister task by name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param name: name of the task to unregister, or a</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :class:`celery.task.base.Task` with a valid `name` attribute.</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :raises celery.exceptions.NotRegistered: if the task has not</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; been registered.</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='str'>&#39;name&#39;</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>NotRegistered</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'>&nbsp; &nbsp; <span class='com'># -- these methods are irrelevant now and will be removed in 4.0</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>regular</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>filter_types</span><span class='op'>(</span><span class='str'>&#39;regular&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>periodic</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>filter_types</span><span class='op'>(</span><span class='str'>&#39;periodic&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>filter_types</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='str'>&#39;type&#39;</span><span class='op'>,</span> <span class='str'>&#39;regular&#39;</span><span class='op'>)</span> <span class='op'>==</span> <span class='nam'>type</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_unpickle_task</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>tasks</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_unpickle_task_v2</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>module</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>module</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>import_module</span><span class='op'>(</span><span class='nam'>module</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_current_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>tasks</span><span class='op'>[</span><span class='nam'>name</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 264
celery/tests/cover/celery_app_routes.html

@@ -1,264 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.routes: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.routes</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            55 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>55 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='stm run hide_run'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='pln'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='pln'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='stm run hide_run'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='stm run hide_run'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='stm run hide_run'><a href='#n86'>86</a></p>
-<p id='n87' class='stm run hide_run'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.routes</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Contains utilities for working with task routers,</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='str'>&nbsp; &nbsp; (:setting:`CELERY_ROUTES`).</span><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>QueueNotFound</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>string_t</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>lpmerge</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>firstmethod</span><span class='op'>,</span> <span class='nam'>mpromise</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>instantiate</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='nam'>_first_route</span> <span class='op'>=</span> <span class='nam'>firstmethod</span><span class='op'>(</span><span class='str'>&#39;route_for_task&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>MapRoute</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates a router out of a :class:`dict`.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>map</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>map</span> <span class='op'>=</span> <span class='nam'>map</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>route_for_task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>route</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>map</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>route</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Router</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>routes</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>create_missing</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span> <span class='op'>=</span> <span class='op'>{</span><span class='op'>}</span> <span class='key'>if</span> <span class='nam'>queues</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>queues</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>routes</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span> <span class='key'>if</span> <span class='nam'>routes</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>routes</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>create_missing</span> <span class='op'>=</span> <span class='nam'>create_missing</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>route</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>expand_destination</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>)</span>&nbsp; <span class='com'># expands &#39;queue&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>routes</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>route</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>lookup_route</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>route</span><span class='op'>:</span>&nbsp; <span class='com'># expands &#39;queue&#39; in route.</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>lpmerge</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>expand_destination</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='str'>&#39;queue&#39;</span> <span class='key'>not</span> <span class='key'>in</span> <span class='nam'>options</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>lpmerge</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>expand_destination</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_DEFAULT_QUEUE</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>expand_destination</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>route</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Route can be a queue name: convenient for direct exchanges.</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queue</span><span class='op'>,</span> <span class='nam'>route</span> <span class='op'>=</span> <span class='nam'>route</span><span class='op'>,</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># can use defaults from configured queue, but override specific</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># things (like the routing_key): great for topic exchanges.</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queue</span> <span class='op'>=</span> <span class='nam'>route</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;queue&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>queue</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>Q</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>[</span><span class='nam'>queue</span><span class='op'>]</span>&nbsp; <span class='com'># noqa</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>KeyError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>QueueNotFound</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;Queue {0!r} missing from CELERY_QUEUES&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>queue</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># needs to be declared by publisher</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>route</span><span class='op'>[</span><span class='str'>&#39;queue&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>Q</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>route</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>lookup_route</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_first_route</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>routes</span><span class='op'>,</span> <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>routes</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Expands the :setting:`CELERY_ROUTES` setting.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>expand_route</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>,</span> <span class='nam'>dict</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>MapRoute</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>mpromise</span><span class='op'>(</span><span class='nam'>instantiate</span><span class='op'>,</span> <span class='nam'>route</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>route</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>routes</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>routes</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>list</span><span class='op'>,</span> <span class='nam'>tuple</span><span class='op'>)</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>routes</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>routes</span><span class='op'>,</span> <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='op'>[</span><span class='nam'>expand_route</span><span class='op'>(</span><span class='nam'>route</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>route</span> <span class='key'>in</span> <span class='nam'>routes</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 1728
celery/tests/cover/celery_app_task.html

@@ -1,1728 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.task: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.task</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            294 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>294 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='pln'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='stm run hide_run'><a href='#n61'>61</a></p>
-<p id='n62' class='pln'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='stm run hide_run'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='stm run hide_run'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='stm run hide_run'><a href='#n74'>74</a></p>
-<p id='n75' class='stm run hide_run'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='stm run hide_run'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='stm run hide_run'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='pln'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='stm run hide_run'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='stm run hide_run'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='stm run hide_run'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='pln'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='pln'><a href='#n109'>109</a></p>
-<p id='n110' class='pln'><a href='#n110'>110</a></p>
-<p id='n111' class='pln'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='stm run hide_run'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='pln'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='stm run hide_run'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='stm run hide_run'><a href='#n131'>131</a></p>
-<p id='n132' class='pln'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='stm run hide_run'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='stm run hide_run'><a href='#n143'>143</a></p>
-<p id='n144' class='stm run hide_run'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='stm run hide_run'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='stm run hide_run'><a href='#n148'>148</a></p>
-<p id='n149' class='pln'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='stm run hide_run'><a href='#n151'>151</a></p>
-<p id='n152' class='pln'><a href='#n152'>152</a></p>
-<p id='n153' class='pln'><a href='#n153'>153</a></p>
-<p id='n154' class='stm run hide_run'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='pln'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='pln'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='stm run hide_run'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='stm run hide_run'><a href='#n167'>167</a></p>
-<p id='n168' class='pln'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='stm run hide_run'><a href='#n170'>170</a></p>
-<p id='n171' class='pln'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='stm run hide_run'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='stm run hide_run'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='stm run hide_run'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='pln'><a href='#n184'>184</a></p>
-<p id='n185' class='pln'><a href='#n185'>185</a></p>
-<p id='n186' class='stm run hide_run'><a href='#n186'>186</a></p>
-<p id='n187' class='pln'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='pln'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='pln'><a href='#n191'>191</a></p>
-<p id='n192' class='pln'><a href='#n192'>192</a></p>
-<p id='n193' class='pln'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='pln'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='pln'><a href='#n198'>198</a></p>
-<p id='n199' class='stm run hide_run'><a href='#n199'>199</a></p>
-<p id='n200' class='pln'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='pln'><a href='#n203'>203</a></p>
-<p id='n204' class='stm run hide_run'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='pln'><a href='#n207'>207</a></p>
-<p id='n208' class='stm run hide_run'><a href='#n208'>208</a></p>
-<p id='n209' class='pln'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='pln'><a href='#n213'>213</a></p>
-<p id='n214' class='pln'><a href='#n214'>214</a></p>
-<p id='n215' class='pln'><a href='#n215'>215</a></p>
-<p id='n216' class='stm run hide_run'><a href='#n216'>216</a></p>
-<p id='n217' class='pln'><a href='#n217'>217</a></p>
-<p id='n218' class='pln'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='stm run hide_run'><a href='#n220'>220</a></p>
-<p id='n221' class='pln'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='pln'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='stm run hide_run'><a href='#n227'>227</a></p>
-<p id='n228' class='pln'><a href='#n228'>228</a></p>
-<p id='n229' class='pln'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='pln'><a href='#n231'>231</a></p>
-<p id='n232' class='pln'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='pln'><a href='#n234'>234</a></p>
-<p id='n235' class='pln'><a href='#n235'>235</a></p>
-<p id='n236' class='pln'><a href='#n236'>236</a></p>
-<p id='n237' class='pln'><a href='#n237'>237</a></p>
-<p id='n238' class='pln'><a href='#n238'>238</a></p>
-<p id='n239' class='pln'><a href='#n239'>239</a></p>
-<p id='n240' class='pln'><a href='#n240'>240</a></p>
-<p id='n241' class='pln'><a href='#n241'>241</a></p>
-<p id='n242' class='pln'><a href='#n242'>242</a></p>
-<p id='n243' class='stm run hide_run'><a href='#n243'>243</a></p>
-<p id='n244' class='pln'><a href='#n244'>244</a></p>
-<p id='n245' class='pln'><a href='#n245'>245</a></p>
-<p id='n246' class='pln'><a href='#n246'>246</a></p>
-<p id='n247' class='pln'><a href='#n247'>247</a></p>
-<p id='n248' class='pln'><a href='#n248'>248</a></p>
-<p id='n249' class='pln'><a href='#n249'>249</a></p>
-<p id='n250' class='pln'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='pln'><a href='#n252'>252</a></p>
-<p id='n253' class='pln'><a href='#n253'>253</a></p>
-<p id='n254' class='pln'><a href='#n254'>254</a></p>
-<p id='n255' class='stm run hide_run'><a href='#n255'>255</a></p>
-<p id='n256' class='pln'><a href='#n256'>256</a></p>
-<p id='n257' class='pln'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='pln'><a href='#n259'>259</a></p>
-<p id='n260' class='pln'><a href='#n260'>260</a></p>
-<p id='n261' class='pln'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='pln'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='pln'><a href='#n265'>265</a></p>
-<p id='n266' class='stm run hide_run'><a href='#n266'>266</a></p>
-<p id='n267' class='pln'><a href='#n267'>267</a></p>
-<p id='n268' class='pln'><a href='#n268'>268</a></p>
-<p id='n269' class='pln'><a href='#n269'>269</a></p>
-<p id='n270' class='pln'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='pln'><a href='#n272'>272</a></p>
-<p id='n273' class='pln'><a href='#n273'>273</a></p>
-<p id='n274' class='pln'><a href='#n274'>274</a></p>
-<p id='n275' class='pln'><a href='#n275'>275</a></p>
-<p id='n276' class='pln'><a href='#n276'>276</a></p>
-<p id='n277' class='stm run hide_run'><a href='#n277'>277</a></p>
-<p id='n278' class='pln'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='pln'><a href='#n280'>280</a></p>
-<p id='n281' class='pln'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='pln'><a href='#n283'>283</a></p>
-<p id='n284' class='stm run hide_run'><a href='#n284'>284</a></p>
-<p id='n285' class='stm run hide_run'><a href='#n285'>285</a></p>
-<p id='n286' class='stm run hide_run'><a href='#n286'>286</a></p>
-<p id='n287' class='pln'><a href='#n287'>287</a></p>
-<p id='n288' class='stm run hide_run'><a href='#n288'>288</a></p>
-<p id='n289' class='stm run hide_run'><a href='#n289'>289</a></p>
-<p id='n290' class='stm run hide_run'><a href='#n290'>290</a></p>
-<p id='n291' class='stm run hide_run'><a href='#n291'>291</a></p>
-<p id='n292' class='stm run hide_run'><a href='#n292'>292</a></p>
-<p id='n293' class='stm run hide_run'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='pln'><a href='#n295'>295</a></p>
-<p id='n296' class='pln'><a href='#n296'>296</a></p>
-<p id='n297' class='stm run hide_run'><a href='#n297'>297</a></p>
-<p id='n298' class='stm run hide_run'><a href='#n298'>298</a></p>
-<p id='n299' class='pln'><a href='#n299'>299</a></p>
-<p id='n300' class='stm run hide_run'><a href='#n300'>300</a></p>
-<p id='n301' class='stm run hide_run'><a href='#n301'>301</a></p>
-<p id='n302' class='pln'><a href='#n302'>302</a></p>
-<p id='n303' class='pln'><a href='#n303'>303</a></p>
-<p id='n304' class='stm run hide_run'><a href='#n304'>304</a></p>
-<p id='n305' class='pln'><a href='#n305'>305</a></p>
-<p id='n306' class='stm run hide_run'><a href='#n306'>306</a></p>
-<p id='n307' class='pln'><a href='#n307'>307</a></p>
-<p id='n308' class='stm run hide_run'><a href='#n308'>308</a></p>
-<p id='n309' class='pln'><a href='#n309'>309</a></p>
-<p id='n310' class='pln'><a href='#n310'>310</a></p>
-<p id='n311' class='pln'><a href='#n311'>311</a></p>
-<p id='n312' class='stm run hide_run'><a href='#n312'>312</a></p>
-<p id='n313' class='pln'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='pln'><a href='#n315'>315</a></p>
-<p id='n316' class='stm run hide_run'><a href='#n316'>316</a></p>
-<p id='n317' class='pln'><a href='#n317'>317</a></p>
-<p id='n318' class='pln'><a href='#n318'>318</a></p>
-<p id='n319' class='stm run hide_run'><a href='#n319'>319</a></p>
-<p id='n320' class='stm run hide_run'><a href='#n320'>320</a></p>
-<p id='n321' class='stm run hide_run'><a href='#n321'>321</a></p>
-<p id='n322' class='pln'><a href='#n322'>322</a></p>
-<p id='n323' class='stm run hide_run'><a href='#n323'>323</a></p>
-<p id='n324' class='pln'><a href='#n324'>324</a></p>
-<p id='n325' class='stm run hide_run'><a href='#n325'>325</a></p>
-<p id='n326' class='stm run hide_run'><a href='#n326'>326</a></p>
-<p id='n327' class='stm run hide_run'><a href='#n327'>327</a></p>
-<p id='n328' class='stm run hide_run'><a href='#n328'>328</a></p>
-<p id='n329' class='pln'><a href='#n329'>329</a></p>
-<p id='n330' class='stm run hide_run'><a href='#n330'>330</a></p>
-<p id='n331' class='pln'><a href='#n331'>331</a></p>
-<p id='n332' class='stm run hide_run'><a href='#n332'>332</a></p>
-<p id='n333' class='pln'><a href='#n333'>333</a></p>
-<p id='n334' class='stm run hide_run'><a href='#n334'>334</a></p>
-<p id='n335' class='stm run hide_run'><a href='#n335'>335</a></p>
-<p id='n336' class='stm run hide_run'><a href='#n336'>336</a></p>
-<p id='n337' class='stm run hide_run'><a href='#n337'>337</a></p>
-<p id='n338' class='stm run hide_run'><a href='#n338'>338</a></p>
-<p id='n339' class='stm run hide_run'><a href='#n339'>339</a></p>
-<p id='n340' class='pln'><a href='#n340'>340</a></p>
-<p id='n341' class='stm run hide_run'><a href='#n341'>341</a></p>
-<p id='n342' class='stm run hide_run'><a href='#n342'>342</a></p>
-<p id='n343' class='stm run hide_run'><a href='#n343'>343</a></p>
-<p id='n344' class='stm run hide_run'><a href='#n344'>344</a></p>
-<p id='n345' class='pln'><a href='#n345'>345</a></p>
-<p id='n346' class='stm run hide_run'><a href='#n346'>346</a></p>
-<p id='n347' class='stm run hide_run'><a href='#n347'>347</a></p>
-<p id='n348' class='stm run hide_run'><a href='#n348'>348</a></p>
-<p id='n349' class='pln'><a href='#n349'>349</a></p>
-<p id='n350' class='stm run hide_run'><a href='#n350'>350</a></p>
-<p id='n351' class='stm run hide_run'><a href='#n351'>351</a></p>
-<p id='n352' class='pln'><a href='#n352'>352</a></p>
-<p id='n353' class='stm run hide_run'><a href='#n353'>353</a></p>
-<p id='n354' class='pln'><a href='#n354'>354</a></p>
-<p id='n355' class='pln'><a href='#n355'>355</a></p>
-<p id='n356' class='pln'><a href='#n356'>356</a></p>
-<p id='n357' class='pln'><a href='#n357'>357</a></p>
-<p id='n358' class='pln'><a href='#n358'>358</a></p>
-<p id='n359' class='stm run hide_run'><a href='#n359'>359</a></p>
-<p id='n360' class='stm run hide_run'><a href='#n360'>360</a></p>
-<p id='n361' class='stm run hide_run'><a href='#n361'>361</a></p>
-<p id='n362' class='pln'><a href='#n362'>362</a></p>
-<p id='n363' class='stm run hide_run'><a href='#n363'>363</a></p>
-<p id='n364' class='pln'><a href='#n364'>364</a></p>
-<p id='n365' class='stm run hide_run'><a href='#n365'>365</a></p>
-<p id='n366' class='pln'><a href='#n366'>366</a></p>
-<p id='n367' class='stm run hide_run'><a href='#n367'>367</a></p>
-<p id='n368' class='stm run hide_run'><a href='#n368'>368</a></p>
-<p id='n369' class='pln'><a href='#n369'>369</a></p>
-<p id='n370' class='stm run hide_run'><a href='#n370'>370</a></p>
-<p id='n371' class='pln'><a href='#n371'>371</a></p>
-<p id='n372' class='pln'><a href='#n372'>372</a></p>
-<p id='n373' class='pln'><a href='#n373'>373</a></p>
-<p id='n374' class='pln'><a href='#n374'>374</a></p>
-<p id='n375' class='pln'><a href='#n375'>375</a></p>
-<p id='n376' class='pln'><a href='#n376'>376</a></p>
-<p id='n377' class='pln'><a href='#n377'>377</a></p>
-<p id='n378' class='pln'><a href='#n378'>378</a></p>
-<p id='n379' class='pln'><a href='#n379'>379</a></p>
-<p id='n380' class='pln'><a href='#n380'>380</a></p>
-<p id='n381' class='stm run hide_run'><a href='#n381'>381</a></p>
-<p id='n382' class='pln'><a href='#n382'>382</a></p>
-<p id='n383' class='stm run hide_run'><a href='#n383'>383</a></p>
-<p id='n384' class='pln'><a href='#n384'>384</a></p>
-<p id='n385' class='pln'><a href='#n385'>385</a></p>
-<p id='n386' class='pln'><a href='#n386'>386</a></p>
-<p id='n387' class='pln'><a href='#n387'>387</a></p>
-<p id='n388' class='pln'><a href='#n388'>388</a></p>
-<p id='n389' class='pln'><a href='#n389'>389</a></p>
-<p id='n390' class='pln'><a href='#n390'>390</a></p>
-<p id='n391' class='pln'><a href='#n391'>391</a></p>
-<p id='n392' class='pln'><a href='#n392'>392</a></p>
-<p id='n393' class='pln'><a href='#n393'>393</a></p>
-<p id='n394' class='pln'><a href='#n394'>394</a></p>
-<p id='n395' class='pln'><a href='#n395'>395</a></p>
-<p id='n396' class='pln'><a href='#n396'>396</a></p>
-<p id='n397' class='pln'><a href='#n397'>397</a></p>
-<p id='n398' class='pln'><a href='#n398'>398</a></p>
-<p id='n399' class='pln'><a href='#n399'>399</a></p>
-<p id='n400' class='pln'><a href='#n400'>400</a></p>
-<p id='n401' class='pln'><a href='#n401'>401</a></p>
-<p id='n402' class='pln'><a href='#n402'>402</a></p>
-<p id='n403' class='pln'><a href='#n403'>403</a></p>
-<p id='n404' class='pln'><a href='#n404'>404</a></p>
-<p id='n405' class='pln'><a href='#n405'>405</a></p>
-<p id='n406' class='pln'><a href='#n406'>406</a></p>
-<p id='n407' class='pln'><a href='#n407'>407</a></p>
-<p id='n408' class='pln'><a href='#n408'>408</a></p>
-<p id='n409' class='pln'><a href='#n409'>409</a></p>
-<p id='n410' class='pln'><a href='#n410'>410</a></p>
-<p id='n411' class='pln'><a href='#n411'>411</a></p>
-<p id='n412' class='pln'><a href='#n412'>412</a></p>
-<p id='n413' class='pln'><a href='#n413'>413</a></p>
-<p id='n414' class='pln'><a href='#n414'>414</a></p>
-<p id='n415' class='pln'><a href='#n415'>415</a></p>
-<p id='n416' class='pln'><a href='#n416'>416</a></p>
-<p id='n417' class='pln'><a href='#n417'>417</a></p>
-<p id='n418' class='pln'><a href='#n418'>418</a></p>
-<p id='n419' class='pln'><a href='#n419'>419</a></p>
-<p id='n420' class='pln'><a href='#n420'>420</a></p>
-<p id='n421' class='pln'><a href='#n421'>421</a></p>
-<p id='n422' class='pln'><a href='#n422'>422</a></p>
-<p id='n423' class='pln'><a href='#n423'>423</a></p>
-<p id='n424' class='pln'><a href='#n424'>424</a></p>
-<p id='n425' class='pln'><a href='#n425'>425</a></p>
-<p id='n426' class='pln'><a href='#n426'>426</a></p>
-<p id='n427' class='pln'><a href='#n427'>427</a></p>
-<p id='n428' class='pln'><a href='#n428'>428</a></p>
-<p id='n429' class='pln'><a href='#n429'>429</a></p>
-<p id='n430' class='pln'><a href='#n430'>430</a></p>
-<p id='n431' class='pln'><a href='#n431'>431</a></p>
-<p id='n432' class='pln'><a href='#n432'>432</a></p>
-<p id='n433' class='pln'><a href='#n433'>433</a></p>
-<p id='n434' class='pln'><a href='#n434'>434</a></p>
-<p id='n435' class='pln'><a href='#n435'>435</a></p>
-<p id='n436' class='pln'><a href='#n436'>436</a></p>
-<p id='n437' class='pln'><a href='#n437'>437</a></p>
-<p id='n438' class='pln'><a href='#n438'>438</a></p>
-<p id='n439' class='pln'><a href='#n439'>439</a></p>
-<p id='n440' class='pln'><a href='#n440'>440</a></p>
-<p id='n441' class='pln'><a href='#n441'>441</a></p>
-<p id='n442' class='pln'><a href='#n442'>442</a></p>
-<p id='n443' class='pln'><a href='#n443'>443</a></p>
-<p id='n444' class='pln'><a href='#n444'>444</a></p>
-<p id='n445' class='pln'><a href='#n445'>445</a></p>
-<p id='n446' class='pln'><a href='#n446'>446</a></p>
-<p id='n447' class='pln'><a href='#n447'>447</a></p>
-<p id='n448' class='pln'><a href='#n448'>448</a></p>
-<p id='n449' class='pln'><a href='#n449'>449</a></p>
-<p id='n450' class='pln'><a href='#n450'>450</a></p>
-<p id='n451' class='pln'><a href='#n451'>451</a></p>
-<p id='n452' class='pln'><a href='#n452'>452</a></p>
-<p id='n453' class='pln'><a href='#n453'>453</a></p>
-<p id='n454' class='pln'><a href='#n454'>454</a></p>
-<p id='n455' class='pln'><a href='#n455'>455</a></p>
-<p id='n456' class='pln'><a href='#n456'>456</a></p>
-<p id='n457' class='pln'><a href='#n457'>457</a></p>
-<p id='n458' class='pln'><a href='#n458'>458</a></p>
-<p id='n459' class='pln'><a href='#n459'>459</a></p>
-<p id='n460' class='pln'><a href='#n460'>460</a></p>
-<p id='n461' class='pln'><a href='#n461'>461</a></p>
-<p id='n462' class='pln'><a href='#n462'>462</a></p>
-<p id='n463' class='pln'><a href='#n463'>463</a></p>
-<p id='n464' class='pln'><a href='#n464'>464</a></p>
-<p id='n465' class='pln'><a href='#n465'>465</a></p>
-<p id='n466' class='pln'><a href='#n466'>466</a></p>
-<p id='n467' class='pln'><a href='#n467'>467</a></p>
-<p id='n468' class='pln'><a href='#n468'>468</a></p>
-<p id='n469' class='pln'><a href='#n469'>469</a></p>
-<p id='n470' class='pln'><a href='#n470'>470</a></p>
-<p id='n471' class='pln'><a href='#n471'>471</a></p>
-<p id='n472' class='pln'><a href='#n472'>472</a></p>
-<p id='n473' class='stm run hide_run'><a href='#n473'>473</a></p>
-<p id='n474' class='stm run hide_run'><a href='#n474'>474</a></p>
-<p id='n475' class='stm run hide_run'><a href='#n475'>475</a></p>
-<p id='n476' class='stm run hide_run'><a href='#n476'>476</a></p>
-<p id='n477' class='stm run hide_run'><a href='#n477'>477</a></p>
-<p id='n478' class='pln'><a href='#n478'>478</a></p>
-<p id='n479' class='pln'><a href='#n479'>479</a></p>
-<p id='n480' class='stm run hide_run'><a href='#n480'>480</a></p>
-<p id='n481' class='stm run hide_run'><a href='#n481'>481</a></p>
-<p id='n482' class='pln'><a href='#n482'>482</a></p>
-<p id='n483' class='stm run hide_run'><a href='#n483'>483</a></p>
-<p id='n484' class='stm run hide_run'><a href='#n484'>484</a></p>
-<p id='n485' class='pln'><a href='#n485'>485</a></p>
-<p id='n486' class='stm run hide_run'><a href='#n486'>486</a></p>
-<p id='n487' class='stm run hide_run'><a href='#n487'>487</a></p>
-<p id='n488' class='pln'><a href='#n488'>488</a></p>
-<p id='n489' class='stm run hide_run'><a href='#n489'>489</a></p>
-<p id='n490' class='stm run hide_run'><a href='#n490'>490</a></p>
-<p id='n491' class='stm run hide_run'><a href='#n491'>491</a></p>
-<p id='n492' class='stm run hide_run'><a href='#n492'>492</a></p>
-<p id='n493' class='stm run hide_run'><a href='#n493'>493</a></p>
-<p id='n494' class='pln'><a href='#n494'>494</a></p>
-<p id='n495' class='pln'><a href='#n495'>495</a></p>
-<p id='n496' class='pln'><a href='#n496'>496</a></p>
-<p id='n497' class='pln'><a href='#n497'>497</a></p>
-<p id='n498' class='stm run hide_run'><a href='#n498'>498</a></p>
-<p id='n499' class='stm run hide_run'><a href='#n499'>499</a></p>
-<p id='n500' class='stm run hide_run'><a href='#n500'>500</a></p>
-<p id='n501' class='stm run hide_run'><a href='#n501'>501</a></p>
-<p id='n502' class='stm run hide_run'><a href='#n502'>502</a></p>
-<p id='n503' class='stm run hide_run'><a href='#n503'>503</a></p>
-<p id='n504' class='pln'><a href='#n504'>504</a></p>
-<p id='n505' class='stm run hide_run'><a href='#n505'>505</a></p>
-<p id='n506' class='pln'><a href='#n506'>506</a></p>
-<p id='n507' class='pln'><a href='#n507'>507</a></p>
-<p id='n508' class='stm run hide_run'><a href='#n508'>508</a></p>
-<p id='n509' class='stm run hide_run'><a href='#n509'>509</a></p>
-<p id='n510' class='stm run hide_run'><a href='#n510'>510</a></p>
-<p id='n511' class='stm run hide_run'><a href='#n511'>511</a></p>
-<p id='n512' class='pln'><a href='#n512'>512</a></p>
-<p id='n513' class='pln'><a href='#n513'>513</a></p>
-<p id='n514' class='pln'><a href='#n514'>514</a></p>
-<p id='n515' class='pln'><a href='#n515'>515</a></p>
-<p id='n516' class='pln'><a href='#n516'>516</a></p>
-<p id='n517' class='pln'><a href='#n517'>517</a></p>
-<p id='n518' class='pln'><a href='#n518'>518</a></p>
-<p id='n519' class='stm run hide_run'><a href='#n519'>519</a></p>
-<p id='n520' class='pln'><a href='#n520'>520</a></p>
-<p id='n521' class='stm run hide_run'><a href='#n521'>521</a></p>
-<p id='n522' class='pln'><a href='#n522'>522</a></p>
-<p id='n523' class='pln'><a href='#n523'>523</a></p>
-<p id='n524' class='pln'><a href='#n524'>524</a></p>
-<p id='n525' class='pln'><a href='#n525'>525</a></p>
-<p id='n526' class='pln'><a href='#n526'>526</a></p>
-<p id='n527' class='pln'><a href='#n527'>527</a></p>
-<p id='n528' class='pln'><a href='#n528'>528</a></p>
-<p id='n529' class='pln'><a href='#n529'>529</a></p>
-<p id='n530' class='pln'><a href='#n530'>530</a></p>
-<p id='n531' class='pln'><a href='#n531'>531</a></p>
-<p id='n532' class='pln'><a href='#n532'>532</a></p>
-<p id='n533' class='pln'><a href='#n533'>533</a></p>
-<p id='n534' class='pln'><a href='#n534'>534</a></p>
-<p id='n535' class='pln'><a href='#n535'>535</a></p>
-<p id='n536' class='pln'><a href='#n536'>536</a></p>
-<p id='n537' class='pln'><a href='#n537'>537</a></p>
-<p id='n538' class='pln'><a href='#n538'>538</a></p>
-<p id='n539' class='pln'><a href='#n539'>539</a></p>
-<p id='n540' class='pln'><a href='#n540'>540</a></p>
-<p id='n541' class='pln'><a href='#n541'>541</a></p>
-<p id='n542' class='pln'><a href='#n542'>542</a></p>
-<p id='n543' class='pln'><a href='#n543'>543</a></p>
-<p id='n544' class='pln'><a href='#n544'>544</a></p>
-<p id='n545' class='pln'><a href='#n545'>545</a></p>
-<p id='n546' class='pln'><a href='#n546'>546</a></p>
-<p id='n547' class='pln'><a href='#n547'>547</a></p>
-<p id='n548' class='pln'><a href='#n548'>548</a></p>
-<p id='n549' class='pln'><a href='#n549'>549</a></p>
-<p id='n550' class='pln'><a href='#n550'>550</a></p>
-<p id='n551' class='pln'><a href='#n551'>551</a></p>
-<p id='n552' class='pln'><a href='#n552'>552</a></p>
-<p id='n553' class='pln'><a href='#n553'>553</a></p>
-<p id='n554' class='pln'><a href='#n554'>554</a></p>
-<p id='n555' class='pln'><a href='#n555'>555</a></p>
-<p id='n556' class='pln'><a href='#n556'>556</a></p>
-<p id='n557' class='pln'><a href='#n557'>557</a></p>
-<p id='n558' class='pln'><a href='#n558'>558</a></p>
-<p id='n559' class='pln'><a href='#n559'>559</a></p>
-<p id='n560' class='pln'><a href='#n560'>560</a></p>
-<p id='n561' class='pln'><a href='#n561'>561</a></p>
-<p id='n562' class='pln'><a href='#n562'>562</a></p>
-<p id='n563' class='pln'><a href='#n563'>563</a></p>
-<p id='n564' class='pln'><a href='#n564'>564</a></p>
-<p id='n565' class='pln'><a href='#n565'>565</a></p>
-<p id='n566' class='pln'><a href='#n566'>566</a></p>
-<p id='n567' class='pln'><a href='#n567'>567</a></p>
-<p id='n568' class='pln'><a href='#n568'>568</a></p>
-<p id='n569' class='pln'><a href='#n569'>569</a></p>
-<p id='n570' class='pln'><a href='#n570'>570</a></p>
-<p id='n571' class='pln'><a href='#n571'>571</a></p>
-<p id='n572' class='pln'><a href='#n572'>572</a></p>
-<p id='n573' class='pln'><a href='#n573'>573</a></p>
-<p id='n574' class='pln'><a href='#n574'>574</a></p>
-<p id='n575' class='stm run hide_run'><a href='#n575'>575</a></p>
-<p id='n576' class='stm run hide_run'><a href='#n576'>576</a></p>
-<p id='n577' class='stm run hide_run'><a href='#n577'>577</a></p>
-<p id='n578' class='pln'><a href='#n578'>578</a></p>
-<p id='n579' class='pln'><a href='#n579'>579</a></p>
-<p id='n580' class='pln'><a href='#n580'>580</a></p>
-<p id='n581' class='stm run hide_run'><a href='#n581'>581</a></p>
-<p id='n582' class='stm run hide_run'><a href='#n582'>582</a></p>
-<p id='n583' class='stm run hide_run'><a href='#n583'>583</a></p>
-<p id='n584' class='pln'><a href='#n584'>584</a></p>
-<p id='n585' class='stm run hide_run'><a href='#n585'>585</a></p>
-<p id='n586' class='stm run hide_run'><a href='#n586'>586</a></p>
-<p id='n587' class='pln'><a href='#n587'>587</a></p>
-<p id='n588' class='stm run hide_run'><a href='#n588'>588</a></p>
-<p id='n589' class='pln'><a href='#n589'>589</a></p>
-<p id='n590' class='pln'><a href='#n590'>590</a></p>
-<p id='n591' class='pln'><a href='#n591'>591</a></p>
-<p id='n592' class='pln'><a href='#n592'>592</a></p>
-<p id='n593' class='pln'><a href='#n593'>593</a></p>
-<p id='n594' class='stm run hide_run'><a href='#n594'>594</a></p>
-<p id='n595' class='stm run hide_run'><a href='#n595'>595</a></p>
-<p id='n596' class='stm run hide_run'><a href='#n596'>596</a></p>
-<p id='n597' class='stm run hide_run'><a href='#n597'>597</a></p>
-<p id='n598' class='pln'><a href='#n598'>598</a></p>
-<p id='n599' class='pln'><a href='#n599'>599</a></p>
-<p id='n600' class='pln'><a href='#n600'>600</a></p>
-<p id='n601' class='pln'><a href='#n601'>601</a></p>
-<p id='n602' class='pln'><a href='#n602'>602</a></p>
-<p id='n603' class='stm run hide_run'><a href='#n603'>603</a></p>
-<p id='n604' class='stm run hide_run'><a href='#n604'>604</a></p>
-<p id='n605' class='stm run hide_run'><a href='#n605'>605</a></p>
-<p id='n606' class='stm run hide_run'><a href='#n606'>606</a></p>
-<p id='n607' class='stm run hide_run'><a href='#n607'>607</a></p>
-<p id='n608' class='pln'><a href='#n608'>608</a></p>
-<p id='n609' class='stm run hide_run'><a href='#n609'>609</a></p>
-<p id='n610' class='pln'><a href='#n610'>610</a></p>
-<p id='n611' class='pln'><a href='#n611'>611</a></p>
-<p id='n612' class='pln'><a href='#n612'>612</a></p>
-<p id='n613' class='pln'><a href='#n613'>613</a></p>
-<p id='n614' class='pln'><a href='#n614'>614</a></p>
-<p id='n615' class='pln'><a href='#n615'>615</a></p>
-<p id='n616' class='pln'><a href='#n616'>616</a></p>
-<p id='n617' class='pln'><a href='#n617'>617</a></p>
-<p id='n618' class='pln'><a href='#n618'>618</a></p>
-<p id='n619' class='pln'><a href='#n619'>619</a></p>
-<p id='n620' class='pln'><a href='#n620'>620</a></p>
-<p id='n621' class='pln'><a href='#n621'>621</a></p>
-<p id='n622' class='pln'><a href='#n622'>622</a></p>
-<p id='n623' class='stm run hide_run'><a href='#n623'>623</a></p>
-<p id='n624' class='pln'><a href='#n624'>624</a></p>
-<p id='n625' class='stm run hide_run'><a href='#n625'>625</a></p>
-<p id='n626' class='stm run hide_run'><a href='#n626'>626</a></p>
-<p id='n627' class='pln'><a href='#n627'>627</a></p>
-<p id='n628' class='stm run hide_run'><a href='#n628'>628</a></p>
-<p id='n629' class='stm run hide_run'><a href='#n629'>629</a></p>
-<p id='n630' class='stm run hide_run'><a href='#n630'>630</a></p>
-<p id='n631' class='stm run hide_run'><a href='#n631'>631</a></p>
-<p id='n632' class='stm run hide_run'><a href='#n632'>632</a></p>
-<p id='n633' class='stm run hide_run'><a href='#n633'>633</a></p>
-<p id='n634' class='pln'><a href='#n634'>634</a></p>
-<p id='n635' class='pln'><a href='#n635'>635</a></p>
-<p id='n636' class='pln'><a href='#n636'>636</a></p>
-<p id='n637' class='stm run hide_run'><a href='#n637'>637</a></p>
-<p id='n638' class='pln'><a href='#n638'>638</a></p>
-<p id='n639' class='stm run hide_run'><a href='#n639'>639</a></p>
-<p id='n640' class='pln'><a href='#n640'>640</a></p>
-<p id='n641' class='pln'><a href='#n641'>641</a></p>
-<p id='n642' class='pln'><a href='#n642'>642</a></p>
-<p id='n643' class='pln'><a href='#n643'>643</a></p>
-<p id='n644' class='pln'><a href='#n644'>644</a></p>
-<p id='n645' class='pln'><a href='#n645'>645</a></p>
-<p id='n646' class='pln'><a href='#n646'>646</a></p>
-<p id='n647' class='stm run hide_run'><a href='#n647'>647</a></p>
-<p id='n648' class='stm run hide_run'><a href='#n648'>648</a></p>
-<p id='n649' class='pln'><a href='#n649'>649</a></p>
-<p id='n650' class='pln'><a href='#n650'>650</a></p>
-<p id='n651' class='pln'><a href='#n651'>651</a></p>
-<p id='n652' class='pln'><a href='#n652'>652</a></p>
-<p id='n653' class='pln'><a href='#n653'>653</a></p>
-<p id='n654' class='pln'><a href='#n654'>654</a></p>
-<p id='n655' class='stm run hide_run'><a href='#n655'>655</a></p>
-<p id='n656' class='stm run hide_run'><a href='#n656'>656</a></p>
-<p id='n657' class='pln'><a href='#n657'>657</a></p>
-<p id='n658' class='pln'><a href='#n658'>658</a></p>
-<p id='n659' class='stm run hide_run'><a href='#n659'>659</a></p>
-<p id='n660' class='pln'><a href='#n660'>660</a></p>
-<p id='n661' class='stm run hide_run'><a href='#n661'>661</a></p>
-<p id='n662' class='stm run hide_run'><a href='#n662'>662</a></p>
-<p id='n663' class='pln'><a href='#n663'>663</a></p>
-<p id='n664' class='stm run hide_run'><a href='#n664'>664</a></p>
-<p id='n665' class='stm run hide_run'><a href='#n665'>665</a></p>
-<p id='n666' class='stm run hide_run'><a href='#n666'>666</a></p>
-<p id='n667' class='stm run hide_run'><a href='#n667'>667</a></p>
-<p id='n668' class='pln'><a href='#n668'>668</a></p>
-<p id='n669' class='stm run hide_run'><a href='#n669'>669</a></p>
-<p id='n670' class='pln'><a href='#n670'>670</a></p>
-<p id='n671' class='pln'><a href='#n671'>671</a></p>
-<p id='n672' class='pln'><a href='#n672'>672</a></p>
-<p id='n673' class='pln'><a href='#n673'>673</a></p>
-<p id='n674' class='pln'><a href='#n674'>674</a></p>
-<p id='n675' class='stm run hide_run'><a href='#n675'>675</a></p>
-<p id='n676' class='pln'><a href='#n676'>676</a></p>
-<p id='n677' class='pln'><a href='#n677'>677</a></p>
-<p id='n678' class='stm run hide_run'><a href='#n678'>678</a></p>
-<p id='n679' class='pln'><a href='#n679'>679</a></p>
-<p id='n680' class='pln'><a href='#n680'>680</a></p>
-<p id='n681' class='pln'><a href='#n681'>681</a></p>
-<p id='n682' class='stm run hide_run'><a href='#n682'>682</a></p>
-<p id='n683' class='pln'><a href='#n683'>683</a></p>
-<p id='n684' class='stm run hide_run'><a href='#n684'>684</a></p>
-<p id='n685' class='pln'><a href='#n685'>685</a></p>
-<p id='n686' class='stm run hide_run'><a href='#n686'>686</a></p>
-<p id='n687' class='pln'><a href='#n687'>687</a></p>
-<p id='n688' class='stm run hide_run'><a href='#n688'>688</a></p>
-<p id='n689' class='pln'><a href='#n689'>689</a></p>
-<p id='n690' class='stm run hide_run'><a href='#n690'>690</a></p>
-<p id='n691' class='pln'><a href='#n691'>691</a></p>
-<p id='n692' class='stm run hide_run'><a href='#n692'>692</a></p>
-<p id='n693' class='pln'><a href='#n693'>693</a></p>
-<p id='n694' class='stm run hide_run'><a href='#n694'>694</a></p>
-<p id='n695' class='stm run hide_run'><a href='#n695'>695</a></p>
-<p id='n696' class='pln'><a href='#n696'>696</a></p>
-<p id='n697' class='stm run hide_run'><a href='#n697'>697</a></p>
-<p id='n698' class='pln'><a href='#n698'>698</a></p>
-<p id='n699' class='stm run hide_run'><a href='#n699'>699</a></p>
-<p id='n700' class='stm run hide_run'><a href='#n700'>700</a></p>
-<p id='n701' class='pln'><a href='#n701'>701</a></p>
-<p id='n702' class='stm run hide_run'><a href='#n702'>702</a></p>
-<p id='n703' class='pln'><a href='#n703'>703</a></p>
-<p id='n704' class='stm run hide_run'><a href='#n704'>704</a></p>
-<p id='n705' class='stm run hide_run'><a href='#n705'>705</a></p>
-<p id='n706' class='pln'><a href='#n706'>706</a></p>
-<p id='n707' class='stm run hide_run'><a href='#n707'>707</a></p>
-<p id='n708' class='pln'><a href='#n708'>708</a></p>
-<p id='n709' class='pln'><a href='#n709'>709</a></p>
-<p id='n710' class='pln'><a href='#n710'>710</a></p>
-<p id='n711' class='pln'><a href='#n711'>711</a></p>
-<p id='n712' class='pln'><a href='#n712'>712</a></p>
-<p id='n713' class='pln'><a href='#n713'>713</a></p>
-<p id='n714' class='pln'><a href='#n714'>714</a></p>
-<p id='n715' class='pln'><a href='#n715'>715</a></p>
-<p id='n716' class='pln'><a href='#n716'>716</a></p>
-<p id='n717' class='pln'><a href='#n717'>717</a></p>
-<p id='n718' class='stm run hide_run'><a href='#n718'>718</a></p>
-<p id='n719' class='stm run hide_run'><a href='#n719'>719</a></p>
-<p id='n720' class='stm run hide_run'><a href='#n720'>720</a></p>
-<p id='n721' class='pln'><a href='#n721'>721</a></p>
-<p id='n722' class='stm run hide_run'><a href='#n722'>722</a></p>
-<p id='n723' class='pln'><a href='#n723'>723</a></p>
-<p id='n724' class='pln'><a href='#n724'>724</a></p>
-<p id='n725' class='pln'><a href='#n725'>725</a></p>
-<p id='n726' class='pln'><a href='#n726'>726</a></p>
-<p id='n727' class='pln'><a href='#n727'>727</a></p>
-<p id='n728' class='pln'><a href='#n728'>728</a></p>
-<p id='n729' class='pln'><a href='#n729'>729</a></p>
-<p id='n730' class='pln'><a href='#n730'>730</a></p>
-<p id='n731' class='pln'><a href='#n731'>731</a></p>
-<p id='n732' class='pln'><a href='#n732'>732</a></p>
-<p id='n733' class='pln'><a href='#n733'>733</a></p>
-<p id='n734' class='pln'><a href='#n734'>734</a></p>
-<p id='n735' class='stm run hide_run'><a href='#n735'>735</a></p>
-<p id='n736' class='pln'><a href='#n736'>736</a></p>
-<p id='n737' class='stm run hide_run'><a href='#n737'>737</a></p>
-<p id='n738' class='pln'><a href='#n738'>738</a></p>
-<p id='n739' class='pln'><a href='#n739'>739</a></p>
-<p id='n740' class='pln'><a href='#n740'>740</a></p>
-<p id='n741' class='pln'><a href='#n741'>741</a></p>
-<p id='n742' class='pln'><a href='#n742'>742</a></p>
-<p id='n743' class='pln'><a href='#n743'>743</a></p>
-<p id='n744' class='pln'><a href='#n744'>744</a></p>
-<p id='n745' class='pln'><a href='#n745'>745</a></p>
-<p id='n746' class='pln'><a href='#n746'>746</a></p>
-<p id='n747' class='pln'><a href='#n747'>747</a></p>
-<p id='n748' class='pln'><a href='#n748'>748</a></p>
-<p id='n749' class='pln'><a href='#n749'>749</a></p>
-<p id='n750' class='pln'><a href='#n750'>750</a></p>
-<p id='n751' class='pln'><a href='#n751'>751</a></p>
-<p id='n752' class='pln'><a href='#n752'>752</a></p>
-<p id='n753' class='stm run hide_run'><a href='#n753'>753</a></p>
-<p id='n754' class='pln'><a href='#n754'>754</a></p>
-<p id='n755' class='stm run hide_run'><a href='#n755'>755</a></p>
-<p id='n756' class='pln'><a href='#n756'>756</a></p>
-<p id='n757' class='pln'><a href='#n757'>757</a></p>
-<p id='n758' class='pln'><a href='#n758'>758</a></p>
-<p id='n759' class='pln'><a href='#n759'>759</a></p>
-<p id='n760' class='pln'><a href='#n760'>760</a></p>
-<p id='n761' class='pln'><a href='#n761'>761</a></p>
-<p id='n762' class='pln'><a href='#n762'>762</a></p>
-<p id='n763' class='pln'><a href='#n763'>763</a></p>
-<p id='n764' class='pln'><a href='#n764'>764</a></p>
-<p id='n765' class='pln'><a href='#n765'>765</a></p>
-<p id='n766' class='pln'><a href='#n766'>766</a></p>
-<p id='n767' class='pln'><a href='#n767'>767</a></p>
-<p id='n768' class='pln'><a href='#n768'>768</a></p>
-<p id='n769' class='pln'><a href='#n769'>769</a></p>
-<p id='n770' class='pln'><a href='#n770'>770</a></p>
-<p id='n771' class='pln'><a href='#n771'>771</a></p>
-<p id='n772' class='stm run hide_run'><a href='#n772'>772</a></p>
-<p id='n773' class='pln'><a href='#n773'>773</a></p>
-<p id='n774' class='stm run hide_run'><a href='#n774'>774</a></p>
-<p id='n775' class='pln'><a href='#n775'>775</a></p>
-<p id='n776' class='pln'><a href='#n776'>776</a></p>
-<p id='n777' class='pln'><a href='#n777'>777</a></p>
-<p id='n778' class='pln'><a href='#n778'>778</a></p>
-<p id='n779' class='pln'><a href='#n779'>779</a></p>
-<p id='n780' class='pln'><a href='#n780'>780</a></p>
-<p id='n781' class='pln'><a href='#n781'>781</a></p>
-<p id='n782' class='pln'><a href='#n782'>782</a></p>
-<p id='n783' class='pln'><a href='#n783'>783</a></p>
-<p id='n784' class='pln'><a href='#n784'>784</a></p>
-<p id='n785' class='pln'><a href='#n785'>785</a></p>
-<p id='n786' class='pln'><a href='#n786'>786</a></p>
-<p id='n787' class='pln'><a href='#n787'>787</a></p>
-<p id='n788' class='pln'><a href='#n788'>788</a></p>
-<p id='n789' class='pln'><a href='#n789'>789</a></p>
-<p id='n790' class='stm run hide_run'><a href='#n790'>790</a></p>
-<p id='n791' class='pln'><a href='#n791'>791</a></p>
-<p id='n792' class='stm run hide_run'><a href='#n792'>792</a></p>
-<p id='n793' class='stm run hide_run'><a href='#n793'>793</a></p>
-<p id='n794' class='pln'><a href='#n794'>794</a></p>
-<p id='n795' class='stm run hide_run'><a href='#n795'>795</a></p>
-<p id='n796' class='pln'><a href='#n796'>796</a></p>
-<p id='n797' class='stm run hide_run'><a href='#n797'>797</a></p>
-<p id='n798' class='stm run hide_run'><a href='#n798'>798</a></p>
-<p id='n799' class='pln'><a href='#n799'>799</a></p>
-<p id='n800' class='stm run hide_run'><a href='#n800'>800</a></p>
-<p id='n801' class='stm run hide_run'><a href='#n801'>801</a></p>
-<p id='n802' class='pln'><a href='#n802'>802</a></p>
-<p id='n803' class='stm run hide_run'><a href='#n803'>803</a></p>
-<p id='n804' class='pln'><a href='#n804'>804</a></p>
-<p id='n805' class='stm run hide_run'><a href='#n805'>805</a></p>
-<p id='n806' class='pln'><a href='#n806'>806</a></p>
-<p id='n807' class='stm run hide_run'><a href='#n807'>807</a></p>
-<p id='n808' class='pln'><a href='#n808'>808</a></p>
-<p id='n809' class='stm run hide_run'><a href='#n809'>809</a></p>
-<p id='n810' class='stm run hide_run'><a href='#n810'>810</a></p>
-<p id='n811' class='pln'><a href='#n811'>811</a></p>
-<p id='n812' class='pln'><a href='#n812'>812</a></p>
-<p id='n813' class='stm run hide_run'><a href='#n813'>813</a></p>
-<p id='n814' class='stm run hide_run'><a href='#n814'>814</a></p>
-<p id='n815' class='stm run hide_run'><a href='#n815'>815</a></p>
-<p id='n816' class='stm run hide_run'><a href='#n816'>816</a></p>
-<p id='n817' class='stm run hide_run'><a href='#n817'>817</a></p>
-<p id='n818' class='pln'><a href='#n818'>818</a></p>
-<p id='n819' class='stm run hide_run'><a href='#n819'>819</a></p>
-<p id='n820' class='pln'><a href='#n820'>820</a></p>
-<p id='n821' class='stm run hide_run'><a href='#n821'>821</a></p>
-<p id='n822' class='stm run hide_run'><a href='#n822'>822</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.task</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Task Implementation: Task request context, and the base task class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>states</span><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>get_current_worker_task</span><span class='op'>,</span> <span class='nam'>_task_stack</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>canvas</span> <span class='key'>import</span> <span class='nam'>subtask</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>datastructures</span> <span class='key'>import</span> <span class='nam'>ExceptionInfo</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>MaxRetriesExceededError</span><span class='op'>,</span> <span class='nam'>RetryTaskError</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>class_property</span><span class='op'>,</span> <span class='nam'>items</span><span class='op'>,</span> <span class='nam'>with_metaclass</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>result</span> <span class='key'>import</span> <span class='nam'>EagerResult</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>gen_task_name</span><span class='op'>,</span> <span class='nam'>fun_takes_kwargs</span><span class='op'>,</span> <span class='nam'>uuid</span><span class='op'>,</span> <span class='nam'>maybe_reraise</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>mattrgetter</span><span class='op'>,</span> <span class='nam'>maybe_list</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>instantiate</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>mail</span> <span class='key'>import</span> <span class='nam'>ErrorMail</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>annotations</span> <span class='key'>import</span> <span class='nam'>resolve_all</span> <span class='key'>as</span> <span class='nam'>resolve_all_annotations</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>registry</span> <span class='key'>import</span> <span class='nam'>_unpickle_task_v2</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>appstr</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='com'>#: extracts attributes related to publishing a message from an object.</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'><span class='nam'>extract_exec_options</span> <span class='op'>=</span> <span class='nam'>mattrgetter</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;queue&#39;</span><span class='op'>,</span> <span class='str'>&#39;routing_key&#39;</span><span class='op'>,</span> <span class='str'>&#39;exchange&#39;</span><span class='op'>,</span> <span class='str'>&#39;priority&#39;</span><span class='op'>,</span> <span class='str'>&#39;expires&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;serializer&#39;</span><span class='op'>,</span> <span class='str'>&#39;delivery_mode&#39;</span><span class='op'>,</span> <span class='str'>&#39;compression&#39;</span><span class='op'>,</span> <span class='str'>&#39;timeout&#39;</span><span class='op'>,</span> <span class='str'>&#39;soft_timeout&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;immediate&#39;</span><span class='op'>,</span> <span class='str'>&#39;mandatory&#39;</span><span class='op'>,</span>&nbsp; <span class='com'># imm+man is deprecated</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='com'># We take __repr__ very seriously around here ;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'><span class='nam'>R_BOUND_TASK</span> <span class='op'>=</span> <span class='str'>&#39;&lt;class {0.__name__} of {app}{flags}&gt;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'><span class='nam'>R_UNBOUND_TASK</span> <span class='op'>=</span> <span class='str'>&#39;&lt;unbound {0.__name__}{flags}&gt;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='nam'>R_SELF_TASK</span> <span class='op'>=</span> <span class='str'>&#39;&lt;@task {0.name} bound to other {0.__self__}&gt;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='nam'>R_INSTANCE</span> <span class='op'>=</span> <span class='str'>&#39;&lt;@task: {0.name} of {app}{flags}&gt;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_strflags</span><span class='op'>(</span><span class='nam'>flags</span><span class='op'>,</span> <span class='nam'>default</span><span class='op'>=</span><span class='str'>&#39;&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>flags</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39; ({0})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='str'>&#39;, &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>flags</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>default</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_reprtask</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>fmt</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>flags</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>flags</span> <span class='op'>=</span> <span class='nam'>list</span><span class='op'>(</span><span class='nam'>flags</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>flags</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>flags</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='str'>&#39;v2 compatible&#39;</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>__v2_compat__</span> <span class='key'>else</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>fmt</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>fmt</span> <span class='op'>=</span> <span class='nam'>R_BOUND_TASK</span> <span class='key'>if</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>_app</span> <span class='key'>else</span> <span class='nam'>R_UNBOUND_TASK</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>fmt</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span><span class='op'>,</span> <span class='nam'>flags</span><span class='op'>=</span><span class='nam'>_strflags</span><span class='op'>(</span><span class='nam'>flags</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>=</span><span class='nam'>appstr</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>_app</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>_app</span> <span class='key'>else</span> <span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Context</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='pln'>&nbsp; &nbsp; <span class='com'># Default context</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>logfile</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>hostname</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>id</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>args</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>kwargs</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>retries</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>eta</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>expires</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>is_eager</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>delivery_info</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>taskset</span> <span class='op'>=</span> <span class='nam'>None</span>&nbsp;&nbsp; <span class='com'># compat alias to group</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>group</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>chord</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>utc</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>called_directly</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>callbacks</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>errbacks</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>timeouts</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_children</span> <span class='op'>=</span> <span class='nam'>None</span>&nbsp;&nbsp; <span class='com'># see property</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_protected</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>update</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__dict__</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>clear</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__dict__</span><span class='op'>.</span><span class='nam'>clear</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>get</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>default</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>default</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__repr__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;&lt;Context: {0!r}&gt;&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>vars</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>children</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># children must be an empy list for every thread</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_children</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_children</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_children</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>TaskType</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Meta class for tasks.</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='pln'><span class='str'>&nbsp; &nbsp; Automatically registers the task in the task registry (except</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'><span class='str'>&nbsp; &nbsp; if the :attr:`Task.abstract`` attribute is set).</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'><span class='str'>&nbsp; &nbsp; If no :attr:`Task.name` attribute is provided, then the name is generated</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='str'>&nbsp; &nbsp; from the module and class name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__new__</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>bases</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>new</span> <span class='op'>=</span> <span class='nam'>super</span><span class='op'>(</span><span class='nam'>TaskType</span><span class='op'>,</span> <span class='nam'>cls</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__new__</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_module</span> <span class='op'>=</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;__module__&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;__main__&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - Abstract class: abstract attribute should not be inherited.</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;abstract&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span> <span class='key'>or</span> <span class='key'>not</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;autoregister&#39;</span><span class='op'>,</span> <span class='nam'>True</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>new</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>bases</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># The &#39;app&#39; attribute is now a property, with the real app located</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># in the &#39;_app&#39; attribute.&nbsp; Previously this was a regular attribute,</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># so we should support classes defining it.</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_app1</span><span class='op'>,</span> <span class='nam'>_app2</span> <span class='op'>=</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;_app&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;app&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>&#39;_app&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>_app1</span> <span class='key'>or</span> <span class='nam'>_app2</span> <span class='key'>or</span> <span class='nam'>current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - Automatically generate missing/empty name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_name</span> <span class='op'>=</span> <span class='nam'>attrs</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;name&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>task_name</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>&#39;name&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>task_name</span> <span class='op'>=</span> <span class='nam'>gen_task_name</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>task_module</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - Create and register class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Because of the way import happens (recursively)</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># we may or may not be the first time the task tries to register</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># with the framework.&nbsp; There should only be one class for each task</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># name, so we always return the registered version.</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>task_name</span> <span class='key'>not</span> <span class='key'>in</span> <span class='nam'>tasks</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasks</span><span class='op'>.</span><span class='nam'>register</span><span class='op'>(</span><span class='nam'>new</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>bases</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>instance</span> <span class='op'>=</span> <span class='nam'>tasks</span><span class='op'>[</span><span class='nam'>task_name</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>instance</span><span class='op'>.</span><span class='nam'>bind</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instance</span><span class='op'>.</span><span class='nam'>__class__</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__repr__</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_reprtask</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='stm run hide_run'><span class='op'>@</span><span class='nam'>with_metaclass</span><span class='op'>(</span><span class='nam'>TaskType</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Task</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Task base class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='pln'><span class='str'>&nbsp; &nbsp; When called tasks apply the :meth:`run` method.&nbsp; This method must</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'><span class='str'>&nbsp; &nbsp; be defined by all tasks (that is unless the :meth:`__call__` method</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'><span class='str'>&nbsp; &nbsp; is overridden).</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'><span class='str'>&nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>__trace__</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>__v2_compat__</span> <span class='op'>=</span> <span class='nam'>False</span>&nbsp; <span class='com'># set by old base in celery.task.base</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>ErrorMail</span> <span class='op'>=</span> <span class='nam'>ErrorMail</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>MaxRetriesExceededError</span> <span class='op'>=</span> <span class='nam'>MaxRetriesExceededError</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'>&nbsp; &nbsp; <span class='com'>#: Execution strategy used, or the qualified name of one.</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Strategy</span> <span class='op'>=</span> <span class='str'>&#39;celery.worker.strategy:default&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'>&nbsp; &nbsp; <span class='com'>#: This is the instance bound to if the task is a method of a class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>__self__</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='pln'>&nbsp; &nbsp; <span class='com'>#: The application instance associated with this task class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='pln'>&nbsp; &nbsp; <span class='com'>#: Name of the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>name</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'>&nbsp; &nbsp; <span class='com'>#: If :const:`True` the task is an abstract base class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>abstract</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='pln'>&nbsp; &nbsp; <span class='com'>#: If disabled the worker will not forward magic keyword arguments.</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='pln'>&nbsp; &nbsp; <span class='com'>#: Deprecated and scheduled for removal in v4.0.</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'>&nbsp; &nbsp; <span class='com'>#: Maximum number of retries before giving up.&nbsp; If set to :const:`None`,</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='pln'>&nbsp; &nbsp; <span class='com'>#: it will **never** stop retrying.</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>max_retries</span> <span class='op'>=</span> <span class='num'>3</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='pln'>&nbsp; &nbsp; <span class='com'>#: Default time in seconds before a retry of the task should be</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='pln'>&nbsp; &nbsp; <span class='com'>#: executed.&nbsp; 3 minutes by default.</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>default_retry_delay</span> <span class='op'>=</span> <span class='num'>3</span> <span class='op'>*</span> <span class='num'>60</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='pln'>&nbsp; &nbsp; <span class='com'>#: Rate limit for this task type.&nbsp; Examples: :const:`None` (no rate</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='pln'>&nbsp; &nbsp; <span class='com'>#: limit), `&#39;100/s&#39;` (hundred tasks a second), `&#39;100/m&#39;` (hundred tasks</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='pln'>&nbsp; &nbsp; <span class='com'>#: a minute),`&#39;100/h&#39;` (hundred tasks an hour)</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>rate_limit</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='pln'>&nbsp; &nbsp; <span class='com'>#: If enabled the worker will not store task state and return values</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='pln'>&nbsp; &nbsp; <span class='com'>#: for this task.&nbsp; Defaults to the :setting:`CELERY_IGNORE_RESULT`</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='pln'>&nbsp; &nbsp; <span class='com'>#: setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>ignore_result</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'>&nbsp; &nbsp; <span class='com'>#: When enabled errors will be stored even if the task is otherwise</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='pln'>&nbsp; &nbsp; <span class='com'>#: configured to ignore results.</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>store_errors_even_if_ignored</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='pln'>&nbsp; &nbsp; <span class='com'>#: If enabled an email will be sent to :setting:`ADMINS` whenever a task</span><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'>&nbsp; &nbsp; <span class='com'>#: of this type fails.</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>send_error_emails</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='pln'>&nbsp; &nbsp; <span class='com'>#: The name of a serializer that are registered with</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='pln'>&nbsp; &nbsp; <span class='com'>#: :mod:`kombu.serialization.registry`.&nbsp; Default is `&#39;pickle&#39;`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>serializer</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='pln'>&nbsp; &nbsp; <span class='com'>#: Hard time limit.</span><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='pln'>&nbsp; &nbsp; <span class='com'>#: Defaults to the :setting:`CELERYD_TASK_TIME_LIMIT` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>time_limit</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='pln'>&nbsp; &nbsp; <span class='com'>#: Soft time limit.</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'>&nbsp; &nbsp; <span class='com'>#: Defaults to the :setting:`CELERYD_TASK_SOFT_TIME_LIMIT` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>soft_time_limit</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'>&nbsp; &nbsp; <span class='com'>#: The result store backend used for this task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>backend</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='pln'>&nbsp; &nbsp; <span class='com'>#: If disabled this task won&#39;t be registered automatically.</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>autoregister</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='pln'>&nbsp; &nbsp; <span class='com'>#: If enabled the task will report its status as &#39;started&#39; when the task</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'>&nbsp; &nbsp; <span class='com'>#: is executed by a worker.&nbsp; Disabled by default as the normal behaviour</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='pln'>&nbsp; &nbsp; <span class='com'>#: is to not report that level of granularity.&nbsp; Tasks are either pending,</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='pln'>&nbsp; &nbsp; <span class='com'>#: finished, or waiting to be retried.</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='pln'>&nbsp; &nbsp; <span class='com'>#:</span><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='pln'>&nbsp; &nbsp; <span class='com'>#: Having a &#39;started&#39; status can be useful for when there are long</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='pln'>&nbsp; &nbsp; <span class='com'>#: running tasks and there is a need to report which task is currently</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='pln'>&nbsp; &nbsp; <span class='com'>#: running.</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='pln'>&nbsp; &nbsp; <span class='com'>#:</span><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='pln'>&nbsp; &nbsp; <span class='com'>#: The application default can be overridden using the</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='pln'>&nbsp; &nbsp; <span class='com'>#: :setting:`CELERY_TRACK_STARTED` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>track_started</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='pln'>&nbsp; &nbsp; <span class='com'>#: When enabled messages for this task will be acknowledged **after**</span><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='pln'>&nbsp; &nbsp; <span class='com'>#: the task has been executed, and not *just before* which is the</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='pln'>&nbsp; &nbsp; <span class='com'>#: default behavior.</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='pln'>&nbsp; &nbsp; <span class='com'>#:</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='pln'>&nbsp; &nbsp; <span class='com'>#: Please note that this means the task may be executed twice if the</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='pln'>&nbsp; &nbsp; <span class='com'>#: worker crashes mid execution (which may be acceptable for some</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'>&nbsp; &nbsp; <span class='com'>#: applications).</span><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='pln'>&nbsp; &nbsp; <span class='com'>#:</span><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='pln'>&nbsp; &nbsp; <span class='com'>#: The application default can be overridden with the</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='pln'>&nbsp; &nbsp; <span class='com'>#: :setting:`CELERY_ACKS_LATE` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>acks_late</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='pln'>&nbsp; &nbsp; <span class='com'>#: Default task expiry time.</span><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>expires</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='pln'>&nbsp; &nbsp; <span class='com'>#: Some may expect a request to exist even if the task has not been</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='pln'>&nbsp; &nbsp; <span class='com'>#: called.&nbsp; This should probably be deprecated.</span><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_default_request</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>__bound__</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>from_config</span> <span class='op'>=</span> <span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;send_error_emails&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_SEND_TASK_ERROR_EMAILS&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;serializer&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_TASK_SERIALIZER&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;rate_limit&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_DEFAULT_RATE_LIMIT&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;track_started&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_TRACK_STARTED&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;acks_late&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_ACKS_LATE&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;ignore_result&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_IGNORE_RESULT&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='str'>&#39;store_errors_even_if_ignored&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;CELERY_STORE_ERRORS_EVEN_IF_IGNORED&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>__bound__</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='pln'>&nbsp; &nbsp; <span class='com'># - Tasks are lazily bound, so that configuration is not set</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='pln'>&nbsp; &nbsp; <span class='com'># - until the task is actually used</span><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>classmethod</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>bind</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>was_bound</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__bound__</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__bound__</span><span class='op'>,</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_app</span> <span class='op'>=</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conf</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>attr_name</span><span class='op'>,</span> <span class='nam'>config_name</span> <span class='key'>in</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>from_config</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr_name</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr_name</span><span class='op'>,</span> <span class='nam'>conf</span><span class='op'>[</span><span class='nam'>config_name</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>backend</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># decorate with annotations from config.</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>was_bound</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>annotate</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>threads</span> <span class='key'>import</span> <span class='nam'>LocalStack</span><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request_stack</span> <span class='op'>=</span> <span class='nam'>LocalStack</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># PeriodicTask uses this to add itself to the PeriodicTask schedule.</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>on_bound</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t306' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t307' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t308' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>classmethod</span><span class='strut'>&nbsp;</span></p>
-<p id='t309' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_bound</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t310' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;This method can be defined to do additional actions when the</span><span class='strut'>&nbsp;</span></p>
-<p id='t311' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; task class is bound to an app.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t312' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t313' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t314' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>classmethod</span><span class='strut'>&nbsp;</span></p>
-<p id='t315' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_get_app</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t316' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__bound__</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_app</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t317' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># The app property&#39;s __set__&nbsp; method is not called</span><span class='strut'>&nbsp;</span></p>
-<p id='t318' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># if Task.app is set (on the class), so must bind on use.</span><span class='strut'>&nbsp;</span></p>
-<p id='t319' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>bind</span><span class='op'>(</span><span class='nam'>current_app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t320' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t321' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>class_property</span><span class='op'>(</span><span class='nam'>_get_app</span><span class='op'>,</span> <span class='nam'>bind</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t322' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t323' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>classmethod</span><span class='strut'>&nbsp;</span></p>
-<p id='t324' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>annotate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t325' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>d</span> <span class='key'>in</span> <span class='nam'>resolve_all_annotations</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>annotations</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t326' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>d</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t327' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>key</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;@&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t328' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>add_around</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>[</span><span class='num'>1</span><span class='op'>:</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t329' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t330' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t331' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t332' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>classmethod</span><span class='strut'>&nbsp;</span></p>
-<p id='t333' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>add_around</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>around</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t334' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>orig</span> <span class='op'>=</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t335' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>orig</span><span class='op'>,</span> <span class='str'>&#39;__wrapped__&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t336' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>orig</span> <span class='op'>=</span> <span class='nam'>orig</span><span class='op'>.</span><span class='nam'>__wrapped__</span><span class='strut'>&nbsp;</span></p>
-<p id='t337' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>meth</span> <span class='op'>=</span> <span class='nam'>around</span><span class='op'>(</span><span class='nam'>orig</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t338' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>meth</span><span class='op'>.</span><span class='nam'>__wrapped__</span> <span class='op'>=</span> <span class='nam'>orig</span><span class='strut'>&nbsp;</span></p>
-<p id='t339' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>meth</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t340' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t341' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__call__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t342' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_task_stack</span><span class='op'>.</span><span class='nam'>push</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t343' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>push_request</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t344' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t345' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># add self if this is a bound task</span><span class='strut'>&nbsp;</span></p>
-<p id='t346' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t347' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>run</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t348' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>run</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t349' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>finally</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t350' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pop_request</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t351' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_task_stack</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t352' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t353' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__reduce__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t354' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - tasks are pickled into the name of the task only, and the reciever</span><span class='strut'>&nbsp;</span></p>
-<p id='t355' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - simply grabs it from the local registry.</span><span class='strut'>&nbsp;</span></p>
-<p id='t356' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - in later versions the module of the task is also included,</span><span class='strut'>&nbsp;</span></p>
-<p id='t357' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - and the receiving side tries to import that module so that</span><span class='strut'>&nbsp;</span></p>
-<p id='t358' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># - it will work even if the task has not been registered.</span><span class='strut'>&nbsp;</span></p>
-<p id='t359' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>mod</span> <span class='op'>=</span> <span class='nam'>type</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>__module__</span><span class='strut'>&nbsp;</span></p>
-<p id='t360' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>mod</span> <span class='op'>=</span> <span class='nam'>mod</span> <span class='key'>if</span> <span class='nam'>mod</span> <span class='key'>and</span> <span class='nam'>mod</span> <span class='key'>in</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>modules</span> <span class='key'>else</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t361' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>_unpickle_task_v2</span><span class='op'>,</span> <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>mod</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t362' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t363' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>run</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t364' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;The body of the task executed by workers.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t365' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>&#39;Tasks must define the run method.&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t366' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t367' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>start_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>,</span> <span class='nam'>consumer</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t368' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>instantiate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>Strategy</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>,</span> <span class='nam'>consumer</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t369' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t370' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>delay</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t371' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Star argument version of :meth:`apply_async`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t372' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t373' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Does not support the extra options enabled by :meth:`apply_async`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t374' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t375' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param \*args: positional arguments passed on to the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t376' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param \*\*kwargs: keyword arguments passed on to the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t377' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t378' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :returns :class:`celery.result.AsyncResult`:</span><span class='strut'>&nbsp;</span></p>
-<p id='t379' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t380' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t381' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t382' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t383' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply_async</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t384' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>producer</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>connection</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>router</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t385' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>link</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>link_error</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>publisher</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t386' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>add_to_parent</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t387' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Apply tasks asynchronously by sending a message.</span><span class='strut'>&nbsp;</span></p>
-<p id='t388' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t389' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword args: The positional arguments to pass on to the</span><span class='strut'>&nbsp;</span></p>
-<p id='t390' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; task (a :class:`list` or :class:`tuple`).</span><span class='strut'>&nbsp;</span></p>
-<p id='t391' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t392' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword kwargs: The keyword arguments to pass on to the</span><span class='strut'>&nbsp;</span></p>
-<p id='t393' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; task (a :class:`dict`)</span><span class='strut'>&nbsp;</span></p>
-<p id='t394' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t395' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword countdown: Number of seconds into the future that the</span><span class='strut'>&nbsp;</span></p>
-<p id='t396' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; task should execute. Defaults to immediate</span><span class='strut'>&nbsp;</span></p>
-<p id='t397' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; execution.</span><span class='strut'>&nbsp;</span></p>
-<p id='t398' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t399' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword eta: A :class:`~datetime.datetime` object describing</span><span class='strut'>&nbsp;</span></p>
-<p id='t400' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the absolute time and date of when the task should</span><span class='strut'>&nbsp;</span></p>
-<p id='t401' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; be executed.&nbsp; May not be specified if `countdown`</span><span class='strut'>&nbsp;</span></p>
-<p id='t402' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; is also supplied.</span><span class='strut'>&nbsp;</span></p>
-<p id='t403' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t404' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword expires: Either a :class:`int`, describing the number of</span><span class='strut'>&nbsp;</span></p>
-<p id='t405' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seconds, or a :class:`~datetime.datetime` object</span><span class='strut'>&nbsp;</span></p>
-<p id='t406' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; that describes the absolute time and date of when</span><span class='strut'>&nbsp;</span></p>
-<p id='t407' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the task should expire.&nbsp; The task will not be</span><span class='strut'>&nbsp;</span></p>
-<p id='t408' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; executed after the expiration time.</span><span class='strut'>&nbsp;</span></p>
-<p id='t409' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t410' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword connection: Re-use existing broker connection instead</span><span class='strut'>&nbsp;</span></p>
-<p id='t411' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; of establishing a new one.</span><span class='strut'>&nbsp;</span></p>
-<p id='t412' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t413' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword retry: If enabled sending of the task message will be retried</span><span class='strut'>&nbsp;</span></p>
-<p id='t414' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; in the event of connection loss or failure.&nbsp; Default</span><span class='strut'>&nbsp;</span></p>
-<p id='t415' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; is taken from the :setting:`CELERY_TASK_PUBLISH_RETRY`</span><span class='strut'>&nbsp;</span></p>
-<p id='t416' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setting.&nbsp; Note you need to handle the</span><span class='strut'>&nbsp;</span></p>
-<p id='t417' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; producer/connection manually for this to work.</span><span class='strut'>&nbsp;</span></p>
-<p id='t418' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t419' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword retry_policy:&nbsp; Override the retry policy used.&nbsp; See the</span><span class='strut'>&nbsp;</span></p>
-<p id='t420' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :setting:`CELERY_TASK_PUBLISH_RETRY` setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t421' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t422' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword routing_key: Custom routing key used to route the task to a</span><span class='strut'>&nbsp;</span></p>
-<p id='t423' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; worker server. If in combination with a</span><span class='strut'>&nbsp;</span></p>
-<p id='t424' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ``queue`` argument only used to specify custom</span><span class='strut'>&nbsp;</span></p>
-<p id='t425' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; routing keys to topic exchanges.</span><span class='strut'>&nbsp;</span></p>
-<p id='t426' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t427' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword queue: The queue to route the task to.&nbsp; This must be a key</span><span class='strut'>&nbsp;</span></p>
-<p id='t428' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; present in :setting:`CELERY_QUEUES`, or</span><span class='strut'>&nbsp;</span></p>
-<p id='t429' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :setting:`CELERY_CREATE_MISSING_QUEUES` must be</span><span class='strut'>&nbsp;</span></p>
-<p id='t430' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enabled.&nbsp; See :ref:`guide-routing` for more</span><span class='strut'>&nbsp;</span></p>
-<p id='t431' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; information.</span><span class='strut'>&nbsp;</span></p>
-<p id='t432' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t433' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exchange: Named custom exchange to send the task to.</span><span class='strut'>&nbsp;</span></p>
-<p id='t434' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; Usually not used in combination with the ``queue``</span><span class='strut'>&nbsp;</span></p>
-<p id='t435' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; argument.</span><span class='strut'>&nbsp;</span></p>
-<p id='t436' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t437' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword priority: The task priority, a number between 0 and 9.</span><span class='strut'>&nbsp;</span></p>
-<p id='t438' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; Defaults to the :attr:`priority` attribute.</span><span class='strut'>&nbsp;</span></p>
-<p id='t439' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t440' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword serializer: A string identifying the default</span><span class='strut'>&nbsp;</span></p>
-<p id='t441' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; serialization method to use.&nbsp; Can be `pickle`,</span><span class='strut'>&nbsp;</span></p>
-<p id='t442' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; `json`, `yaml`, `msgpack` or any custom</span><span class='strut'>&nbsp;</span></p>
-<p id='t443' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; serialization method that has been registered</span><span class='strut'>&nbsp;</span></p>
-<p id='t444' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; with :mod:`kombu.serialization.registry`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t445' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; Defaults to the :attr:`serializer` attribute.</span><span class='strut'>&nbsp;</span></p>
-<p id='t446' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t447' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword compression: A string identifying the compression method</span><span class='strut'>&nbsp;</span></p>
-<p id='t448' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to use.&nbsp; Can be one of ``zlib``, ``bzip2``,</span><span class='strut'>&nbsp;</span></p>
-<p id='t449' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; or any custom compression methods registered with</span><span class='strut'>&nbsp;</span></p>
-<p id='t450' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :func:`kombu.compression.register`. Defaults to</span><span class='strut'>&nbsp;</span></p>
-<p id='t451' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the :setting:`CELERY_MESSAGE_COMPRESSION`</span><span class='strut'>&nbsp;</span></p>
-<p id='t452' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t453' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword link: A single, or a list of subtasks to apply if the</span><span class='strut'>&nbsp;</span></p>
-<p id='t454' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; task exits successfully.</span><span class='strut'>&nbsp;</span></p>
-<p id='t455' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword link_error: A single, or a list of subtasks to apply</span><span class='strut'>&nbsp;</span></p>
-<p id='t456' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if an error occurs while executing the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t457' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t458' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword producer: :class:~@amqp.TaskProducer` instance to use.</span><span class='strut'>&nbsp;</span></p>
-<p id='t459' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword add_to_parent: If set to True (default) and the task</span><span class='strut'>&nbsp;</span></p>
-<p id='t460' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; is applied while executing another task, then the result</span><span class='strut'>&nbsp;</span></p>
-<p id='t461' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; will be appended to the parent tasks ``request.children``</span><span class='strut'>&nbsp;</span></p>
-<p id='t462' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; attribute.</span><span class='strut'>&nbsp;</span></p>
-<p id='t463' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword publisher: Deprecated alias to ``producer``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t464' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t465' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Also supports all keyword arguments supported by</span><span class='strut'>&nbsp;</span></p>
-<p id='t466' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :meth:`kombu.Producer.publish`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t467' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t468' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; .. note::</span><span class='strut'>&nbsp;</span></p>
-<p id='t469' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If the :setting:`CELERY_ALWAYS_EAGER` setting is set, it will</span><span class='strut'>&nbsp;</span></p>
-<p id='t470' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; be replaced by a local :func:`apply` call instead.</span><span class='strut'>&nbsp;</span></p>
-<p id='t471' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t472' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t473' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>task_id</span> <span class='key'>or</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t474' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>producer</span> <span class='op'>=</span> <span class='nam'>producer</span> <span class='key'>or</span> <span class='nam'>publisher</span><span class='strut'>&nbsp;</span></p>
-<p id='t475' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_get_app</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t476' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>router</span> <span class='op'>=</span> <span class='nam'>router</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>router</span><span class='strut'>&nbsp;</span></p>
-<p id='t477' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conf</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='strut'>&nbsp;</span></p>
-<p id='t478' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t479' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># add &#39;self&#39; if this is a bound method.</span><span class='strut'>&nbsp;</span></p>
-<p id='t480' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t481' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span><span class='op'>,</span> <span class='op'>)</span> <span class='op'>+</span> <span class='nam'>tuple</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t482' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t483' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_ALWAYS_EAGER</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t484' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t485' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>link</span><span class='op'>=</span><span class='nam'>link</span><span class='op'>,</span> <span class='nam'>link_error</span><span class='op'>=</span><span class='nam'>link_error</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t486' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>extract_exec_options</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t487' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>router</span><span class='op'>.</span><span class='nam'>route</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t488' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t489' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>connection</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t490' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>producer</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>TaskProducer</span><span class='op'>(</span><span class='nam'>connection</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t491' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>producer_or_acquire</span><span class='op'>(</span><span class='nam'>producer</span><span class='op'>)</span> <span class='key'>as</span> <span class='nam'>P</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t492' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>extra_properties</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>on_task_call</span><span class='op'>(</span><span class='nam'>P</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t493' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>P</span><span class='op'>.</span><span class='nam'>publish_task</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t494' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t495' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>callbacks</span><span class='op'>=</span><span class='nam'>maybe_list</span><span class='op'>(</span><span class='nam'>link</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t496' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>errbacks</span><span class='op'>=</span><span class='nam'>maybe_list</span><span class='op'>(</span><span class='nam'>link_error</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t497' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='op'>**</span><span class='nam'>dict</span><span class='op'>(</span><span class='nam'>options</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>extra_properties</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t498' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>result</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t499' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>add_to_parent</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t500' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>parent</span> <span class='op'>=</span> <span class='nam'>get_current_worker_task</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t501' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>parent</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t502' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>parent</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>children</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>result</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t503' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>result</span><span class='strut'>&nbsp;</span></p>
-<p id='t504' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t505' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>subtask_from_request</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>request</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t506' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='op'>**</span><span class='nam'>extra_options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t507' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t508' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>request</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request</span> <span class='key'>if</span> <span class='nam'>request</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>request</span><span class='strut'>&nbsp;</span></p>
-<p id='t509' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span> <span class='op'>=</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>args</span> <span class='key'>if</span> <span class='nam'>args</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>args</span><span class='strut'>&nbsp;</span></p>
-<p id='t510' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span> <span class='op'>=</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>kwargs</span> <span class='key'>if</span> <span class='nam'>kwargs</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>kwargs</span><span class='strut'>&nbsp;</span></p>
-<p id='t511' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>options</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t512' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task_id&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t513' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;link&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>callbacks</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t514' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;link_error&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>errbacks</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t515' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;group_id&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>taskset</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t516' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;chord&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>chord</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t517' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;timeouts&#39;</span><span class='op'>:</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>timeouts</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t518' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>}</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>delivery_info</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t519' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>options</span><span class='op'>,</span> <span class='nam'>type</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>extra_options</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t520' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t521' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>retry</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>throw</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t522' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>eta</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>max_retries</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t523' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Retry the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t524' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t525' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: Positional arguments to retry with.</span><span class='strut'>&nbsp;</span></p>
-<p id='t526' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: Keyword arguments to retry with.</span><span class='strut'>&nbsp;</span></p>
-<p id='t527' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword exc: Custom exception to report when the max restart</span><span class='strut'>&nbsp;</span></p>
-<p id='t528' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; limit has been exceeded (default:</span><span class='strut'>&nbsp;</span></p>
-<p id='t529' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :exc:`~celery.exceptions.MaxRetriesExceededError`).</span><span class='strut'>&nbsp;</span></p>
-<p id='t530' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t531' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If this argument is set and retry is called while</span><span class='strut'>&nbsp;</span></p>
-<p id='t532' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; an exception was raised (``sys.exc_info()`` is set)</span><span class='strut'>&nbsp;</span></p>
-<p id='t533' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; it will attempt to reraise the current exception.</span><span class='strut'>&nbsp;</span></p>
-<p id='t534' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t535' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If no exception was raised it will raise the ``exc``</span><span class='strut'>&nbsp;</span></p>
-<p id='t536' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; argument provided.</span><span class='strut'>&nbsp;</span></p>
-<p id='t537' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword countdown: Time in seconds to delay the retry for.</span><span class='strut'>&nbsp;</span></p>
-<p id='t538' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword eta: Explicit time and date to run the retry at</span><span class='strut'>&nbsp;</span></p>
-<p id='t539' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (must be a :class:`~datetime.datetime` instance).</span><span class='strut'>&nbsp;</span></p>
-<p id='t540' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword max_retries: If set, overrides the default retry limit.</span><span class='strut'>&nbsp;</span></p>
-<p id='t541' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword timeout: If set, overrides the default timeout.</span><span class='strut'>&nbsp;</span></p>
-<p id='t542' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword soft_timeout: If set, overrides the default soft timeout.</span><span class='strut'>&nbsp;</span></p>
-<p id='t543' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword \*\*options: Any extra options to pass on to</span><span class='strut'>&nbsp;</span></p>
-<p id='t544' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; meth:`apply_async`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t545' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword throw: If this is :const:`False`, do not raise the</span><span class='strut'>&nbsp;</span></p>
-<p id='t546' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :exc:`~celery.exceptions.RetryTaskError` exception,</span><span class='strut'>&nbsp;</span></p>
-<p id='t547' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; that tells the worker to mark the task as being</span><span class='strut'>&nbsp;</span></p>
-<p id='t548' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retried.&nbsp; Note that this means the task will be</span><span class='strut'>&nbsp;</span></p>
-<p id='t549' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; marked as failed if the task raises an exception,</span><span class='strut'>&nbsp;</span></p>
-<p id='t550' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; or successful if it returns.</span><span class='strut'>&nbsp;</span></p>
-<p id='t551' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t552' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :raises celery.exceptions.RetryTaskError: To tell the worker that</span><span class='strut'>&nbsp;</span></p>
-<p id='t553' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the task has been re-sent for retry. This always happens,</span><span class='strut'>&nbsp;</span></p>
-<p id='t554' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unless the `throw` keyword argument has been explicitly set</span><span class='strut'>&nbsp;</span></p>
-<p id='t555' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to :const:`False`, and is considered normal operation.</span><span class='strut'>&nbsp;</span></p>
-<p id='t556' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t557' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; **Example**</span><span class='strut'>&nbsp;</span></p>
-<p id='t558' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t559' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; .. code-block:: python</span><span class='strut'>&nbsp;</span></p>
-<p id='t560' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t561' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; @task()</span><span class='strut'>&nbsp;</span></p>
-<p id='t562' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; def tweet(auth, message):</span><span class='strut'>&nbsp;</span></p>
-<p id='t563' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp;&nbsp; twitter = Twitter(oauth=auth)</span><span class='strut'>&nbsp;</span></p>
-<p id='t564' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp;&nbsp; try:</span><span class='strut'>&nbsp;</span></p>
-<p id='t565' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; twitter.post_status_update(message)</span><span class='strut'>&nbsp;</span></p>
-<p id='t566' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp;&nbsp; except twitter.FailWhale as exc:</span><span class='strut'>&nbsp;</span></p>
-<p id='t567' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; # Retry in 5 minutes.</span><span class='strut'>&nbsp;</span></p>
-<p id='t568' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; raise tweet.retry(countdown=60 * 5, exc=exc)</span><span class='strut'>&nbsp;</span></p>
-<p id='t569' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t570' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Although the task will never return above as `retry` raises an</span><span class='strut'>&nbsp;</span></p>
-<p id='t571' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; exception to notify the worker, we use `raise` in front of the retry</span><span class='strut'>&nbsp;</span></p>
-<p id='t572' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; to convey that the rest of the block will not be executed.</span><span class='strut'>&nbsp;</span></p>
-<p id='t573' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t574' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t575' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>request</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request</span><span class='strut'>&nbsp;</span></p>
-<p id='t576' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retries</span> <span class='op'>=</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>retries</span> <span class='op'>+</span> <span class='num'>1</span><span class='strut'>&nbsp;</span></p>
-<p id='t577' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max_retries</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>max_retries</span> <span class='key'>if</span> <span class='nam'>max_retries</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>max_retries</span><span class='strut'>&nbsp;</span></p>
-<p id='t578' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t579' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Not in worker or emulated by (apply/always_eager),</span><span class='strut'>&nbsp;</span></p>
-<p id='t580' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># so just raise the original exception.</span><span class='strut'>&nbsp;</span></p>
-<p id='t581' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>called_directly</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t582' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>maybe_reraise</span><span class='op'>(</span><span class='op'>)</span>&nbsp; <span class='com'># raise orig stack if PyErr_Occurred</span><span class='strut'>&nbsp;</span></p>
-<p id='t583' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>exc</span> <span class='key'>or</span> <span class='nam'>RetryTaskError</span><span class='op'>(</span><span class='str'>&#39;Task can be retried&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t584' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t585' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>eta</span> <span class='key'>and</span> <span class='nam'>countdown</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t586' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>countdown</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>default_retry_delay</span><span class='strut'>&nbsp;</span></p>
-<p id='t587' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t588' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>S</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subtask_from_request</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t589' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>request</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t590' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>countdown</span><span class='op'>=</span><span class='nam'>countdown</span><span class='op'>,</span> <span class='nam'>eta</span><span class='op'>=</span><span class='nam'>eta</span><span class='op'>,</span> <span class='nam'>retries</span><span class='op'>=</span><span class='nam'>retries</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t591' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>options</span><span class='strut'>&nbsp;</span></p>
-<p id='t592' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t593' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t594' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>max_retries</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span> <span class='key'>and</span> <span class='nam'>retries</span> <span class='op'>&gt;</span> <span class='nam'>max_retries</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t595' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>exc</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t596' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>maybe_reraise</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t597' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>MaxRetriesExceededError</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t598' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;Can&#39;t retry {0}[{1}] args:{2} kwargs:{3}&quot;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t599' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>id</span><span class='op'>,</span> <span class='nam'>S</span><span class='op'>.</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>S</span><span class='op'>.</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t600' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t601' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># If task was executed eagerly using apply(),</span><span class='strut'>&nbsp;</span></p>
-<p id='t602' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># then the retry must also be executed eagerly.</span><span class='strut'>&nbsp;</span></p>
-<p id='t603' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>S</span><span class='op'>.</span><span class='nam'>apply</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>request</span><span class='op'>.</span><span class='nam'>is_eager</span> <span class='key'>else</span> <span class='nam'>S</span><span class='op'>.</span><span class='nam'>apply_async</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t604' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>ret</span> <span class='op'>=</span> <span class='nam'>RetryTaskError</span><span class='op'>(</span><span class='nam'>exc</span><span class='op'>=</span><span class='nam'>exc</span><span class='op'>,</span> <span class='nam'>when</span><span class='op'>=</span><span class='nam'>eta</span> <span class='key'>or</span> <span class='nam'>countdown</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t605' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>throw</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t606' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>ret</span><span class='strut'>&nbsp;</span></p>
-<p id='t607' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>ret</span><span class='strut'>&nbsp;</span></p>
-<p id='t608' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t609' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>apply</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t610' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>link</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>link_error</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>options</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t611' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Execute this task locally, by blocking until the task returns.</span><span class='strut'>&nbsp;</span></p>
-<p id='t612' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t613' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: positional arguments passed on to the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t614' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: keyword arguments passed on to the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t615' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword throw: Re-raise task exceptions.&nbsp; Defaults to</span><span class='strut'>&nbsp;</span></p>
-<p id='t616' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the :setting:`CELERY_EAGER_PROPAGATES_EXCEPTIONS`</span><span class='strut'>&nbsp;</span></p>
-<p id='t617' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setting.</span><span class='strut'>&nbsp;</span></p>
-<p id='t618' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t619' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :rtype :class:`celery.result.EagerResult`:</span><span class='strut'>&nbsp;</span></p>
-<p id='t620' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t621' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t622' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># trace imports Task, so need to import inline.</span><span class='strut'>&nbsp;</span></p>
-<p id='t623' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>trace</span> <span class='key'>import</span> <span class='nam'>eager_trace_task</span><span class='strut'>&nbsp;</span></p>
-<p id='t624' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t625' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_get_app</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t626' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span> <span class='op'>=</span> <span class='nam'>args</span> <span class='key'>or</span> <span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t627' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># add &#39;self&#39; if this is a bound method.</span><span class='strut'>&nbsp;</span></p>
-<p id='t628' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t629' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>args</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span><span class='op'>,</span> <span class='op'>)</span> <span class='op'>+</span> <span class='nam'>tuple</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t630' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span> <span class='op'>=</span> <span class='nam'>kwargs</span> <span class='key'>or</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t631' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;task_id&#39;</span><span class='op'>)</span> <span class='key'>or</span> <span class='nam'>uuid</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t632' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retries</span> <span class='op'>=</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;retries&#39;</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t633' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>throw</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>either</span><span class='op'>(</span><span class='str'>&#39;CELERY_EAGER_PROPAGATES_EXCEPTIONS&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t634' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>options</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='str'>&#39;throw&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t635' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t636' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Make sure we get the task instance, not class.</span><span class='strut'>&nbsp;</span></p>
-<p id='t637' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>_tasks</span><span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t638' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t639' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>request</span> <span class='op'>=</span> <span class='op'>{</span><span class='str'>&#39;id&#39;</span><span class='op'>:</span> <span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t640' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;retries&#39;</span><span class='op'>:</span> <span class='nam'>retries</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t641' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;is_eager&#39;</span><span class='op'>:</span> <span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t642' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;logfile&#39;</span><span class='op'>:</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;logfile&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t643' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;loglevel&#39;</span><span class='op'>:</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;loglevel&#39;</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t644' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;callbacks&#39;</span><span class='op'>:</span> <span class='nam'>maybe_list</span><span class='op'>(</span><span class='nam'>link</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t645' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;errbacks&#39;</span><span class='op'>:</span> <span class='nam'>maybe_list</span><span class='op'>(</span><span class='nam'>link_error</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t646' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;delivery_info&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='str'>&#39;is_eager&#39;</span><span class='op'>:</span> <span class='nam'>True</span><span class='op'>}</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t647' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>accept_magic_kwargs</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t648' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>default_kwargs</span> <span class='op'>=</span> <span class='op'>{</span><span class='str'>&#39;task_name&#39;</span><span class='op'>:</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t649' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task_id&#39;</span><span class='op'>:</span> <span class='nam'>task_id</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t650' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task_retries&#39;</span><span class='op'>:</span> <span class='nam'>retries</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t651' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;task_is_eager&#39;</span><span class='op'>:</span> <span class='nam'>True</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t652' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;logfile&#39;</span><span class='op'>:</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;logfile&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t653' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;loglevel&#39;</span><span class='op'>:</span> <span class='nam'>options</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;loglevel&#39;</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t654' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;delivery_info&#39;</span><span class='op'>:</span> <span class='op'>{</span><span class='str'>&#39;is_eager&#39;</span><span class='op'>:</span> <span class='nam'>True</span><span class='op'>}</span><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t655' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>supported_keys</span> <span class='op'>=</span> <span class='nam'>fun_takes_kwargs</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>.</span><span class='nam'>run</span><span class='op'>,</span> <span class='nam'>default_kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t656' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>extend_with</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>,</span> <span class='nam'>val</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t657' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>val</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>default_kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t658' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='key'>if</span> <span class='nam'>key</span> <span class='key'>in</span> <span class='nam'>supported_keys</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t659' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>extend_with</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t660' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t661' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tb</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t662' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>info</span> <span class='op'>=</span> <span class='nam'>eager_trace_task</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t663' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>request</span><span class='op'>=</span><span class='nam'>request</span><span class='op'>,</span> <span class='nam'>propagate</span><span class='op'>=</span><span class='nam'>throw</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t664' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>ExceptionInfo</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t665' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>tb</span> <span class='op'>=</span> <span class='nam'>retval</span><span class='op'>.</span><span class='nam'>exception</span><span class='op'>,</span> <span class='nam'>retval</span><span class='op'>.</span><span class='nam'>traceback</span><span class='strut'>&nbsp;</span></p>
-<p id='t666' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>state</span> <span class='op'>=</span> <span class='nam'>states</span><span class='op'>.</span><span class='nam'>SUCCESS</span> <span class='key'>if</span> <span class='nam'>info</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>info</span><span class='op'>.</span><span class='nam'>state</span><span class='strut'>&nbsp;</span></p>
-<p id='t667' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>EagerResult</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>state</span><span class='op'>,</span> <span class='nam'>traceback</span><span class='op'>=</span><span class='nam'>tb</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t668' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t669' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t670' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Get AsyncResult instance for this kind of task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t671' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t672' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Task id to get result for.</span><span class='strut'>&nbsp;</span></p>
-<p id='t673' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t674' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t675' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_get_app</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>AsyncResult</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>backend</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t676' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>task_name</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t677' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t678' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>starargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>starkwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t679' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns :class:`~celery.subtask` object for</span><span class='strut'>&nbsp;</span></p>
-<p id='t680' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; this task, wrapping arguments and execution options</span><span class='strut'>&nbsp;</span></p>
-<p id='t681' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; for a single task invocation.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t682' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>starargs</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>starkwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t683' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t684' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>s</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t685' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;``.s(*a, **k) -&gt; .subtask(a, k)``&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t686' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t687' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t688' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>si</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t689' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;``.si(*a, **k) -&gt; .subtask(a, k, immutable=True)``&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t690' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>subtask</span><span class='op'>(</span><span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>immutable</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t691' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t692' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>chunks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t693' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates a :class:`~celery.canvas.chunks` task for this task.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t694' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>chunks</span><span class='strut'>&nbsp;</span></p>
-<p id='t695' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>chunks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>s</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>,</span> <span class='nam'>n</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t696' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t697' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>map</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t698' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates a :class:`~celery.canvas.xmap` task from ``it``.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t699' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>xmap</span><span class='strut'>&nbsp;</span></p>
-<p id='t700' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>xmap</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>s</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t701' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t702' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>starmap</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t703' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Creates a :class:`~celery.canvas.xstarmap` task from ``it``.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t704' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>xstarmap</span><span class='strut'>&nbsp;</span></p>
-<p id='t705' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>xstarmap</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>s</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>it</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t706' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t707' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>update_state</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>state</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>meta</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t708' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Update task state.</span><span class='strut'>&nbsp;</span></p>
-<p id='t709' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t710' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword task_id: Id of the task to update, defaults to the</span><span class='strut'>&nbsp;</span></p>
-<p id='t711' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id of the current task</span><span class='strut'>&nbsp;</span></p>
-<p id='t712' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword state: New state (:class:`str`).</span><span class='strut'>&nbsp;</span></p>
-<p id='t713' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword meta: State metadata (:class:`dict`).</span><span class='strut'>&nbsp;</span></p>
-<p id='t714' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t715' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t716' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t717' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t718' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>task_id</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t719' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>task_id</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request</span><span class='op'>.</span><span class='nam'>id</span><span class='strut'>&nbsp;</span></p>
-<p id='t720' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>.</span><span class='nam'>store_result</span><span class='op'>(</span><span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>meta</span><span class='op'>,</span> <span class='nam'>state</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t721' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t722' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_success</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t723' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Success handler.</span><span class='strut'>&nbsp;</span></p>
-<p id='t724' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t725' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Run by the worker if the task executes successfully.</span><span class='strut'>&nbsp;</span></p>
-<p id='t726' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t727' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param retval: The return value of the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t728' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Unique id of the executed task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t729' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: Original arguments for the executed task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t730' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: Original keyword arguments for the executed task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t731' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t732' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The return value of this handler is ignored.</span><span class='strut'>&nbsp;</span></p>
-<p id='t733' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t734' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t735' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t736' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t737' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_retry</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>einfo</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t738' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Retry handler.</span><span class='strut'>&nbsp;</span></p>
-<p id='t739' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t740' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; This is run by the worker when the task is to be retried.</span><span class='strut'>&nbsp;</span></p>
-<p id='t741' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t742' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param exc: The exception sent to :meth:`retry`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t743' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Unique id of the retried task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t744' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: Original arguments for the retried task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t745' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: Original keyword arguments for the retried task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t746' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t747' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`</span><span class='strut'>&nbsp;</span></p>
-<p id='t748' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; instance, containing the traceback.</span><span class='strut'>&nbsp;</span></p>
-<p id='t749' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t750' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The return value of this handler is ignored.</span><span class='strut'>&nbsp;</span></p>
-<p id='t751' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t752' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t753' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t754' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t755' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_failure</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>einfo</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t756' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Error handler.</span><span class='strut'>&nbsp;</span></p>
-<p id='t757' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t758' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; This is run by the worker when the task fails.</span><span class='strut'>&nbsp;</span></p>
-<p id='t759' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t760' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param exc: The exception raised by the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t761' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Unique id of the failed task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t762' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: Original arguments for the task that failed.</span><span class='strut'>&nbsp;</span></p>
-<p id='t763' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: Original keyword arguments for the task</span><span class='strut'>&nbsp;</span></p>
-<p id='t764' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; that failed.</span><span class='strut'>&nbsp;</span></p>
-<p id='t765' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t766' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`</span><span class='strut'>&nbsp;</span></p>
-<p id='t767' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; instance, containing the traceback.</span><span class='strut'>&nbsp;</span></p>
-<p id='t768' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t769' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The return value of this handler is ignored.</span><span class='strut'>&nbsp;</span></p>
-<p id='t770' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t771' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t772' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t773' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t774' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>after_return</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>status</span><span class='op'>,</span> <span class='nam'>retval</span><span class='op'>,</span> <span class='nam'>task_id</span><span class='op'>,</span> <span class='nam'>args</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>,</span> <span class='nam'>einfo</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t775' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Handler called after the task returns.</span><span class='strut'>&nbsp;</span></p>
-<p id='t776' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t777' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param status: Current task state.</span><span class='strut'>&nbsp;</span></p>
-<p id='t778' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param retval: Task return value/exception.</span><span class='strut'>&nbsp;</span></p>
-<p id='t779' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param task_id: Unique id of the task.</span><span class='strut'>&nbsp;</span></p>
-<p id='t780' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param args: Original arguments for the task that failed.</span><span class='strut'>&nbsp;</span></p>
-<p id='t781' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param kwargs: Original keyword arguments for the task</span><span class='strut'>&nbsp;</span></p>
-<p id='t782' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; that failed.</span><span class='strut'>&nbsp;</span></p>
-<p id='t783' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t784' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`</span><span class='strut'>&nbsp;</span></p>
-<p id='t785' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; instance, containing the traceback (if any).</span><span class='strut'>&nbsp;</span></p>
-<p id='t786' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t787' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; The return value of this handler is ignored.</span><span class='strut'>&nbsp;</span></p>
-<p id='t788' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t789' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t790' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>pass</span><span class='strut'>&nbsp;</span></p>
-<p id='t791' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t792' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>send_error_email</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>context</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t793' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>send_error_emails</span> <span class='key'>and</span> <span class='xx'>\</span><span class='strut'>&nbsp;</span></p>
-<p id='t794' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>not</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='str'>&#39;disable_error_emails&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t795' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>ErrorMail</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='nam'>context</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t796' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t797' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>push_request</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t798' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request_stack</span><span class='op'>.</span><span class='nam'>push</span><span class='op'>(</span><span class='nam'>Context</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t799' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t800' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>pop_request</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t801' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request_stack</span><span class='op'>.</span><span class='nam'>pop</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t802' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t803' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__repr__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t804' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;`repr(task)`&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t805' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>_reprtask</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>R_SELF_TASK</span> <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__self__</span> <span class='key'>else</span> <span class='nam'>R_INSTANCE</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t806' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t807' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_get_request</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t808' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Get current request object.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t809' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>req</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>request_stack</span><span class='op'>.</span><span class='nam'>top</span><span class='strut'>&nbsp;</span></p>
-<p id='t810' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>req</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t811' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># task was not called, but some may still expect a request</span><span class='strut'>&nbsp;</span></p>
-<p id='t812' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># to be there, perhaps that should be deprecated.</span><span class='strut'>&nbsp;</span></p>
-<p id='t813' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_default_request</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t814' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_default_request</span> <span class='op'>=</span> <span class='nam'>Context</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t815' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_default_request</span><span class='strut'>&nbsp;</span></p>
-<p id='t816' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>req</span><span class='strut'>&nbsp;</span></p>
-<p id='t817' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>request</span> <span class='op'>=</span> <span class='nam'>property</span><span class='op'>(</span><span class='nam'>_get_request</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t818' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t819' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t820' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__name__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t821' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>.</span><span class='nam'>__name__</span><span class='strut'>&nbsp;</span></p>
-<p id='t822' class='stm run hide_run'><span class='nam'>BaseTask</span> <span class='op'>=</span> <span class='nam'>Task</span>&nbsp; <span class='com'># compat alias</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 466
celery/tests/cover/celery_app_utils.html

@@ -1,466 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.app.utils: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.app.utils</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            70 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>70 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='pln'><a href='#n66'>66</a></p>
-<p id='n67' class='stm run hide_run'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='stm run hide_run'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='stm run hide_run'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='pln'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='pln'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='stm run hide_run'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='pln'><a href='#n108'>108</a></p>
-<p id='n109' class='pln'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='pln'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='stm run hide_run'><a href='#n121'>121</a></p>
-<p id='n122' class='stm run hide_run'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='stm run hide_run'><a href='#n126'>126</a></p>
-<p id='n127' class='stm run hide_run'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='stm run hide_run'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='stm run hide_run'><a href='#n141'>141</a></p>
-<p id='n142' class='stm run hide_run'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='pln'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='pln'><a href='#n151'>151</a></p>
-<p id='n152' class='stm run hide_run'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='pln'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='stm run hide_run'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='stm run hide_run'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='pln'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='stm run hide_run'><a href='#n167'>167</a></p>
-<p id='n168' class='stm run hide_run'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='stm run hide_run'><a href='#n170'>170</a></p>
-<p id='n171' class='stm run hide_run'><a href='#n171'>171</a></p>
-<p id='n172' class='stm run hide_run'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='stm run hide_run'><a href='#n174'>174</a></p>
-<p id='n175' class='stm run hide_run'><a href='#n175'>175</a></p>
-<p id='n176' class='stm run hide_run'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='stm run hide_run'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='pln'><a href='#n181'>181</a></p>
-<p id='n182' class='pln'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='pln'><a href='#n184'>184</a></p>
-<p id='n185' class='pln'><a href='#n185'>185</a></p>
-<p id='n186' class='pln'><a href='#n186'>186</a></p>
-<p id='n187' class='pln'><a href='#n187'>187</a></p>
-<p id='n188' class='pln'><a href='#n188'>188</a></p>
-<p id='n189' class='pln'><a href='#n189'>189</a></p>
-<p id='n190' class='pln'><a href='#n190'>190</a></p>
-<p id='n191' class='pln'><a href='#n191'>191</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.app.utils</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; App utilities: Compat settings, bugreport tool, pickling apps.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>platform</span> <span class='key'>as</span> <span class='nam'>_platform</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>re</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>platforms</span> <span class='key'>import</span> <span class='nam'>pyimplementation</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>items</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>datastructures</span> <span class='key'>import</span> <span class='nam'>ConfigurationView</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>text</span> <span class='key'>import</span> <span class='nam'>pretty</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>qualname</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='op'>.</span><span class='nam'>defaults</span> <span class='key'>import</span> <span class='nam'>find</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='com'>#: Format used to generate bugreport information.</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='nam'>BUGREPORT_INFO</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='str'>software -&gt; celery:{celery_v} kombu:{kombu_v} py:{py_v}</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; billiard:{billiard_v} {driver_v}</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='str'>platform -&gt; system:{system} arch:{arch} imp:{py_i}</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='str'>loader&nbsp;&nbsp; -&gt; {loader}</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='str'>settings -&gt; transport:{transport} results:{results}</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='str'>{human_settings}</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='nam'>HIDDEN_SETTINGS</span> <span class='op'>=</span> <span class='nam'>re</span><span class='op'>.</span><span class='nam'>compile</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;API|TOKEN|KEY|SECRET|PASS|PROFANITIES_LIST|SIGNATURE|DATABASE&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'>&nbsp; &nbsp; <span class='nam'>re</span><span class='op'>.</span><span class='nam'>IGNORECASE</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>appstr</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;String used in __repr__ etc, to id app instances.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;{0}:0x{1:x}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>main</span> <span class='key'>or</span> <span class='str'>&#39;__main__&#39;</span><span class='op'>,</span> <span class='nam'>id</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Settings</span><span class='op'>(</span><span class='nam'>ConfigurationView</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Celery settings object.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>CELERY_RESULT_BACKEND</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>first</span><span class='op'>(</span><span class='str'>&#39;CELERY_RESULT_BACKEND&#39;</span><span class='op'>,</span> <span class='str'>&#39;CELERY_BACKEND&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>BROKER_TRANSPORT</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>first</span><span class='op'>(</span><span class='str'>&#39;BROKER_TRANSPORT&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;BROKER_BACKEND&#39;</span><span class='op'>,</span> <span class='str'>&#39;CARROT_BACKEND&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>BROKER_BACKEND</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Deprecated compat alias to :attr:`BROKER_TRANSPORT`.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>BROKER_TRANSPORT</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>BROKER_HOST</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='op'>(</span><span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='str'>&#39;CELERY_BROKER_URL&#39;</span><span class='op'>)</span> <span class='key'>or</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>first</span><span class='op'>(</span><span class='str'>&#39;BROKER_URL&#39;</span><span class='op'>,</span> <span class='str'>&#39;BROKER_HOST&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='stm run hide_run'>&nbsp; &nbsp; <span class='op'>@</span><span class='nam'>property</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>CELERY_TIMEZONE</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># this way we also support django&#39;s time zone.</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>first</span><span class='op'>(</span><span class='str'>&#39;CELERY_TIMEZONE&#39;</span><span class='op'>,</span> <span class='str'>&#39;TIME_ZONE&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>without_defaults</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns the current configuration, but without defaults.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># the last stash is the default settings, so just skip that</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>Settings</span><span class='op'>(</span><span class='op'>{</span><span class='op'>}</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_order</span><span class='op'>[</span><span class='op'>:</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>find_option</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Search for option by name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Will return ``(namespace, option_name, Option)`` tuple, e.g.::</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; celery.conf.find_option(&#39;disable_rate_limits&#39;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&#39;CELERY&#39;, &#39;DISABLE_RATE_LIMITS&#39;,</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;Option: type-&gt;bool default-&gt;False&gt;))</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :param name: Name of option, cannot be partial.</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; :keyword namespace: Preferred namespace (``CELERY`` by default).</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>find</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>find_value_for_key</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>=</span><span class='str'>&#39;celery&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Shortcut to ``get_by_parts(*find_option(name)[:-1])``&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>get_by_parts</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>find_option</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>)</span><span class='op'>[</span><span class='op'>:</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>get_by_parts</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>parts</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns the current value for setting specified as a path.</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; Example::</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &gt;&gt;&gt; celery.conf.get_by_parts(&#39;CELERY&#39;, &#39;DISABLE_RATE_LIMITS&#39;)</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; False</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>[</span><span class='str'>&#39;_&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>part</span> <span class='key'>for</span> <span class='nam'>part</span> <span class='key'>in</span> <span class='nam'>parts</span> <span class='key'>if</span> <span class='nam'>part</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>humanize</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns a human readable string showing changes to the</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; configuration.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;\n&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;{0}: {1}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>,</span> <span class='nam'>pretty</span><span class='op'>(</span><span class='nam'>value</span><span class='op'>,</span> <span class='nam'>width</span><span class='op'>=</span><span class='num'>50</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>filter_hidden_settings</span><span class='op'>(</span><span class='nam'>dict</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>(</span><span class='nam'>k</span><span class='op'>,</span> <span class='nam'>v</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>k</span><span class='op'>,</span> <span class='nam'>v</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>without_defaults</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>k</span><span class='op'>.</span><span class='nam'>isupper</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>and</span> <span class='key'>not</span> <span class='nam'>k</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;_&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>AppPickler</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Old application pickler/unpickler (&lt;= 3.0).&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__call__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>cls</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kwargs</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>build_kwargs</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>construct</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>prepare</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>kwargs</span><span class='op'>[</span><span class='str'>&#39;changes&#39;</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>build_kwargs</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>build_standard_kwargs</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>build_standard_kwargs</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>main</span><span class='op'>,</span> <span class='nam'>changes</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>,</span> <span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>amqp</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>events</span><span class='op'>,</span> <span class='nam'>log</span><span class='op'>,</span> <span class='nam'>control</span><span class='op'>,</span> <span class='nam'>accept_magic_kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>config_source</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>main</span><span class='op'>=</span><span class='nam'>main</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>loader</span><span class='op'>,</span> <span class='nam'>backend</span><span class='op'>=</span><span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>amqp</span><span class='op'>=</span><span class='nam'>amqp</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>changes</span><span class='op'>=</span><span class='nam'>changes</span><span class='op'>,</span> <span class='nam'>events</span><span class='op'>=</span><span class='nam'>events</span><span class='op'>,</span> <span class='nam'>log</span><span class='op'>=</span><span class='nam'>log</span><span class='op'>,</span> <span class='nam'>control</span><span class='op'>=</span><span class='nam'>control</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>set_as_current</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>accept_magic_kwargs</span><span class='op'>=</span><span class='nam'>accept_magic_kwargs</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>config_source</span><span class='op'>=</span><span class='nam'>config_source</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>construct</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>cls</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>cls</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_unpickle_app</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='nam'>pickler</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Rebuild app for versions 2.5+&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>pickler</span><span class='op'>(</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_unpickle_app_v2</span><span class='op'>(</span><span class='nam'>cls</span><span class='op'>,</span> <span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Rebuild app for versions 3.1+&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>kwargs</span><span class='op'>[</span><span class='str'>&#39;set_as_current&#39;</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>cls</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>filter_hidden_settings</span><span class='op'>(</span><span class='nam'>conf</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>maybe_censor</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;********&#39;</span> <span class='key'>if</span> <span class='nam'>HIDDEN_SETTINGS</span><span class='op'>.</span><span class='nam'>search</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>)</span> <span class='key'>else</span> <span class='nam'>value</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>dict</span><span class='op'>(</span><span class='op'>(</span><span class='nam'>k</span><span class='op'>,</span> <span class='nam'>maybe_censor</span><span class='op'>(</span><span class='nam'>k</span><span class='op'>,</span> <span class='nam'>v</span><span class='op'>)</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>k</span><span class='op'>,</span> <span class='nam'>v</span> <span class='key'>in</span> <span class='nam'>items</span><span class='op'>(</span><span class='nam'>conf</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>bugreport</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Returns a string containing information useful in bug reports.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>billiard</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>celery</span><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>kombu</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conn</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>driver_v</span> <span class='op'>=</span> <span class='str'>&#39;{0}:{1}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>conn</span><span class='op'>.</span><span class='nam'>transport</span><span class='op'>.</span><span class='nam'>driver_name</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conn</span><span class='op'>.</span><span class='nam'>transport</span><span class='op'>.</span><span class='nam'>driver_version</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>transport</span> <span class='op'>=</span> <span class='nam'>conn</span><span class='op'>.</span><span class='nam'>transport_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>Exception</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>transport</span> <span class='op'>=</span> <span class='nam'>driver_v</span> <span class='op'>=</span> <span class='str'>&#39;&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>BUGREPORT_INFO</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>system</span><span class='op'>=</span><span class='nam'>_platform</span><span class='op'>.</span><span class='nam'>system</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arch</span><span class='op'>=</span><span class='str'>&#39;, &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>x</span> <span class='key'>for</span> <span class='nam'>x</span> <span class='key'>in</span> <span class='nam'>_platform</span><span class='op'>.</span><span class='nam'>architecture</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>x</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>py_i</span><span class='op'>=</span><span class='nam'>pyimplementation</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>celery_v</span><span class='op'>=</span><span class='nam'>celery</span><span class='op'>.</span><span class='nam'>VERSION_BANNER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>kombu_v</span><span class='op'>=</span><span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>__version__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>billiard_v</span><span class='op'>=</span><span class='nam'>billiard</span><span class='op'>.</span><span class='nam'>__version__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>py_v</span><span class='op'>=</span><span class='nam'>_platform</span><span class='op'>.</span><span class='nam'>python_version</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>driver_v</span><span class='op'>=</span><span class='nam'>driver_v</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>transport</span><span class='op'>=</span><span class='nam'>transport</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>results</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>CELERY_RESULT_BACKEND</span> <span class='key'>or</span> <span class='str'>&#39;disabled&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>human_settings</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>humanize</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>qualname</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 84
celery/tests/cover/celery_apps.html

@@ -1,84 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.apps: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.apps</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            0 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>0 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-                
-            </td>
-            <td class='text' valign='top'>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 382
celery/tests/cover/celery_apps_beat.html

@@ -1,382 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.apps.beat: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.apps.beat</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            71 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>71 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='pln'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='pln'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='stm run hide_run'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='stm run hide_run'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='stm run hide_run'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='stm run hide_run'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='stm run hide_run'><a href='#n86'>86</a></p>
-<p id='n87' class='pln'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='pln'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='stm run hide_run'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='stm run hide_run'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='stm run hide_run'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='pln'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='stm run hide_run'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='pln'><a href='#n121'>121</a></p>
-<p id='n122' class='stm run hide_run'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='pln'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='pln'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='pln'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='pln'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='stm run hide_run'><a href='#n136'>136</a></p>
-<p id='n137' class='stm run hide_run'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='pln'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='stm run hide_run'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='pln'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='stm run hide_run'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='pln'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.apps.beat</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; This module is the &#39;program-version&#39; of :mod:`celery.beat`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&nbsp; &nbsp; It does everything necessary to run that module</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&nbsp; &nbsp; as an actual application, like installing signal handlers</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='str'>&nbsp; &nbsp; and so on.</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>socket</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>VERSION_BANNER</span><span class='op'>,</span> <span class='nam'>platforms</span><span class='op'>,</span> <span class='nam'>beat</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>app</span> <span class='key'>import</span> <span class='nam'>app_or_default</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>qualname</span><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>log</span> <span class='key'>import</span> <span class='nam'>LOG_LEVELS</span><span class='op'>,</span> <span class='nam'>get_logger</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>timeutils</span> <span class='key'>import</span> <span class='nam'>humanize_seconds</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='nam'>STARTUP_INFO_FMT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='str'>Configuration -&gt;</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'><span class='str'>&nbsp; &nbsp; . broker -&gt; {conninfo}</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'><span class='str'>&nbsp; &nbsp; . loader -&gt; {loader}</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'><span class='str'>&nbsp; &nbsp; . scheduler -&gt; {scheduler}</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'><span class='str'>{scheduler_info}</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'><span class='str'>&nbsp; &nbsp; . logfile -&gt; {logfile}@%{loglevel}</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'><span class='str'>&nbsp; &nbsp; . maxinterval -&gt; {hmax_interval} ({max_interval}s)</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='op'>.</span><span class='nam'>strip</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='nam'>logger</span> <span class='op'>=</span> <span class='nam'>get_logger</span><span class='op'>(</span><span class='str'>&#39;celery.beat&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Beat</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>Service</span> <span class='op'>=</span> <span class='nam'>beat</span><span class='op'>.</span><span class='nam'>Service</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>max_interval</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>app</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>socket_timeout</span><span class='op'>=</span><span class='num'>30</span><span class='op'>,</span> <span class='nam'>pidfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>no_color</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>schedule</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>scheduler_cls</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>redirect_stdouts</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>redirect_stdouts_level</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Starts the beat task scheduler.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>app_or_default</span><span class='op'>(</span><span class='nam'>app</span> <span class='key'>or</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='str'>&#39;log_level&#39;</span><span class='op'>,</span> <span class='nam'>loglevel</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='str'>&#39;log_file&#39;</span><span class='op'>,</span> <span class='nam'>logfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>schedule</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='str'>&#39;schedule_filename&#39;</span><span class='op'>,</span> <span class='nam'>schedule</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>scheduler_cls</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='str'>&#39;scheduler&#39;</span><span class='op'>,</span> <span class='nam'>scheduler_cls</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;redirect_stdouts&#39;</span><span class='op'>,</span> <span class='nam'>redirect_stdouts</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts_level</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;redirect_stdouts_level&#39;</span><span class='op'>,</span> <span class='nam'>redirect_stdouts_level</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>max_interval</span> <span class='op'>=</span> <span class='nam'>max_interval</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>socket_timeout</span> <span class='op'>=</span> <span class='nam'>socket_timeout</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span> <span class='op'>=</span> <span class='nam'>no_color</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span> <span class='op'>=</span> <span class='nam'>app</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>.</span><span class='nam'>colored</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>enabled</span><span class='op'>=</span><span class='key'>not</span> <span class='nam'>no_color</span> <span class='key'>if</span> <span class='nam'>no_color</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>no_color</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pidfile</span> <span class='op'>=</span> <span class='nam'>pidfile</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>int</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span> <span class='op'>=</span> <span class='nam'>LOG_LEVELS</span><span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>.</span><span class='nam'>upper</span><span class='op'>(</span><span class='op'>)</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_getopt</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>value</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>value</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>.</span><span class='nam'>find_value_for_key</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>,</span> <span class='nam'>namespace</span><span class='op'>=</span><span class='str'>&#39;celerybeat&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>run</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span><span class='op'>.</span><span class='nam'>cyan</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery beat v{0} is starting.&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>VERSION_BANNER</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>init_loader</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_process_title</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>start_scheduler</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_logging</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>colorize</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>and</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span> <span class='op'>=</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>.</span><span class='nam'>setup</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts_level</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>start_scheduler</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>c</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pidfile</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>create_pidlock</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>pidfile</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>beat</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>Service</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max_interval</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>max_interval</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>scheduler_cls</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>scheduler_cls</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>schedule_filename</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>schedule</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='nam'>str</span><span class='op'>(</span><span class='nam'>c</span><span class='op'>.</span><span class='nam'>blue</span><span class='op'>(</span><span class='str'>&#39;__&nbsp; &nbsp; &#39;</span><span class='op'>,</span> <span class='nam'>c</span><span class='op'>.</span><span class='nam'>magenta</span><span class='op'>(</span><span class='str'>&#39;-&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>c</span><span class='op'>.</span><span class='nam'>blue</span><span class='op'>(</span><span class='str'>&#39;&nbsp; &nbsp; ... __&nbsp;&nbsp; &#39;</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>c</span><span class='op'>.</span><span class='nam'>magenta</span><span class='op'>(</span><span class='str'>&#39;-&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>c</span><span class='op'>.</span><span class='nam'>blue</span><span class='op'>(</span><span class='str'>&#39;&nbsp; &nbsp; &nbsp; &nbsp; _\n&#39;</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>c</span><span class='op'>.</span><span class='nam'>reset</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>startup_info</span><span class='op'>(</span><span class='nam'>beat</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_logging</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>socket_timeout</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>debug</span><span class='op'>(</span><span class='str'>&#39;Setting default socket timeout to %r&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>socket_timeout</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>socket</span><span class='op'>.</span><span class='nam'>setdefaulttimeout</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>socket_timeout</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>install_sync_handler</span><span class='op'>(</span><span class='nam'>beat</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>beat</span><span class='op'>.</span><span class='nam'>start</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>Exception</span> <span class='key'>as</span> <span class='nam'>exc</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>critical</span><span class='op'>(</span><span class='str'>&#39;beat raised exception %s: %r&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exc</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exc_info</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>init_loader</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Run the worker init handler.</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># (Usually imports task modules and such.)</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>init_worker</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>finalize</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>startup_info</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>beat</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>scheduler</span> <span class='op'>=</span> <span class='nam'>beat</span><span class='op'>.</span><span class='nam'>get_scheduler</span><span class='op'>(</span><span class='nam'>lazy</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>STARTUP_INFO_FMT</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conninfo</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>as_uri</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>logfile</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span> <span class='key'>or</span> <span class='str'>&#39;[stderr]&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loglevel</span><span class='op'>=</span><span class='nam'>LOG_LEVELS</span><span class='op'>[</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>]</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>qualname</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>scheduler</span><span class='op'>=</span><span class='nam'>qualname</span><span class='op'>(</span><span class='nam'>scheduler</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>scheduler_info</span><span class='op'>=</span><span class='nam'>scheduler</span><span class='op'>.</span><span class='nam'>info</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>hmax_interval</span><span class='op'>=</span><span class='nam'>humanize_seconds</span><span class='op'>(</span><span class='nam'>beat</span><span class='op'>.</span><span class='nam'>max_interval</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max_interval</span><span class='op'>=</span><span class='nam'>beat</span><span class='op'>.</span><span class='nam'>max_interval</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>set_process_title</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>arg_start</span> <span class='op'>=</span> <span class='str'>&#39;manage&#39;</span> <span class='key'>in</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span> <span class='key'>and</span> <span class='num'>2</span> <span class='key'>or</span> <span class='num'>1</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>set_process_title</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celery beat&#39;</span><span class='op'>,</span> <span class='nam'>info</span><span class='op'>=</span><span class='str'>&#39; &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>[</span><span class='nam'>arg_start</span><span class='op'>:</span><span class='op'>]</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>install_sync_handler</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>beat</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Install a `SIGTERM` + `SIGINT` handler that saves</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='pln'><span class='str'>&nbsp; &nbsp; &nbsp; &nbsp; the beat schedule.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_sync</span><span class='op'>(</span><span class='nam'>signum</span><span class='op'>,</span> <span class='nam'>frame</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>beat</span><span class='op'>.</span><span class='nam'>sync</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>SystemExit</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>.</span><span class='nam'>update</span><span class='op'>(</span><span class='nam'>SIGTERM</span><span class='op'>=</span><span class='nam'>_sync</span><span class='op'>,</span> <span class='nam'>SIGINT</span><span class='op'>=</span><span class='nam'>_sync</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 776
celery/tests/cover/celery_apps_worker.html

@@ -1,776 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.apps.worker: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.apps.worker</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            157 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>157 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>19 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='pln'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='pln'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='pln'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='pln'><a href='#n58'>58</a></p>
-<p id='n59' class='pln'><a href='#n59'>59</a></p>
-<p id='n60' class='pln'><a href='#n60'>60</a></p>
-<p id='n61' class='pln'><a href='#n61'>61</a></p>
-<p id='n62' class='pln'><a href='#n62'>62</a></p>
-<p id='n63' class='pln'><a href='#n63'>63</a></p>
-<p id='n64' class='pln'><a href='#n64'>64</a></p>
-<p id='n65' class='pln'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='pln'><a href='#n67'>67</a></p>
-<p id='n68' class='pln'><a href='#n68'>68</a></p>
-<p id='n69' class='pln'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='pln'><a href='#n71'>71</a></p>
-<p id='n72' class='pln'><a href='#n72'>72</a></p>
-<p id='n73' class='pln'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='pln'><a href='#n75'>75</a></p>
-<p id='n76' class='pln'><a href='#n76'>76</a></p>
-<p id='n77' class='pln'><a href='#n77'>77</a></p>
-<p id='n78' class='pln'><a href='#n78'>78</a></p>
-<p id='n79' class='pln'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='stm run hide_run'><a href='#n81'>81</a></p>
-<p id='n82' class='pln'><a href='#n82'>82</a></p>
-<p id='n83' class='pln'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='pln'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='stm run hide_run'><a href='#n87'>87</a></p>
-<p id='n88' class='pln'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='pln'><a href='#n91'>91</a></p>
-<p id='n92' class='pln'><a href='#n92'>92</a></p>
-<p id='n93' class='pln'><a href='#n93'>93</a></p>
-<p id='n94' class='stm run hide_run'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='stm run hide_run'><a href='#n98'>98</a></p>
-<p id='n99' class='pln'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='stm run hide_run'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='stm run hide_run'><a href='#n104'>104</a></p>
-<p id='n105' class='pln'><a href='#n105'>105</a></p>
-<p id='n106' class='pln'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='stm run hide_run'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='pln'><a href='#n112'>112</a></p>
-<p id='n113' class='pln'><a href='#n113'>113</a></p>
-<p id='n114' class='pln'><a href='#n114'>114</a></p>
-<p id='n115' class='pln'><a href='#n115'>115</a></p>
-<p id='n116' class='stm run hide_run'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='stm run hide_run'><a href='#n120'>120</a></p>
-<p id='n121' class='pln'><a href='#n121'>121</a></p>
-<p id='n122' class='stm run hide_run'><a href='#n122'>122</a></p>
-<p id='n123' class='stm run hide_run'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='pln'><a href='#n125'>125</a></p>
-<p id='n126' class='stm run hide_run'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='pln'><a href='#n128'>128</a></p>
-<p id='n129' class='pln'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='pln'><a href='#n131'>131</a></p>
-<p id='n132' class='pln'><a href='#n132'>132</a></p>
-<p id='n133' class='pln'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='pln'><a href='#n136'>136</a></p>
-<p id='n137' class='pln'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='stm run hide_run'><a href='#n139'>139</a></p>
-<p id='n140' class='stm run hide_run'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='stm run hide_run'><a href='#n144'>144</a></p>
-<p id='n145' class='pln'><a href='#n145'>145</a></p>
-<p id='n146' class='pln'><a href='#n146'>146</a></p>
-<p id='n147' class='pln'><a href='#n147'>147</a></p>
-<p id='n148' class='stm run hide_run'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-<p id='n150' class='pln'><a href='#n150'>150</a></p>
-<p id='n151' class='stm run hide_run'><a href='#n151'>151</a></p>
-<p id='n152' class='stm run hide_run'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='pln'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='stm run hide_run'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='stm run hide_run'><a href='#n163'>163</a></p>
-<p id='n164' class='stm run hide_run'><a href='#n164'>164</a></p>
-<p id='n165' class='stm run hide_run'><a href='#n165'>165</a></p>
-<p id='n166' class='pln'><a href='#n166'>166</a></p>
-<p id='n167' class='pln'><a href='#n167'>167</a></p>
-<p id='n168' class='stm run hide_run'><a href='#n168'>168</a></p>
-<p id='n169' class='stm run hide_run'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='pln'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='pln'><a href='#n173'>173</a></p>
-<p id='n174' class='stm run hide_run'><a href='#n174'>174</a></p>
-<p id='n175' class='stm run hide_run'><a href='#n175'>175</a></p>
-<p id='n176' class='stm run hide_run'><a href='#n176'>176</a></p>
-<p id='n177' class='stm run hide_run'><a href='#n177'>177</a></p>
-<p id='n178' class='stm run hide_run'><a href='#n178'>178</a></p>
-<p id='n179' class='pln'><a href='#n179'>179</a></p>
-<p id='n180' class='stm run hide_run'><a href='#n180'>180</a></p>
-<p id='n181' class='stm run hide_run'><a href='#n181'>181</a></p>
-<p id='n182' class='stm run hide_run'><a href='#n182'>182</a></p>
-<p id='n183' class='stm run hide_run'><a href='#n183'>183</a></p>
-<p id='n184' class='stm run hide_run'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='stm run hide_run'><a href='#n186'>186</a></p>
-<p id='n187' class='stm run hide_run'><a href='#n187'>187</a></p>
-<p id='n188' class='stm run hide_run'><a href='#n188'>188</a></p>
-<p id='n189' class='stm run hide_run'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='stm run hide_run'><a href='#n191'>191</a></p>
-<p id='n192' class='stm run hide_run'><a href='#n192'>192</a></p>
-<p id='n193' class='stm run hide_run'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='stm run hide_run'><a href='#n195'>195</a></p>
-<p id='n196' class='stm run hide_run'><a href='#n196'>196</a></p>
-<p id='n197' class='stm run hide_run'><a href='#n197'>197</a></p>
-<p id='n198' class='stm run hide_run'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='pln'><a href='#n203'>203</a></p>
-<p id='n204' class='pln'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='pln'><a href='#n206'>206</a></p>
-<p id='n207' class='pln'><a href='#n207'>207</a></p>
-<p id='n208' class='pln'><a href='#n208'>208</a></p>
-<p id='n209' class='pln'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='pln'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='stm run hide_run'><a href='#n213'>213</a></p>
-<p id='n214' class='stm run hide_run'><a href='#n214'>214</a></p>
-<p id='n215' class='stm run hide_run'><a href='#n215'>215</a></p>
-<p id='n216' class='stm run hide_run'><a href='#n216'>216</a></p>
-<p id='n217' class='stm run hide_run'><a href='#n217'>217</a></p>
-<p id='n218' class='pln'><a href='#n218'>218</a></p>
-<p id='n219' class='stm run hide_run'><a href='#n219'>219</a></p>
-<p id='n220' class='pln'><a href='#n220'>220</a></p>
-<p id='n221' class='stm run hide_run'><a href='#n221'>221</a></p>
-<p id='n222' class='stm run hide_run'><a href='#n222'>222</a></p>
-<p id='n223' class='pln'><a href='#n223'>223</a></p>
-<p id='n224' class='pln'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='pln'><a href='#n226'>226</a></p>
-<p id='n227' class='pln'><a href='#n227'>227</a></p>
-<p id='n228' class='pln'><a href='#n228'>228</a></p>
-<p id='n229' class='stm run hide_run'><a href='#n229'>229</a></p>
-<p id='n230' class='pln'><a href='#n230'>230</a></p>
-<p id='n231' class='pln'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='stm run hide_run'><a href='#n234'>234</a></p>
-<p id='n235' class='stm run hide_run'><a href='#n235'>235</a></p>
-<p id='n236' class='stm run hide_run'><a href='#n236'>236</a></p>
-<p id='n237' class='stm run hide_run'><a href='#n237'>237</a></p>
-<p id='n238' class='stm run hide_run'><a href='#n238'>238</a></p>
-<p id='n239' class='stm run hide_run'><a href='#n239'>239</a></p>
-<p id='n240' class='pln'><a href='#n240'>240</a></p>
-<p id='n241' class='stm run hide_run'><a href='#n241'>241</a></p>
-<p id='n242' class='pln'><a href='#n242'>242</a></p>
-<p id='n243' class='stm run hide_run'><a href='#n243'>243</a></p>
-<p id='n244' class='pln'><a href='#n244'>244</a></p>
-<p id='n245' class='stm run hide_run'><a href='#n245'>245</a></p>
-<p id='n246' class='stm run hide_run'><a href='#n246'>246</a></p>
-<p id='n247' class='pln'><a href='#n247'>247</a></p>
-<p id='n248' class='pln'><a href='#n248'>248</a></p>
-<p id='n249' class='pln'><a href='#n249'>249</a></p>
-<p id='n250' class='pln'><a href='#n250'>250</a></p>
-<p id='n251' class='pln'><a href='#n251'>251</a></p>
-<p id='n252' class='pln'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='pln'><a href='#n254'>254</a></p>
-<p id='n255' class='pln'><a href='#n255'>255</a></p>
-<p id='n256' class='stm run hide_run'><a href='#n256'>256</a></p>
-<p id='n257' class='stm run hide_run'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='stm run hide_run'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='stm run hide_run'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='stm run hide_run'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='pln'><a href='#n265'>265</a></p>
-<p id='n266' class='pln'><a href='#n266'>266</a></p>
-<p id='n267' class='stm run hide_run'><a href='#n267'>267</a></p>
-<p id='n268' class='stm run hide_run'><a href='#n268'>268</a></p>
-<p id='n269' class='stm run hide_run'><a href='#n269'>269</a></p>
-<p id='n270' class='stm run hide_run'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='pln'><a href='#n272'>272</a></p>
-<p id='n273' class='exc'><a href='#n273'>273</a></p>
-<p id='n274' class='exc'><a href='#n274'>274</a></p>
-<p id='n275' class='pln'><a href='#n275'>275</a></p>
-<p id='n276' class='pln'><a href='#n276'>276</a></p>
-<p id='n277' class='exc'><a href='#n277'>277</a></p>
-<p id='n278' class='exc'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='pln'><a href='#n280'>280</a></p>
-<p id='n281' class='pln'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='stm run hide_run'><a href='#n283'>283</a></p>
-<p id='n284' class='stm run hide_run'><a href='#n284'>284</a></p>
-<p id='n285' class='exc'><a href='#n285'>285</a></p>
-<p id='n286' class='exc'><a href='#n286'>286</a></p>
-<p id='n287' class='pln'><a href='#n287'>287</a></p>
-<p id='n288' class='pln'><a href='#n288'>288</a></p>
-<p id='n289' class='exc'><a href='#n289'>289</a></p>
-<p id='n290' class='exc'><a href='#n290'>290</a></p>
-<p id='n291' class='pln'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='stm run hide_run'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='stm run hide_run'><a href='#n295'>295</a></p>
-<p id='n296' class='pln'><a href='#n296'>296</a></p>
-<p id='n297' class='pln'><a href='#n297'>297</a></p>
-<p id='n298' class='stm run hide_run'><a href='#n298'>298</a></p>
-<p id='n299' class='pln'><a href='#n299'>299</a></p>
-<p id='n300' class='pln'><a href='#n300'>300</a></p>
-<p id='n301' class='stm run hide_run'><a href='#n301'>301</a></p>
-<p id='n302' class='pln'><a href='#n302'>302</a></p>
-<p id='n303' class='stm run hide_run'><a href='#n303'>303</a></p>
-<p id='n304' class='pln'><a href='#n304'>304</a></p>
-<p id='n305' class='stm run hide_run'><a href='#n305'>305</a></p>
-<p id='n306' class='stm run hide_run'><a href='#n306'>306</a></p>
-<p id='n307' class='stm run hide_run'><a href='#n307'>307</a></p>
-<p id='n308' class='stm run hide_run'><a href='#n308'>308</a></p>
-<p id='n309' class='stm run hide_run'><a href='#n309'>309</a></p>
-<p id='n310' class='stm run hide_run'><a href='#n310'>310</a></p>
-<p id='n311' class='stm run hide_run'><a href='#n311'>311</a></p>
-<p id='n312' class='pln'><a href='#n312'>312</a></p>
-<p id='n313' class='pln'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='pln'><a href='#n315'>315</a></p>
-<p id='n316' class='exc'><a href='#n316'>316</a></p>
-<p id='n317' class='exc'><a href='#n317'>317</a></p>
-<p id='n318' class='pln'><a href='#n318'>318</a></p>
-<p id='n319' class='stm run hide_run'><a href='#n319'>319</a></p>
-<p id='n320' class='pln'><a href='#n320'>320</a></p>
-<p id='n321' class='stm run hide_run'><a href='#n321'>321</a></p>
-<p id='n322' class='stm run hide_run'><a href='#n322'>322</a></p>
-<p id='n323' class='stm run hide_run'><a href='#n323'>323</a></p>
-<p id='n324' class='pln'><a href='#n324'>324</a></p>
-<p id='n325' class='pln'><a href='#n325'>325</a></p>
-<p id='n326' class='exc'><a href='#n326'>326</a></p>
-<p id='n327' class='pln'><a href='#n327'>327</a></p>
-<p id='n328' class='pln'><a href='#n328'>328</a></p>
-<p id='n329' class='exc'><a href='#n329'>329</a></p>
-<p id='n330' class='exc'><a href='#n330'>330</a></p>
-<p id='n331' class='exc'><a href='#n331'>331</a></p>
-<p id='n332' class='exc'><a href='#n332'>332</a></p>
-<p id='n333' class='pln'><a href='#n333'>333</a></p>
-<p id='n334' class='exc'><a href='#n334'>334</a></p>
-<p id='n335' class='exc'><a href='#n335'>335</a></p>
-<p id='n336' class='exc'><a href='#n336'>336</a></p>
-<p id='n337' class='exc'><a href='#n337'>337</a></p>
-<p id='n338' class='pln'><a href='#n338'>338</a></p>
-<p id='n339' class='pln'><a href='#n339'>339</a></p>
-<p id='n340' class='stm run hide_run'><a href='#n340'>340</a></p>
-<p id='n341' class='pln'><a href='#n341'>341</a></p>
-<p id='n342' class='stm run hide_run'><a href='#n342'>342</a></p>
-<p id='n343' class='stm run hide_run'><a href='#n343'>343</a></p>
-<p id='n344' class='stm run hide_run'><a href='#n344'>344</a></p>
-<p id='n345' class='pln'><a href='#n345'>345</a></p>
-<p id='n346' class='stm run hide_run'><a href='#n346'>346</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.apps.worker</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; This module is the &#39;program-version&#39; of :mod:`celery.worker`.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&nbsp; &nbsp; It does everything necessary to run that module</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='pln'><span class='str'>&nbsp; &nbsp; as an actual application, like installing signal handlers,</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='str'>&nbsp; &nbsp; platform tweaks, and so on.</span><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='op'>,</span> <span class='nam'>print_function</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>logging</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>os</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>platform</span> <span class='key'>as</span> <span class='nam'>_platform</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>warnings</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>functools</span> <span class='key'>import</span> <span class='nam'>partial</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>billiard</span> <span class='key'>import</span> <span class='nam'>current_process</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>encoding</span> <span class='key'>import</span> <span class='nam'>safe_str</span><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span> <span class='key'>import</span> <span class='nam'>VERSION_BANNER</span><span class='op'>,</span> <span class='nam'>platforms</span><span class='op'>,</span> <span class='nam'>signals</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>exceptions</span> <span class='key'>import</span> <span class='nam'>SystemTerminate</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>string</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>loaders</span><span class='op'>.</span><span class='nam'>app</span> <span class='key'>import</span> <span class='nam'>AppLoader</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>task</span> <span class='key'>import</span> <span class='nam'>trace</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span> <span class='key'>import</span> <span class='nam'>cry</span><span class='op'>,</span> <span class='nam'>isatty</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>qualname</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>log</span> <span class='key'>import</span> <span class='nam'>get_logger</span><span class='op'>,</span> <span class='nam'>in_sighandler</span><span class='op'>,</span> <span class='nam'>set_in_sighandler</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>text</span> <span class='key'>import</span> <span class='nam'>pluralize</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>worker</span> <span class='key'>import</span> <span class='nam'>WorkController</span><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'><span class='nam'>logger</span> <span class='op'>=</span> <span class='nam'>get_logger</span><span class='op'>(</span><span class='nam'>__name__</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='stm run hide_run'><span class='nam'>is_jython</span> <span class='op'>=</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>platform</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;java&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='stm run hide_run'><span class='nam'>is_pypy</span> <span class='op'>=</span> <span class='nam'>hasattr</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>,</span> <span class='str'>&#39;pypy_version_info&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>active_thread_count</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>threading</span> <span class='key'>import</span> <span class='nam'>enumerate</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>sum</span><span class='op'>(</span><span class='num'>1</span> <span class='key'>for</span> <span class='nam'>t</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>t</span><span class='op'>.</span><span class='nam'>name</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;Dummy-&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>safe_say</span><span class='op'>(</span><span class='nam'>msg</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;\n{0}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>msg</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>file</span><span class='op'>=</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stderr__</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='stm run hide_run'><span class='nam'>ARTLINES</span> <span class='op'>=</span> <span class='op'>[</span><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'>&nbsp; &nbsp; <span class='str'>&#39; --------------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;---- **** -----&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;--- * ***&nbsp; * --&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;-- * - **** ---&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;- ** ----------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;- ** ----------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;- ** ----------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t59' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;- ** ----------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t60' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;- *** --- * ---&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t61' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;-- ******* ----&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t62' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;--- ***** -----&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t63' class='pln'>&nbsp; &nbsp; <span class='str'>&#39; --------------&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t64' class='pln'><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t65' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t66' class='stm run hide_run'><span class='nam'>BANNER</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;\</span><span class='strut'>&nbsp;</span></p>
-<p id='t67' class='pln'><span class='str'>{hostname} v{version}</span><span class='strut'>&nbsp;</span></p>
-<p id='t68' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t69' class='pln'><span class='str'>{platform}</span><span class='strut'>&nbsp;</span></p>
-<p id='t70' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t71' class='pln'><span class='str'>[config]</span><span class='strut'>&nbsp;</span></p>
-<p id='t72' class='pln'><span class='str'>.&gt; broker:&nbsp; &nbsp; &nbsp; {conninfo}</span><span class='strut'>&nbsp;</span></p>
-<p id='t73' class='pln'><span class='str'>.&gt; app:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; {app}</span><span class='strut'>&nbsp;</span></p>
-<p id='t74' class='pln'><span class='str'>.&gt; concurrency: {concurrency}</span><span class='strut'>&nbsp;</span></p>
-<p id='t75' class='pln'><span class='str'>.&gt; events:&nbsp; &nbsp; &nbsp; {events}</span><span class='strut'>&nbsp;</span></p>
-<p id='t76' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t77' class='pln'><span class='str'>[queues]</span><span class='strut'>&nbsp;</span></p>
-<p id='t78' class='pln'><span class='str'>{queues}</span><span class='strut'>&nbsp;</span></p>
-<p id='t79' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t80' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t81' class='stm run hide_run'><span class='nam'>EXTRA_INFO_FMT</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t82' class='pln'><span class='str'>[tasks]</span><span class='strut'>&nbsp;</span></p>
-<p id='t83' class='pln'><span class='str'>{tasks}</span><span class='strut'>&nbsp;</span></p>
-<p id='t84' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t85' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t86' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t87' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Worker</span><span class='op'>(</span><span class='nam'>WorkController</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t88' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t89' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_before_init</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t90' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>trace</span><span class='op'>.</span><span class='nam'>setup_worker_optimizations</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t91' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t92' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># this signal can be used to set up configuration for</span><span class='strut'>&nbsp;</span></p>
-<p id='t93' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># workers by name.</span><span class='strut'>&nbsp;</span></p>
-<p id='t94' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>celeryd_init</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t95' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>hostname</span><span class='op'>,</span> <span class='nam'>instance</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>conf</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t96' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t97' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t98' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_after_init</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>purge</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>no_color</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t99' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>redirect_stdouts</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>redirect_stdouts_level</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t100' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t101' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t102' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;redirect_stdouts&#39;</span><span class='op'>,</span> <span class='nam'>redirect_stdouts</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t103' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t104' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts_level</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_getopt</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t105' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;redirect_stdouts_level&#39;</span><span class='op'>,</span> <span class='nam'>redirect_stdouts_level</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t106' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t107' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>super</span><span class='op'>(</span><span class='nam'>Worker</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>setup_defaults</span><span class='op'>(</span><span class='op'>**</span><span class='nam'>kwargs</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t108' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>purge</span> <span class='op'>=</span> <span class='nam'>purge</span><span class='strut'>&nbsp;</span></p>
-<p id='t109' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span> <span class='op'>=</span> <span class='nam'>no_color</span><span class='strut'>&nbsp;</span></p>
-<p id='t110' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_isatty</span> <span class='op'>=</span> <span class='nam'>isatty</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>stdout</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t111' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>.</span><span class='nam'>colored</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t112' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t113' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>enabled</span><span class='op'>=</span><span class='key'>not</span> <span class='nam'>no_color</span> <span class='key'>if</span> <span class='nam'>no_color</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span> <span class='key'>else</span> <span class='nam'>no_color</span><span class='strut'>&nbsp;</span></p>
-<p id='t114' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t115' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t116' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_init_blueprint</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t117' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_custom_logging</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>setup_logging</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t118' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># apply task execution optimizations</span><span class='strut'>&nbsp;</span></p>
-<p id='t119' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># -- This will finalize the app!</span><span class='strut'>&nbsp;</span></p>
-<p id='t120' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>trace</span><span class='op'>.</span><span class='nam'>setup_worker_optimizations</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t121' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t122' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_start</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t123' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_custom_logging</span> <span class='key'>and</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t124' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>.</span><span class='nam'>redirect_stdouts</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>redirect_stdouts_level</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t125' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t126' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>WorkController</span><span class='op'>.</span><span class='nam'>on_start</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t127' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t128' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># this signal can be used to e.g. change queues after</span><span class='strut'>&nbsp;</span></p>
-<p id='t129' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># the -Q option has been applied.</span><span class='strut'>&nbsp;</span></p>
-<p id='t130' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>celeryd_after_setup</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t131' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sender</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>hostname</span><span class='op'>,</span> <span class='nam'>instance</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>conf</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>conf</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t132' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t133' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t134' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>os</span><span class='op'>,</span> <span class='str'>&#39;getuid&#39;</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>)</span> <span class='key'>and</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>getuid</span><span class='op'>(</span><span class='op'>)</span> <span class='op'>==</span> <span class='num'>0</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t135' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>warnings</span><span class='op'>.</span><span class='nam'>warn</span><span class='op'>(</span><span class='nam'>RuntimeWarning</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t136' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;Running the worker with superuser privileges is discouraged!&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t137' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t138' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t139' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>purge</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t140' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>purge_messages</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t141' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t142' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Dump configuration to screen so we have some basic information</span><span class='strut'>&nbsp;</span></p>
-<p id='t143' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># for when users sends bug reports.</span><span class='strut'>&nbsp;</span></p>
-<p id='t144' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stdout__</span><span class='op'>.</span><span class='nam'>write</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t145' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>str</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span><span class='op'>.</span><span class='nam'>cyan</span><span class='op'>(</span><span class='str'>&#39; \n&#39;</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>startup_info</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span> <span class='op'>+</span><span class='strut'>&nbsp;</span></p>
-<p id='t146' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>str</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>colored</span><span class='op'>.</span><span class='nam'>reset</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>extra_info</span><span class='op'>(</span><span class='op'>)</span> <span class='key'>or</span> <span class='str'>&#39;&#39;</span><span class='op'>)</span><span class='op'>)</span> <span class='op'>+</span> <span class='str'>&#39;\n&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t147' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t148' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_process_status</span><span class='op'>(</span><span class='str'>&#39;-active-&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t149' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>install_platform_tweaks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t150' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t151' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>on_consumer_ready</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>consumer</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t152' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>signals</span><span class='op'>.</span><span class='nam'>worker_ready</span><span class='op'>.</span><span class='nam'>send</span><span class='op'>(</span><span class='nam'>sender</span><span class='op'>=</span><span class='nam'>consumer</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t153' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;{0} ready.&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>safe_str</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>hostname</span><span class='op'>)</span><span class='op'>,</span> <span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t154' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t155' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>setup_logging</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t156' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>colorize</span> <span class='key'>is</span> <span class='nam'>None</span> <span class='key'>and</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span> <span class='key'>is</span> <span class='key'>not</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t157' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>colorize</span> <span class='op'>=</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>no_color</span><span class='strut'>&nbsp;</span></p>
-<p id='t158' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>.</span><span class='nam'>setup</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t159' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logfile</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t160' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>redirect_stdouts</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>,</span> <span class='nam'>colorize</span><span class='op'>=</span><span class='nam'>colorize</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t161' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t162' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t163' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>purge_messages</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t164' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>count</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>control</span><span class='op'>.</span><span class='nam'>purge</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t165' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>print</span><span class='op'>(</span><span class='str'>&#39;purge: Erased {0} {1} from the queue.\n&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t166' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>count</span><span class='op'>,</span> <span class='nam'>pluralize</span><span class='op'>(</span><span class='nam'>count</span><span class='op'>,</span> <span class='str'>&#39;message&#39;</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t167' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t168' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>tasklist</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>include_builtins</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>,</span> <span class='nam'>sep</span><span class='op'>=</span><span class='str'>&#39;\n&#39;</span><span class='op'>,</span> <span class='nam'>int_</span><span class='op'>=</span><span class='str'>&#39;celery.&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t169' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>sep</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t170' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;&nbsp; . {0}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>task</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>task</span> <span class='key'>in</span> <span class='nam'>sorted</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>tasks</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t171' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='op'>(</span><span class='key'>not</span> <span class='nam'>task</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='nam'>int_</span><span class='op'>)</span> <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>include_builtins</span> <span class='key'>else</span> <span class='nam'>task</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t172' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t173' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t174' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>extra_info</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t175' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span> <span class='op'>&lt;=</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>INFO</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t176' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>include_builtins</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>loglevel</span> <span class='op'>&lt;=</span> <span class='nam'>logging</span><span class='op'>.</span><span class='nam'>DEBUG</span><span class='strut'>&nbsp;</span></p>
-<p id='t177' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>tasklist</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>tasklist</span><span class='op'>(</span><span class='nam'>include_builtins</span><span class='op'>=</span><span class='nam'>include_builtins</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t178' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>EXTRA_INFO_FMT</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>tasks</span><span class='op'>=</span><span class='nam'>tasklist</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t179' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t180' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>startup_info</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t181' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='strut'>&nbsp;</span></p>
-<p id='t182' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>concurrency</span> <span class='op'>=</span> <span class='nam'>string</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>concurrency</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t183' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>appr</span> <span class='op'>=</span> <span class='str'>&#39;{0}:0x{1:x}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>main</span> <span class='key'>or</span> <span class='str'>&#39;__main__&#39;</span><span class='op'>,</span> <span class='nam'>id</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t184' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>,</span> <span class='nam'>AppLoader</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t185' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loader</span> <span class='op'>=</span> <span class='nam'>qualname</span><span class='op'>(</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>loader</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t186' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>loader</span><span class='op'>.</span><span class='nam'>startswith</span><span class='op'>(</span><span class='str'>&#39;celery.loaders&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t187' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>loader</span> <span class='op'>=</span> <span class='nam'>loader</span><span class='op'>[</span><span class='num'>14</span><span class='op'>:</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t188' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>appr</span> <span class='op'>+=</span> <span class='str'>&#39; ({0})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>loader</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t189' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>autoscale</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t190' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>max</span><span class='op'>,</span> <span class='nam'>min</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>autoscale</span><span class='strut'>&nbsp;</span></p>
-<p id='t191' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>concurrency</span> <span class='op'>=</span> <span class='str'>&#39;{{min={0}, max={1}}}&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>min</span><span class='op'>,</span> <span class='nam'>max</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t192' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>pool</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>pool_cls</span><span class='strut'>&nbsp;</span></p>
-<p id='t193' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>isinstance</span><span class='op'>(</span><span class='nam'>pool</span><span class='op'>,</span> <span class='nam'>string_t</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t194' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>pool</span> <span class='op'>=</span> <span class='nam'>pool</span><span class='op'>.</span><span class='nam'>__module__</span><span class='strut'>&nbsp;</span></p>
-<p id='t195' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>concurrency</span> <span class='op'>+=</span> <span class='str'>&#39; ({0})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>pool</span><span class='op'>.</span><span class='nam'>split</span><span class='op'>(</span><span class='str'>&#39;.&#39;</span><span class='op'>)</span><span class='op'>[</span><span class='op'>-</span><span class='num'>1</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t196' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>events</span> <span class='op'>=</span> <span class='str'>&#39;ON&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t197' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>send_events</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t198' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>events</span> <span class='op'>=</span> <span class='str'>&#39;OFF (enable -E to monitor this worker)&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t199' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t200' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>banner</span> <span class='op'>=</span> <span class='nam'>BANNER</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t201' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>app</span><span class='op'>=</span><span class='nam'>appr</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t202' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>hostname</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>hostname</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t203' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>version</span><span class='op'>=</span><span class='nam'>VERSION_BANNER</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t204' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>conninfo</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>connection</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>as_uri</span><span class='op'>(</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t205' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>concurrency</span><span class='op'>=</span><span class='nam'>concurrency</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t206' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platform</span><span class='op'>=</span><span class='nam'>safe_str</span><span class='op'>(</span><span class='nam'>_platform</span><span class='op'>.</span><span class='nam'>platform</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t207' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>events</span><span class='op'>=</span><span class='nam'>events</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t208' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>queues</span><span class='op'>=</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>amqp</span><span class='op'>.</span><span class='nam'>queues</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>indent</span><span class='op'>=</span><span class='num'>0</span><span class='op'>,</span> <span class='nam'>indent_first</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t209' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='op'>.</span><span class='nam'>splitlines</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t210' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t211' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># integrate the ASCII art.</span><span class='strut'>&nbsp;</span></p>
-<p id='t212' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>for</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>x</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='nam'>banner</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t213' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t214' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>banner</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span> <span class='op'>=</span> <span class='str'>&#39; &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='op'>[</span><span class='nam'>ARTLINES</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>banner</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t215' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>IndexError</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t216' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>banner</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span> <span class='op'>=</span> <span class='str'>&#39; &#39;</span> <span class='op'>*</span> <span class='num'>16</span> <span class='op'>+</span> <span class='nam'>banner</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span><span class='strut'>&nbsp;</span></p>
-<p id='t217' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='str'>&#39;\n&#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>banner</span><span class='op'>)</span> <span class='op'>+</span> <span class='str'>&#39;\n&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t218' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t219' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>install_platform_tweaks</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>worker</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t220' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Install platform specific tweaks and workarounds.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t221' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>IS_OSX</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t222' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>self</span><span class='op'>.</span><span class='nam'>osx_proxy_detection_workaround</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t223' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t224' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># Install signal handler so SIGHUP restarts the worker.</span><span class='strut'>&nbsp;</span></p>
-<p id='t225' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_isatty</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t226' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># only install HUP handler if detached from terminal,</span><span class='strut'>&nbsp;</span></p>
-<p id='t227' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># so closing the terminal window doesn&#39;t restart the worker</span><span class='strut'>&nbsp;</span></p>
-<p id='t228' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># into the background.</span><span class='strut'>&nbsp;</span></p>
-<p id='t229' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>app</span><span class='op'>.</span><span class='nam'>IS_OSX</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t230' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># OS X can&#39;t exec from a process using threads.</span><span class='strut'>&nbsp;</span></p>
-<p id='t231' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># See http://github.com/celery/celery/issues#issue/152</span><span class='strut'>&nbsp;</span></p>
-<p id='t232' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_HUP_not_supported_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t233' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t234' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_worker_restart_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t235' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_worker_term_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t236' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_worker_term_hard_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t237' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_worker_int_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t238' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_cry_handler</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t239' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_rdb_handler</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t240' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t241' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>osx_proxy_detection_workaround</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t242' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;See http://github.com/celery/celery/issues#issue/161&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t243' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>setdefault</span><span class='op'>(</span><span class='str'>&#39;celery_dummy_proxy&#39;</span><span class='op'>,</span> <span class='str'>&#39;set_by_celeryd&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t244' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t245' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>set_process_status</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>info</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t246' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>set_mp_process_title</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t247' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;celeryd&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t248' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>info</span><span class='op'>=</span><span class='str'>&#39;{0} ({1})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>info</span><span class='op'>,</span> <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>strargv</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t249' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>hostname</span><span class='op'>=</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>hostname</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t250' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t251' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t252' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t253' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_shutdown_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;TERM&#39;</span><span class='op'>,</span> <span class='nam'>how</span><span class='op'>=</span><span class='str'>&#39;Warm&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t254' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>SystemExit</span><span class='op'>,</span> <span class='nam'>callback</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t255' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t256' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>_handle_request</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t257' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>in_sighandler</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t258' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>worker</span> <span class='key'>import</span> <span class='nam'>state</span><span class='strut'>&nbsp;</span></p>
-<p id='t259' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>current_process</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_name</span> <span class='op'>==</span> <span class='str'>&#39;MainProcess&#39;</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t260' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>callback</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t261' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>callback</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t262' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>safe_say</span><span class='op'>(</span><span class='str'>&#39;worker: {0} shutdown (MainProcess)&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>how</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t263' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>active_thread_count</span><span class='op'>(</span><span class='op'>)</span> <span class='op'>&gt;</span> <span class='num'>1</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t264' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>state</span><span class='op'>,</span> <span class='op'>{</span><span class='str'>&#39;Warm&#39;</span><span class='op'>:</span> <span class='str'>&#39;should_stop&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t265' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&#39;Cold&#39;</span><span class='op'>:</span> <span class='str'>&#39;should_terminate&#39;</span><span class='op'>}</span><span class='op'>[</span><span class='nam'>how</span><span class='op'>]</span><span class='op'>,</span> <span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t266' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>else</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t267' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>raise</span> <span class='nam'>exc</span><span class='op'>(</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t268' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>_handle_request</span><span class='op'>.</span><span class='nam'>__name__</span> <span class='op'>=</span> <span class='str'>&#39;worker_&#39;</span> <span class='op'>+</span> <span class='nam'>how</span><span class='strut'>&nbsp;</span></p>
-<p id='t269' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>[</span><span class='nam'>sig</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>_handle_request</span><span class='strut'>&nbsp;</span></p>
-<p id='t270' class='stm run hide_run'><span class='nam'>install_worker_term_handler</span> <span class='op'>=</span> <span class='nam'>partial</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t271' class='pln'>&nbsp; &nbsp; <span class='nam'>_shutdown_handler</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGTERM&#39;</span><span class='op'>,</span> <span class='nam'>how</span><span class='op'>=</span><span class='str'>&#39;Warm&#39;</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>SystemExit</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t272' class='pln'><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t273' class='exc'><span class='key'>if</span> <span class='key'>not</span> <span class='nam'>is_jython</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t274' class='exc'>&nbsp; &nbsp; <span class='nam'>install_worker_term_hard_handler</span> <span class='op'>=</span> <span class='nam'>partial</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t275' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_shutdown_handler</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGQUIT&#39;</span><span class='op'>,</span> <span class='nam'>how</span><span class='op'>=</span><span class='str'>&#39;Cold&#39;</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>=</span><span class='nam'>SystemTerminate</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t276' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t277' class='exc'><span class='key'>else</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t278' class='exc'>&nbsp; &nbsp; <span class='nam'>install_worker_term_handler</span> <span class='op'>=</span> <span class='xx'>\</span><span class='strut'>&nbsp;</span></p>
-<p id='t279' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>install_worker_term_hard_handler</span> <span class='op'>=</span> <span class='key'>lambda</span> <span class='op'>*</span><span class='nam'>a</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kw</span><span class='op'>:</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t280' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t281' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t282' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>on_SIGINT</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t283' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>safe_say</span><span class='op'>(</span><span class='str'>&#39;worker: Hitting Ctrl+C again will terminate all running tasks!&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t284' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>install_worker_term_hard_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGINT&#39;</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t285' class='exc'><span class='key'>if</span> <span class='key'>not</span> <span class='nam'>is_jython</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t286' class='exc'>&nbsp; &nbsp; <span class='nam'>install_worker_int_handler</span> <span class='op'>=</span> <span class='nam'>partial</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t287' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>_shutdown_handler</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGINT&#39;</span><span class='op'>,</span> <span class='nam'>callback</span><span class='op'>=</span><span class='nam'>on_SIGINT</span><span class='strut'>&nbsp;</span></p>
-<p id='t288' class='pln'>&nbsp; &nbsp; <span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t289' class='exc'><span class='key'>else</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t290' class='exc'>&nbsp; &nbsp; <span class='nam'>install_worker_int_handler</span> <span class='op'>=</span> <span class='key'>lambda</span> <span class='op'>*</span><span class='nam'>a</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>kw</span><span class='op'>:</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t291' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t292' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t293' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>_clone_current_worker</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t294' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>fork</span><span class='op'>(</span><span class='op'>)</span> <span class='op'>==</span> <span class='num'>0</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t295' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>close_open_fds</span><span class='op'>(</span><span class='op'>[</span><span class='strut'>&nbsp;</span></p>
-<p id='t296' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stdin__</span><span class='op'>,</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stdout__</span><span class='op'>,</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>__stderr__</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t297' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t298' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>os</span><span class='op'>.</span><span class='nam'>execv</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>executable</span><span class='op'>,</span> <span class='op'>[</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>executable</span><span class='op'>]</span> <span class='op'>+</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t299' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t300' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t301' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>install_worker_restart_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGHUP&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t302' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t303' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>restart_worker_sig_handler</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t304' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Signal handler restarting the current python program.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t305' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>set_in_sighandler</span><span class='op'>(</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t306' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>safe_say</span><span class='op'>(</span><span class='str'>&#39;Restarting celery worker ({0})&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='str'>&#39; &#39;</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>sys</span><span class='op'>.</span><span class='nam'>argv</span><span class='op'>)</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t307' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>import</span> <span class='nam'>atexit</span><span class='strut'>&nbsp;</span></p>
-<p id='t308' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>atexit</span><span class='op'>.</span><span class='nam'>register</span><span class='op'>(</span><span class='nam'>_clone_current_worker</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t309' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>worker</span> <span class='key'>import</span> <span class='nam'>state</span><span class='strut'>&nbsp;</span></p>
-<p id='t310' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>state</span><span class='op'>.</span><span class='nam'>should_stop</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'>&nbsp;</span></p>
-<p id='t311' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>[</span><span class='nam'>sig</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>restart_worker_sig_handler</span><span class='strut'>&nbsp;</span></p>
-<p id='t312' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t313' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t314' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>install_cry_handler</span><span class='op'>(</span><span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGUSR1&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t315' class='pln'>&nbsp; &nbsp; <span class='com'># Jython/PyPy does not have sys._current_frames</span><span class='strut'>&nbsp;</span></p>
-<p id='t316' class='exc'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>is_jython</span> <span class='key'>or</span> <span class='nam'>is_pypy</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t317' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span><span class='strut'>&nbsp;</span></p>
-<p id='t318' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t319' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>cry_handler</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t320' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Signal handler logging the stacktrace of all active threads.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t321' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>in_sighandler</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t322' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>safe_say</span><span class='op'>(</span><span class='nam'>cry</span><span class='op'>(</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t323' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>[</span><span class='nam'>sig</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>cry_handler</span><span class='strut'>&nbsp;</span></p>
-<p id='t324' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t325' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t326' class='exc'><span class='key'>def</span> <span class='nam'>install_rdb_handler</span><span class='op'>(</span><span class='nam'>envvar</span><span class='op'>=</span><span class='str'>&#39;CELERY_RDBSIG&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t327' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGUSR2&#39;</span><span class='op'>)</span><span class='op'>:</span>&nbsp; <span class='com'># pragma: no cover</span><span class='strut'>&nbsp;</span></p>
-<p id='t328' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t329' class='exc'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>rdb_handler</span><span class='op'>(</span><span class='op'>*</span><span class='nam'>args</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t330' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Signal handler setting a rdb breakpoint at the current frame.&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t331' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>in_sighandler</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t332' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>contrib</span><span class='op'>.</span><span class='nam'>rdb</span> <span class='key'>import</span> <span class='nam'>set_trace</span><span class='op'>,</span> <span class='nam'>_frame</span><span class='strut'>&nbsp;</span></p>
-<p id='t333' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='com'># gevent does not pass standard signal handler args</span><span class='strut'>&nbsp;</span></p>
-<p id='t334' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>frame</span> <span class='op'>=</span> <span class='nam'>args</span><span class='op'>[</span><span class='num'>1</span><span class='op'>]</span> <span class='key'>if</span> <span class='nam'>args</span> <span class='key'>else</span> <span class='nam'>_frame</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>f_back</span><span class='strut'>&nbsp;</span></p>
-<p id='t335' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>set_trace</span><span class='op'>(</span><span class='nam'>frame</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t336' class='exc'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>os</span><span class='op'>.</span><span class='nam'>environ</span><span class='op'>.</span><span class='nam'>get</span><span class='op'>(</span><span class='nam'>envvar</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t337' class='exc'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>[</span><span class='nam'>sig</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>rdb_handler</span><span class='strut'>&nbsp;</span></p>
-<p id='t338' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t339' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t340' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>install_HUP_not_supported_handler</span><span class='op'>(</span><span class='nam'>worker</span><span class='op'>,</span> <span class='nam'>sig</span><span class='op'>=</span><span class='str'>&#39;SIGHUP&#39;</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t341' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t342' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>def</span> <span class='nam'>warn_on_HUP_handler</span><span class='op'>(</span><span class='nam'>signum</span><span class='op'>,</span> <span class='nam'>frame</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t343' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>with</span> <span class='nam'>in_sighandler</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t344' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>safe_say</span><span class='op'>(</span><span class='str'>&#39;{sig} not supported: Restarting with {sig} is &#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t345' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class='str'>&#39;unstable on this platform!&#39;</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='nam'>sig</span><span class='op'>=</span><span class='nam'>sig</span><span class='op'>)</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t346' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>platforms</span><span class='op'>.</span><span class='nam'>signals</span><span class='op'>[</span><span class='nam'>sig</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>warn_on_HUP_handler</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 200
celery/tests/cover/celery_backends.html

@@ -1,200 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for celery.backends: 100%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery-1.4.3.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>celery.backends</b> :
-            <span class='pc_cov'>100%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            27 statements &nbsp;
-            <span class='run hide_run shortkey_r button_toggle_run'>27 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>0 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-                <span class='par run hide_run shortkey_p button_toggle_par'>0 partial</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span> &nbsp; toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span> &nbsp; next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span> &nbsp; (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span> &nbsp; (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='pln'><a href='#n3'>3</a></p>
-<p id='n4' class='pln'><a href='#n4'>4</a></p>
-<p id='n5' class='pln'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='pln'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='pln'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='pln'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='pln'><a href='#n24'>24</a></p>
-<p id='n25' class='stm run hide_run'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='pln'><a href='#n30'>30</a></p>
-<p id='n31' class='pln'><a href='#n31'>31</a></p>
-<p id='n32' class='pln'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='pln'><a href='#n34'>34</a></p>
-<p id='n35' class='pln'><a href='#n35'>35</a></p>
-<p id='n36' class='pln'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='pln'><a href='#n38'>38</a></p>
-<p id='n39' class='pln'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='pln'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='stm run hide_run'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='pln'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='stm run hide_run'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='com'># -*- coding: utf-8 -*-</span><span class='strut'>&nbsp;</span></p>
-<p id='t2' class='stm run hide_run'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t3' class='pln'><span class='str'>&nbsp; &nbsp; celery.backends</span><span class='strut'>&nbsp;</span></p>
-<p id='t4' class='pln'><span class='str'>&nbsp; &nbsp; ~~~~~~~~~~~~~~~</span><span class='strut'>&nbsp;</span></p>
-<p id='t5' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t6' class='pln'><span class='str'>&nbsp; &nbsp; Backend abstract factory (...did I just say that?) and alias definitions.</span><span class='strut'>&nbsp;</span></p>
-<p id='t7' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t8' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t9' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>__future__</span> <span class='key'>import</span> <span class='nam'>absolute_import</span><span class='strut'>&nbsp;</span></p>
-<p id='t10' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t11' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>sys</span><span class='strut'>&nbsp;</span></p>
-<p id='t12' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t13' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>kombu</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>url</span> <span class='key'>import</span> <span class='nam'>_parse_url</span><span class='strut'>&nbsp;</span></p>
-<p id='t14' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t15' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>local</span> <span class='key'>import</span> <span class='nam'>Proxy</span><span class='strut'>&nbsp;</span></p>
-<p id='t16' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>_state</span> <span class='key'>import</span> <span class='nam'>current_app</span><span class='strut'>&nbsp;</span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>five</span> <span class='key'>import</span> <span class='nam'>reraise</span><span class='strut'>&nbsp;</span></p>
-<p id='t18' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>imports</span> <span class='key'>import</span> <span class='nam'>symbol_by_name</span><span class='strut'>&nbsp;</span></p>
-<p id='t19' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>celery</span><span class='op'>.</span><span class='nam'>utils</span><span class='op'>.</span><span class='nam'>functional</span> <span class='key'>import</span> <span class='nam'>memoize</span><span class='strut'>&nbsp;</span></p>
-<p id='t20' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t21' class='stm run hide_run'><span class='nam'>UNKNOWN_BACKEND</span> <span class='op'>=</span> <span class='str'>&quot;&quot;&quot;\</span><span class='strut'>&nbsp;</span></p>
-<p id='t22' class='pln'><span class='str'>Unknown result backend: {0!r}.&nbsp; Did you spell that correctly? ({1!r})\</span><span class='strut'>&nbsp;</span></p>
-<p id='t23' class='pln'><span class='str'>&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t24' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t25' class='stm run hide_run'><span class='nam'>BACKEND_ALIASES</span> <span class='op'>=</span> <span class='op'>{</span><span class='strut'>&nbsp;</span></p>
-<p id='t26' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;amqp&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.amqp:AMQPBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t27' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;rpc&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.rpc.RPCBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t28' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;cache&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.cache:CacheBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t29' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;redis&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.redis:RedisBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t30' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;mongodb&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.mongodb:MongoBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t31' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;database&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.database:DatabaseBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t32' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;cassandra&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.cassandra:CassandraBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t33' class='pln'>&nbsp; &nbsp; <span class='str'>&#39;disabled&#39;</span><span class='op'>:</span> <span class='str'>&#39;celery.backends.base:DisabledBackend&#39;</span><span class='op'>,</span><span class='strut'>&nbsp;</span></p>
-<p id='t34' class='pln'><span class='op'>}</span><span class='strut'>&nbsp;</span></p>
-<p id='t35' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t36' class='pln'><span class='com'>#: deprecated alias to ``current_app.backend``.</span><span class='strut'>&nbsp;</span></p>
-<p id='t37' class='stm run hide_run'><span class='nam'>default_backend</span> <span class='op'>=</span> <span class='nam'>Proxy</span><span class='op'>(</span><span class='key'>lambda</span><span class='op'>:</span> <span class='nam'>current_app</span><span class='op'>.</span><span class='nam'>backend</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t38' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t39' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t40' class='stm run hide_run'><span class='op'>@</span><span class='nam'>memoize</span><span class='op'>(</span><span class='num'>100</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t41' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>get_backend_cls</span><span class='op'>(</span><span class='nam'>backend</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t42' class='pln'>&nbsp; &nbsp; <span class='str'>&quot;&quot;&quot;Get backend class by name/alias&quot;&quot;&quot;</span><span class='strut'>&nbsp;</span></p>
-<p id='t43' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>backend</span> <span class='op'>=</span> <span class='nam'>backend</span> <span class='key'>or</span> <span class='str'>&#39;disabled&#39;</span><span class='strut'>&nbsp;</span></p>
-<p id='t44' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>loader</span> <span class='op'>=</span> <span class='nam'>loader</span> <span class='key'>or</span> <span class='nam'>current_app</span><span class='op'>.</span><span class='nam'>loader</span><span class='strut'>&nbsp;</span></p>
-<p id='t45' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>aliases</span> <span class='op'>=</span> <span class='nam'>dict</span><span class='op'>(</span><span class='nam'>BACKEND_ALIASES</span><span class='op'>,</span> <span class='op'>**</span><span class='nam'>loader</span><span class='op'>.</span><span class='nam'>override_backends</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t46' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>try</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t47' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>symbol_by_name</span><span class='op'>(</span><span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>aliases</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t48' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>except</span> <span class='nam'>ValueError</span> <span class='key'>as</span> <span class='nam'>exc</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t49' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>reraise</span><span class='op'>(</span><span class='nam'>ValueError</span><span class='op'>,</span> <span class='nam'>ValueError</span><span class='op'>(</span><span class='nam'>UNKNOWN_BACKEND</span><span class='op'>.</span><span class='nam'>format</span><span class='op'>(</span><span class='strut'>&nbsp;</span></p>
-<p id='t50' class='pln'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>exc</span><span class='op'>)</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>exc_info</span><span class='op'>(</span><span class='op'>)</span><span class='op'>[</span><span class='num'>2</span><span class='op'>]</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t51' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t52' class='pln'><span class='strut'>&nbsp;</span></p>
-<p id='t53' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>get_backend_by_url</span><span class='op'>(</span><span class='nam'>backend</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t54' class='stm run hide_run'>&nbsp; &nbsp; <span class='nam'>url</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'>&nbsp;</span></p>
-<p id='t55' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>if</span> <span class='nam'>backend</span> <span class='key'>and</span> <span class='str'>&#39;://&#39;</span> <span class='key'>in</span> <span class='nam'>backend</span><span class='op'>:</span><span class='strut'>&nbsp;</span></p>
-<p id='t56' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>url</span> <span class='op'>=</span> <span class='nam'>backend</span><span class='strut'>&nbsp;</span></p>
-<p id='t57' class='stm run hide_run'>&nbsp; &nbsp; &nbsp; &nbsp; <span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>_</span><span class='op'>,</span> <span class='nam'>_</span> <span class='op'>=</span> <span class='nam'>_parse_url</span><span class='op'>(</span><span class='nam'>url</span><span class='op'>)</span><span class='strut'>&nbsp;</span></p>
-<p id='t58' class='stm run hide_run'>&nbsp; &nbsp; <span class='key'>return</span> <span class='nam'>get_backend_cls</span><span class='op'>(</span><span class='nam'>backend</span><span class='op'>,</span> <span class='nam'>loader</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>url</span><span class='strut'>&nbsp;</span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a> &nbsp; &nbsp; <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.6</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>

Некоторые файлы не были показаны из-за большого количества измененных файлов