瀏覽代碼

Merge branch 'master' into canvas_using_freeze

Ask Solem 12 年之前
父節點
當前提交
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
 *$py.class
 *~
-.*.sw[po]
+.*.sw[pon]
 dist/
 *.egg-info
 *.egg
@@ -20,4 +20,4 @@ Documentation/
 .project
 .pydevproject
 .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) 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
 the new BSD license).  The license is an OSI approved Open Source

+ 3 - 2
celery/__init__.py

@@ -2,7 +2,7 @@
 """Distributed Task Queue"""
 # :copyright: (c) 2009 - 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.
 # :license:   BSD (3 Clause), see LICENSE for more details.
 
 from __future__ import absolute_import
@@ -66,7 +66,8 @@ old_module, new_module = recreate_module(  # pragma: no cover
                           'subtask', 'xmap', 'xstarmap'],
         'celery.utils': ['uuid'],
     },
-    direct={'task': 'celery.task'},
+    direct={'task': 'celery.task',
+            'datastructures': 'celery.utils.datastructures'},
     __package__='celery', __file__=__file__,
     __path__=__path__, __doc__=__doc__, __version__=__version__,
     __author__=__author__, __contact__=__contact__,

+ 2 - 1
celery/app/base.py

@@ -213,11 +213,12 @@ class Celery(object):
 
     def _task_from_fun(self, fun, **options):
         base = options.pop('base', None) or self.Task
+        bind = options.pop('bind', False)
 
         T = type(fun.__name__, (base, ), dict({
             'app': self,
             'accept_magic_kwargs': False,
-            'run': staticmethod(fun),
+            'run': fun if bind else staticmethod(fun),
             '__doc__': fun.__doc__,
             '__module__': fun.__module__}, **options))()
         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
 
+from billiard.einfo import ExceptionInfo
+
 from celery import current_app
 from celery import states
 from celery._state import get_current_worker_task, _task_stack
 from celery.canvas import subtask
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import MaxRetriesExceededError, RetryTaskError
 from celery.five import class_property, items, with_metaclass
 from celery.result import EagerResult
@@ -364,8 +365,8 @@ class Task(object):
         """The body of the task executed by workers."""
         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):
         """Star argument version of :meth:`apply_async`.
@@ -744,7 +745,7 @@ class Task(object):
         :param args: Original 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.
 
         The return value of this handler is ignored.
@@ -763,7 +764,7 @@ class Task(object):
         :param kwargs: Original keyword arguments for the task
                        that failed.
 
-        :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`
+        :keyword einfo: :class:`~billiard.einfo.ExceptionInfo`
                         instance, containing the traceback.
 
         The return value of this handler is ignored.
@@ -781,7 +782,7 @@ class Task(object):
         :param kwargs: Original keyword arguments for the task
                        that failed.
 
-        :keyword einfo: :class:`~celery.datastructures.ExceptionInfo`
+        :keyword einfo: :class:`~billiard.einfo.ExceptionInfo`
                         instance, containing the traceback (if any).
 
         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.five import items
-from celery.datastructures import ConfigurationView
+from celery.utils.datastructures import ConfigurationView
 from celery.utils.text import pretty
 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.app import current_task
-from celery.datastructures import LRUCache
 from celery.exceptions import ChordError, TimeoutError, TaskRevokedError
 from celery.five import items
 from celery.result import from_serializable, GroupResult
 from celery.utils import timeutils
+from celery.utils.functional import LRUCache
 from celery.utils.serialization import (
     get_pickled_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 celery.datastructures import LRUCache
 from celery.exceptions import ImproperlyConfigured
+from celery.utils.functional import LRUCache
 
 from .base import KeyValueStoreBackend
 

+ 9 - 16
celery/bin/amqp.py

@@ -96,9 +96,7 @@ class Spec(object):
     def format_response(self, response):
         """Format the return value of this command in a human-friendly way."""
         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):
             return self.returns(response)
         return self.returns.format(response)
@@ -296,20 +294,15 @@ class AMQShell(cmd.Cmd):
         cmd, arg, line = self.parseline(line)
         if not line:
             return self.emptyline()
-        if cmd is None:
-            return self.default(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):
         """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):
         try:
             from pkg_resources import iter_entry_points
-        except ImportError:
+        except ImportError:  # pragma: no cover
             return
 
         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
     leaf = True
 
-    # used by :meth:`say_remote_control_reply`.
+    # used by :meth:`say_remote_command_reply`.
     show_body = True
     # used by :meth:`say_chat`.
     show_reply = True
@@ -470,21 +470,29 @@ class Command(object):
         opts = {}
         for opt in self.preload_options:
             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
         length = len(args)
         while index < length:
             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('-'):
-                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
         return acc
 
@@ -517,6 +525,7 @@ class Command(object):
             name, _, domain = host.partition('.')
             keys = dict({'%': '%', 'h': host, 'n': name, 'd': domain}, **keys)
             return match.sub(lambda m: keys[m.expand(expand)], s)
+        return s
 
     def _get_default_app(self, *args, **kwargs):
         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'),
     ('Utils', ['purge', 'list', 'migrate', 'call', 'result', 'report'], None),
 ]
-if DEBUG:
+if DEBUG:  # pragma: no cover
     command_classes.append(
         ('Debug', ['graph'], 'red'),
     )
@@ -330,15 +330,6 @@ class _RemoteControl(Command):
                              status=EX_UNAVAILABLE)
         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):
     """Inspect the worker at runtime.
@@ -763,7 +754,7 @@ class CeleryCommand(Command):
         return '\n'.join(ret).strip()
 
     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
             # that may have to be loaded as early as possible.
             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 celery.datastructures import DependencyGraph, GraphFormatter
 from celery.five import items
+from celery.utils.datastructures import DependencyGraph, GraphFormatter
 
 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.utils import symbol_by_name
 
-from .datastructures import DependencyGraph, GraphFormatter
 from .five import values, with_metaclass
+from .utils.datastructures import DependencyGraph, GraphFormatter
 from .utils.imports import instantiate, qualname
 from .utils.log import get_logger
 from .utils.threads import default_socket_timeout
@@ -208,9 +208,7 @@ class Blueprint(object):
         return self.steps[name]
 
     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):
         stream = deque(step.requires for step in values(steps))
@@ -312,7 +310,7 @@ class Step(object):
         pass
 
     def include_if(self, parent):
-        """An optional predicate that decided whether this
+        """An optional predicate that decides whether this
         step should be created."""
         return self.enabled
 

+ 2 - 2
celery/canvas.py

@@ -328,8 +328,8 @@ class _basemap(Signature):
         )
 
     @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):

+ 0 - 15
celery/concurrency/base.py

@@ -119,9 +119,6 @@ class BasePool(object):
     def on_close(self):
         pass
 
-    def init_callbacks(self, **kwargs):
-        pass
-
     def apply_async(self, target, args=[], kwargs={}, **options):
         """Equivalent of the :func:`apply` built-in function.
 
@@ -152,15 +149,3 @@ class BasePool(object):
     @property
     def num_processes(self):
         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,
 #: 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 side in ('thread', 'threading', 'socket'):
+    for side in ('thread', 'threading', 'socket'):  # pragma: no cover
         if getattr(mod, side, None):
             import warnings
             warnings.warn(RuntimeWarning(W_RACE % side))
 
 
 PATCHED = [0]
-if not EVENTLET_NOPATCH and not PATCHED[0]:
+if not EVENTLET_NOPATCH and not PATCHED[0]:  # pragma: no cover
     PATCHED[0] += 1
     import eventlet
     import eventlet.debug
     eventlet.monkey_patch()
-    eventlet.debug.hub_blocking_detection(EVENTLET_DBLOCK)
+    if EVENTLET_DBLOCK:
+        eventlet.debug.hub_blocking_detection(EVENTLET_DBLOCK)
 
 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
     from gevent import monkey, version_info
     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
         _signal = __import__('signal')
         _signal.signal = _gevent_signal
 
 try:
     from gevent import Timeout
-except ImportError:
+except ImportError:  # pragma: no cover
     Timeout = None  # noqa
 
 from time import time
@@ -36,7 +36,8 @@ from .base import apply_target, BasePool
 
 def apply_timeout(target, args=(), kwargs={}, callback=None,
                   accept_callback=None, pid=None, timeout=None,
-                  timeout_callback=None, **rest):
+                  timeout_callback=None, Timeout=Timeout,
+                  apply_target=apply_target, **rest):
     try:
         with Timeout(timeout):
             return apply_target(target, args, kwargs, callback,
@@ -51,9 +52,7 @@ class Schedule(timer2.Schedule):
         from gevent.greenlet import Greenlet, GreenletExit
 
         class _Greenlet(Greenlet):
-
-            def cancel(self):
-                self.kill()
+            cancel = Greenlet.kill
 
         self._Greenlet = _Greenlet
         self._GreenletExit = GreenletExit

+ 7 - 28
celery/concurrency/processes.py

@@ -22,6 +22,7 @@ from pickle import HIGHEST_PROTOCOL
 from time import sleep, time
 from weakref import ref
 
+from amqp.utils import promise
 from billiard import forking_enable
 from billiard import pool as _pool
 from billiard.exceptions import WorkerLostError
@@ -84,7 +85,7 @@ def process_initializer(app, hostname):
     # run once per process.
     app.loader.init_worker()
     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,
                   bool(os.environ.get('CELERY_LOG_REDIRECT', False)),
                   str(os.environ.get('CELERY_LOG_REDIRECT_LEVEL')))
@@ -102,15 +103,14 @@ def process_initializer(app, hostname):
     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
     writers = set() if writers is None else writers
     err = set() if err is None else err
     try:
         r, w, e = select.select(readers, writers, err, timeout)
         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
     except (select.error, socket.error) as exc:
         if get_errno(exc) == errno.EINTR:
@@ -130,22 +130,6 @@ def _select(self, readers=None, writers=None, err=None, timeout=0):
             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):
 
     def on_loop_start(self, pid):
@@ -178,7 +162,7 @@ class ResultHandler(_pool.ResultHandler):
                 else:
                     ready, task = False, None
             except (IOError, EOFError) as exc:
-                debug('result handler got %r -- exiting' % (exc, ))
+                debug('result handler got %r -- exiting', exc)
                 raise CoroStop()
 
             if self._state:
@@ -442,7 +426,7 @@ class AsynPool(_pool.Pool):
             if not readable:
                 break
             for fd in readable:
-                fileno_to_proc[fd]._reader.recv()
+                fileno_to_proc[fd].inq._reader.recv()
             sleep(0)
 
 
@@ -662,12 +646,7 @@ class TaskPool(BasePool):
                     try:
                         # keep track of what process the write operation
                         # 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:
                         # write was scheduled for this fd but the process
                         # 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
     def AsyncResult(cls, task_id):
         """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 filtered(body, message):
-        if tasks and message.payload['task'] not in tasks:
+        if tasks and body['task'] not in tasks:
             return
 
         return callback(body, message)

+ 4 - 2
celery/events/__init__.py

@@ -303,7 +303,9 @@ class EventReceiver(ConsumerMixin):
                                    connection=self.connection,
                                    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()
         clock = body.get('clock')
         if clock:
@@ -311,7 +313,7 @@ class EventReceiver(ConsumerMixin):
 
         if localize:
             try:
-                offset, timestamp = _TZGETTER(body)
+                offset, timestamp = tzfields(body)
             except KeyError:
                 pass
             else:

+ 2 - 3
celery/events/dumper.py

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

+ 9 - 8
celery/events/state.py

@@ -20,7 +20,7 @@ from __future__ import absolute_import
 
 import threading
 
-from heapq import heappush
+from heapq import heappush, heappop
 from itertools import islice
 from operator import itemgetter
 from time import time
@@ -28,8 +28,9 @@ from time import time
 from kombu.utils import kwdict
 
 from celery import states
-from celery.datastructures import AttributeDict, LRUCache
 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
 
 # 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))
 
     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):
         return tuple(self)
@@ -74,7 +75,7 @@ class _lamportinfo(tuple):
             # uses logical clock value first
             if A and B:  # use logical clock if available
                 if A == B:  # equal clocks use lower process id
-                    return self[3] < other[3]
+                    return self[2] < other[2]
                 return A < B
             return self[1] < other[1]  # ... or use timestamp
         except IndexError:
@@ -122,7 +123,7 @@ class Worker(Element):
     def update_heartbeat(self, received, timestamp):
         if not received or not timestamp:
             return
-        drift = received - timestamp
+        drift = abs(received - timestamp)
         if drift > HEARTBEAT_DRIFT_MAX:
             warn(DRIFT_WARNING, self.hostname, drift)
         heartbeats, hbmax = self.heartbeats, self.heartbeat_max
@@ -360,14 +361,14 @@ class State(object):
         worker, _ = self.get_or_create_worker(hostname)
         task, created = self.get_or_create_task(uuid)
         task.worker = worker
+        maxtasks = self.max_tasks_in_memory * 2
 
         taskheap = self._taskheap
         timestamp = fields.get('timestamp') or 0
         clock = 0 if type == 'sent' else fields.get('clock')
         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)
         if type == 'received':

+ 4 - 4
celery/five.py

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

+ 20 - 21
celery/fixups/django.py

@@ -4,12 +4,14 @@ import os
 import sys
 import warnings
 
+from kombu.utils import symbol_by_name
+
 from datetime import datetime
+from importlib import import_module
 
 from celery import signals
 from celery.exceptions import FixupWarning
 
-SETTINGS_MODULE = os.environ.get('DJANGO_SETTINGS_MODULE')
 ERR_NOT_INSTALLED = """\
 Environment variable DJANGO_SETTINGS_MODULE is defined
 but Django is not installed.  Will not apply Django fixups!
@@ -24,32 +26,36 @@ def _maybe_close_fd(fh):
         pass
 
 
-def fixup(app):
+def fixup(app, env='DJANGO_SETTINGS_MODULE'):
+    SETTINGS_MODULE = os.environ.get(env)
     if SETTINGS_MODULE:
         try:
             import django  # noqa
         except ImportError:
             warnings.warn(FixupWarning(ERR_NOT_INSTALLED))
-        return DjangoFixup(app).install()
+        else:
+            return DjangoFixup(app).install()
 
 
 class DjangoFixup(object):
     _db_recycles = 0
 
     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
         try:
-            from django.utils.timezone import now
+            self._now = symbol_by_name('django.utils.timezone:now')
         except ImportError:  # pre django-1.4
-            now = datetime.now  # noqa
+            self._now = datetime.now  # noqa
 
         # Database-related exceptions.
-        from django.db import DatabaseError
+        DatabaseError = symbol_by_name('django.db:DatabaseError')
         try:
             import MySQLdb as mysql
             _my_database_errors = (mysql.DatabaseError,
@@ -80,24 +86,17 @@ class DjangoFixup(object):
             _oracle_database_errors = ()  # noqa
 
         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:
             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 = (
             (DatabaseError, ) +
             _my_database_errors +
             _pg_database_errors +
             _lite_database_errors +
-            _oracle_database_errors,
+            _oracle_database_errors
         )
 
     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.encoding import safe_str
 
-from celery.datastructures import DictAttribute
 from celery.five import reraise, string_t
+from celery.utils.datastructures import DictAttribute
 from celery.utils.functional import maybe_list
 from celery.utils.imports import (
     import_from_cwd, symbol_by_name, NotAPackage, find_module,
@@ -221,9 +221,9 @@ class BaseLoader(object):
                                   use_tls=use_tls)
         mailer.send(message, fail_silently=fail_silently)
 
-    def read_configuration(self):
+    def read_configuration(self, env='CELERY_CONFIG_MODULE'):
         try:
-            custom_config = os.environ['CELERY_CONFIG_MODULE']
+            custom_config = os.environ[env]
         except KeyError:
             pass
         else:

+ 1 - 1
celery/loaders/default.py

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

+ 5 - 81
celery/local.py

@@ -14,7 +14,7 @@ from __future__ import absolute_import
 
 import importlib
 
-from .five import long_t, string, string_t
+from .five import long_t, string
 
 __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):
         return self.__getter(obj) if obj is not None else self
 
-    def __set__(self, obj, value):
-        raise AttributeError('readonly attribute')
-
     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):
     """Try to import and return module, or return
     None if the module does not exist."""
@@ -265,7 +188,7 @@ class Proxy(object):
     __oct__ = lambda x: oct(x._get_current_object())
     __hex__ = lambda x: hex(x._get_current_object())
     __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__()
     __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw)
     __reduce__ = lambda x: x._get_current_object().__reduce__()
@@ -307,7 +230,8 @@ class PromiseProxy(Proxy):
             for attr in _clean:
                 try:
                     object.__delattr__(self, attr)
-                except AttributeError:  # May mask errors so ignore
+                except AttributeError:  # pragma: no cover
+                    # May mask errors so ignore
                     pass
 
 

+ 24 - 6
celery/platforms.py

@@ -18,6 +18,7 @@ import signal as _signal
 import sys
 
 from billiard import current_process
+from kombu.utils.compat import get_errno
 from kombu.utils.encoding import safe_str
 from contextlib import contextmanager
 
@@ -51,13 +52,15 @@ Seems we're already running? (pid: {1})"""
 try:
     from io import UnsupportedOperation
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
-except ImportError:  # Py2
+except ImportError:  # pragma: no cover
+    # Py2
     FILENO_ERRORS = (AttributeError, )  # noqa
 
 try:
     from io import UnsupportedOperation
     FILENO_ERRORS = (AttributeError, UnsupportedOperation)
-except ImportError:  # Py2
+except ImportError:  # pragma: no cover
+    # Py2
     FILENO_ERRORS = (AttributeError, )  # noqa
 
 
@@ -504,11 +507,26 @@ def maybe_drop_privileges(uid=None, gid=None):
             gid = pwd.getpwuid(uid).pw_gid
         # Must set the GID before initgroups(), as setgid()
         # 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)
         initgroups(uid, gid)
 
         # at last:
         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:
         gid and setgid(gid)
 
@@ -557,14 +575,14 @@ class Signals(object):
 
         def arm_alarm(self, seconds):
             _signal.setitimer(_signal.ITIMER_REAL, seconds)
-    else:
+    else:  # pragma: no cover
         try:
             from itimer import alarm as _itimer_alarm  # noqa
         except ImportError:
 
             def arm_alarm(self, seconds):  # noqa
                 _signal.alarm(math.ceil(seconds))
-        else:
+        else:  # pragma: no cover
 
             def arm_alarm(self, seconds):      # noqa
                 return _itimer_alarm(seconds)  # noqa
@@ -674,7 +692,7 @@ else:
             '{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``."""
     if isinstance(n, string_t):
         return getattr(errno, n)
@@ -699,7 +717,7 @@ def ignore_errno(*errnos, **kwargs):
                     defaults to :exc:`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:
         yield
     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 states
 from .app import app_or_default
-from .datastructures import DependencyGraph, GraphFormatter
 from .exceptions import IncompleteStream, TimeoutError
 from .five import items, range, string_t
+from .utils.datastructures import DependencyGraph, GraphFormatter
 
 
 class ResultBase(object):
     """Base class for all results"""
 
+    #: Parent result (if part of a chain)
+    parent = None
+
 
 class AsyncResult(ResultBase):
     """Query task state.
@@ -46,9 +49,6 @@ class AsyncResult(ResultBase):
     #: The task result backend to use.
     backend = None
 
-    #: Parent result (if part of a chain)
-    parent = None
-
     def __init__(self, id, backend=None, task_name=None,
                  app=None, parent=None):
         self.app = app_or_default(app or self.app)
@@ -58,7 +58,7 @@ class AsyncResult(ResultBase):
         self.parent = parent
 
     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):
         """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)
     Result = app.AsyncResult
     if not isinstance(r, ResultBase):
-        id = parent = None
         res, nodes = r
         if nodes:
             return app.GroupResult(
                 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 r

+ 1 - 1
celery/schedules.py

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

+ 1 - 1
celery/task/__init__.py

@@ -23,7 +23,7 @@ __all__ = [
 
 STATICA_HACK = True
 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,
     # pylint, etc.) into knowing the types of these symbols, and what
     # they contain.

+ 8 - 12
celery/task/trace.py

@@ -21,6 +21,7 @@ import sys
 
 from warnings import warn
 
+from billiard.einfo import ExceptionInfo
 from kombu.utils import kwdict
 
 from celery import current_app
@@ -28,7 +29,6 @@ from celery import states, signals
 from celery._state import _task_stack
 from celery.app import set_default_app
 from celery.app.task import Task as BaseTask, Context
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import Ignore, RetryTaskError
 from celery.utils.log import get_logger
 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:
                         _logger.error('Process cleanup failed: %r', exc,
                                       exc_info=True)
+        except MemoryError:
+            raise
         except Exception as exc:
             if eager:
                 raise
@@ -333,13 +335,9 @@ def setup_worker_optimizations(app):
     _tasks = app._tasks
 
     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():
@@ -353,10 +351,8 @@ def reset_worker_optimizations():
         BaseTask.__call__ = _patched.pop('BaseTask.__call__')
     except KeyError:
         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():

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

@@ -4,7 +4,7 @@ from kombu import Exchange, Queue
 from mock import Mock
 
 from celery.app.amqp import Queues, TaskPublisher
-from celery.tests.utils import AppCase
+from celery.tests.case import 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.utils.imports import qualname
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 @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.tests import config
-from celery.tests.utils import (
+from celery.tests.case import (
     Case,
     mask_modules,
     platform_pyimp,
@@ -609,6 +609,14 @@ class test_App(Case):
                                  'hostname': 'lana'}
         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):
 

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

@@ -5,16 +5,15 @@ import errno
 from datetime import datetime, timedelta
 from mock import Mock, call, patch
 from nose import SkipTest
+from pickle import dumps, loads
 
-from celery import current_app
 from celery import beat
 from celery import task
 from celery.five import keys, string_t
 from celery.result import AsyncResult
 from celery.schedules import schedule
-from celery.task.base import Task
 from celery.utils import uuid
-from celery.tests.utils import Case, patch_settings
+from celery.tests.case import AppCase, patch_settings
 
 
 class Object(object):
@@ -46,7 +45,7 @@ class MockService(object):
         self.stopped = True
 
 
-class test_ScheduleEntry(Case):
+class test_ScheduleEntry(AppCase):
     Entry = beat.ScheduleEntry
 
     def create_entry(self, **kwargs):
@@ -112,7 +111,7 @@ class mScheduler(beat.Scheduler):
                           'args': args,
                           'kwargs': kwargs,
                           'options': options})
-        return AsyncResult(uuid())
+        return AsyncResult(uuid(), app=self.app)
 
 
 class mSchedulerSchedulingError(mScheduler):
@@ -143,17 +142,17 @@ always_due = mocked_schedule(True, 1)
 always_pending = mocked_schedule(False, 1)
 
 
-class test_Scheduler(Case):
+class test_Scheduler(AppCase):
 
     def test_custom_schedule_dict(self):
         custom = {'foo': 'bar'}
-        scheduler = mScheduler(schedule=custom, lazy=True)
+        scheduler = mScheduler(app=self.app, schedule=custom, lazy=True)
         self.assertIs(scheduler.data, custom)
 
     def test_apply_async_uses_registered_task_instances(self):
         through_task = [False]
 
-        class MockTask(Task):
+        class MockTask(self.app.Task):
 
             @classmethod
             def apply_async(cls, *args, **kwargs):
@@ -161,7 +160,7 @@ class test_Scheduler(Case):
 
         assert MockTask.name in MockTask._get_app().tasks
 
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.apply_async(scheduler.Entry(task=MockTask.name))
         self.assertTrue(through_task[0])
 
@@ -172,7 +171,7 @@ class test_Scheduler(Case):
             pass
         not_sync.apply_async = Mock()
 
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         s._do_sync = Mock()
         s.should_sync = Mock()
         s.should_sync.return_value = True
@@ -186,16 +185,16 @@ class test_Scheduler(Case):
 
     @patch('celery.app.base.Celery.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)
         send_task.assert_called_with('tasks.add', countdown=10)
 
     def test_info(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         self.assertIsInstance(scheduler.info, string_t)
 
     def test_maybe_entry(self):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         entry = s.Entry(name='add every', task='tasks.add')
         self.assertIs(s._maybe_entry(entry.name, entry), entry)
         self.assertTrue(s._maybe_entry('add every', {
@@ -203,13 +202,13 @@ class test_Scheduler(Case):
         }))
 
     def test_set_schedule(self):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         s.schedule = {'foo': 'bar'}
         self.assertEqual(s.data, {'foo': 'bar'})
 
     @patch('kombu.connection.Connection.ensure_connection')
     def test_ensure_connection_error_handler(self, ensure):
-        s = mScheduler()
+        s = mScheduler(app=self.app)
         self.assertTrue(s._ensure_connected())
         self.assertTrue(ensure.called)
         callback = ensure.call_args[0][0]
@@ -217,29 +216,32 @@ class test_Scheduler(Case):
         callback(KeyError(), 5)
 
     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={}):
-            s = mScheduler()
+            s = mScheduler(app=self.app)
             s.install_default_entries({})
             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={}):
-            s = mScheduler()
+            s = mScheduler(app=self.app)
             s.install_default_entries({})
             self.assertIn('celery.backend_cleanup', s.data)
-        current_app.backend.supports_autoexpire = True
+        self.app.backend.supports_autoexpire = True
         try:
-            with patch_settings(CELERY_TASK_RESULT_EXPIRES=31,
+            with patch_settings(self.app,
+                                CELERY_TASK_RESULT_EXPIRES=31,
                                 CELERYBEAT_SCHEDULE={}):
-                s = mScheduler()
+                s = mScheduler(app=self.app)
                 s.install_default_entries({})
                 self.assertNotIn('celery.backend_cleanup', s.data)
         finally:
-            current_app.backend.supports_autoexpire = False
+            self.app.backend.supports_autoexpire = False
 
     def test_due_tick(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_due_tick',
                       schedule=always_due,
                       args=(1, 2),
@@ -248,33 +250,33 @@ class test_Scheduler(Case):
 
     @patch('celery.beat.error')
     def test_due_tick_SchedulingError(self, error):
-        scheduler = mSchedulerSchedulingError()
+        scheduler = mSchedulerSchedulingError(app=self.app)
         scheduler.add(name='test_due_tick_SchedulingError',
                       schedule=always_due)
         self.assertEqual(scheduler.tick(), 1)
         self.assertTrue(error.called)
 
     def test_due_tick_RuntimeError(self):
-        scheduler = mSchedulerRuntimeError()
+        scheduler = mSchedulerRuntimeError(app=self.app)
         scheduler.add(name='test_due_tick_RuntimeError',
                       schedule=always_due)
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
 
     def test_pending_tick(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_pending_tick',
                       schedule=always_pending)
         self.assertEqual(scheduler.tick(), 1)
 
     def test_honors_max_interval(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         maxi = scheduler.max_interval
         scheduler.add(name='test_honors_max_interval',
                       schedule=mocked_schedule(False, maxi * 4))
         self.assertEqual(scheduler.tick(), maxi)
 
     def test_ticks(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         nums = [600, 300, 650, 120, 250, 36]
         s = dict(('test_ticks%s' % i,
                  {'schedule': mocked_schedule(False, j)})
@@ -283,20 +285,20 @@ class test_Scheduler(Case):
         self.assertEqual(scheduler.tick(), min(nums))
 
     def test_schedule_no_remain(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.add(name='test_schedule_no_remain',
                       schedule=mocked_schedule(False, None))
         self.assertEqual(scheduler.tick(), scheduler.max_interval)
 
     def test_interface(self):
-        scheduler = mScheduler()
+        scheduler = mScheduler(app=self.app)
         scheduler.sync()
         scheduler.setup_schedule()
         scheduler.close()
 
     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)},
                             'bar': {'schedule': mocked_schedule(True, 20)}})
         b.update_from_dict({'bar': {'schedule': mocked_schedule(True, 40)},
@@ -329,11 +331,12 @@ def create_persistent_scheduler(shelv=None):
     return MockPersistentScheduler, shelv
 
 
-class test_PersistentScheduler(Case):
+class test_PersistentScheduler(AppCase):
 
     @patch('os.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()
         remove.assert_has_calls(
             [call('schedule' + suffix) for suffix in s.known_suffixes]
@@ -347,7 +350,8 @@ class test_PersistentScheduler(Case):
             s._remove_db()
 
     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()
         s._remove_db = Mock()
 
@@ -362,6 +366,18 @@ class test_PersistentScheduler(Case):
         s._store = {'__version__': 1}
         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):
         s = create_persistent_scheduler()[0](schedule_filename='schedule')
         s._store = {'entries': {}}
@@ -370,11 +386,15 @@ class test_PersistentScheduler(Case):
         self.assertDictEqual(s._store['entries'], s.schedule)
 
 
-class test_Service(Case):
+class test_Service(AppCase):
 
     def get_service(self):
         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):
         s, sh = self.get_service()
@@ -425,7 +445,7 @@ class test_Service(Case):
         self.assertTrue(s._is_shutdown.isSet())
 
 
-class test_EmbeddedService(Case):
+class test_EmbeddedService(AppCase):
 
     def test_start_stop_process(self):
         try:
@@ -466,3 +486,24 @@ class test_EmbeddedService(Case):
 
         s.stop()
         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 celery import current_app as app, group, task, chord
+from celery import group, shared_task, chord
 from celery.app import builtins
 from celery.canvas import Signature
 from celery.five import range
 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):
     return x + y
 
 
-@task()
+@shared_task()
 def xsum(x):
     return sum(x)
 
 
-class test_backend_cleanup(Case):
+class test_backend_cleanup(AppCase):
 
     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:
-            cleanup_task = builtins.add_backend_cleanup_task(app)
+            cleanup_task = builtins.add_backend_cleanup_task(self.app)
             cleanup_task()
-            self.assertTrue(app.backend.cleanup.called)
+            self.assertTrue(self.app.backend.cleanup.called)
         finally:
-            app.backend = prev
+            self.app.backend = prev
 
 
-class test_map(Case):
+class test_map(AppCase):
 
     def test_run(self):
 
-        @app.task()
+        @self.app.task()
         def map_mul(x):
             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])
 
 
-class test_starmap(Case):
+class test_starmap(AppCase):
 
     def test_run(self):
 
-        @app.task()
+        @self.app.task()
         def smap_mul(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])
 
 
-class test_chunks(Case):
+class test_chunks(AppCase):
 
     @patch('celery.canvas.chunks.apply_chunks')
     def test_run(self, apply_chunks):
 
-        @app.task()
+        @self.app.task()
         def chunks_mul(l):
             return l
 
-        app.tasks['celery.chunks'](
+        self.app.tasks['celery.chunks'](
             chunks_mul, [(2, 2), (4, 4), (8, 8)], 1,
         )
         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):
         self.task.apply = Mock()
-        app.conf.CELERY_ALWAYS_EAGER = True
+        self.app.conf.CELERY_ALWAYS_EAGER = True
         try:
             self.task.apply_async()
         finally:
-            app.conf.CELERY_ALWAYS_EAGER = False
+            self.app.conf.CELERY_ALWAYS_EAGER = False
         self.assertTrue(self.task.apply.called)
 
     def test_apply(self):
@@ -125,14 +129,14 @@ class test_group(Case):
             _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):
         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')])
 
 
-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):
         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')
 
     def test_apply_eager(self):
-        app.conf.CELERY_ALWAYS_EAGER = True
+        self.app.conf.CELERY_ALWAYS_EAGER = True
         try:
             x = chord([add.s(i, i) for i in range(10)], body=xsum.s())
             r = x.apply_async()
             self.assertEqual(r.get(), 90)
-
         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 celery.tests.utils import Case
+from celery.tests.case import Case
 
 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.task import task
 from celery.utils import uuid
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 @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.tests.utils import Case, pypy_version, sys_platform
+from celery.tests.case import Case, pypy_version, sys_platform
 
 
 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 celery import loaders
-from celery.app import app_or_default
 from celery.exceptions import (
     NotConfigured,
     CPendingDeprecationWarning,
@@ -18,7 +17,7 @@ from celery.loaders.app import AppLoader
 from celery.utils.imports import NotAPackage
 from celery.utils.mail import SendmailWarning
 
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 class DummyLoader(base.BaseLoader):
@@ -47,7 +46,7 @@ class test_loaders(AppCase):
             self.assertIs(loaders.load_settings(), self.app.conf)
 
 
-class test_LoaderBase(Case):
+class test_LoaderBase(AppCase):
     message_options = {'subject': 'Subject',
                        'body': 'Body',
                        'sender': 'x@x.com',
@@ -58,14 +57,31 @@ class test_LoaderBase(Case):
                       'password': 'qwerty',
                       '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):
         self.loader.on_task_init('foo.task', 'feedface-cafebabe')
         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):
         self.assertEqual(sys, self.loader.import_task_module('sys'))
 
@@ -166,6 +182,8 @@ class test_DefaultLoader(Case):
         l = default.Loader()
         with self.assertWarnsRegex(NotConfigured, r'make sure it exists'):
             l.read_configuration()
+        default.C_WNOCONF = False
+        l.read_configuration()
 
     def test_read_configuration(self):
         from types import ModuleType
@@ -222,10 +240,9 @@ class test_DefaultLoader(Case):
         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)
 
     def test_on_worker_init(self):
@@ -237,3 +254,30 @@ class test_AppLoader(Case):
             self.assertIn('subprocess', sys.modules)
         finally:
             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 nose import SkipTest
 
-from celery import current_app
 from celery import signals
 from celery.app.log import Logging, TaskFormatter
 from celery.utils.log import LoggingProxy
@@ -17,13 +16,13 @@ from celery.utils.log import (
     ColorFormatter,
     logger as base_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,
 )
 
-log = current_app.log
-
 
 class test_TaskFormatter(Case):
 
@@ -64,6 +63,15 @@ class test_ColorFormatter(Case):
         if sys.version_info[0] == 2:
             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')
     def test_format_raises(self, safe_str):
         x = ColorFormatter('HELLO')
@@ -110,7 +118,7 @@ class test_ColorFormatter(Case):
 class test_default_logger(AppCase):
 
     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
         signals.setup_logging.receivers[:] = []
         Logging._setup = False
@@ -124,12 +132,12 @@ class test_default_logger(AppCase):
         self.assertIs(logger.parent, logging.root)
 
     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):
         self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = True
         try:
-            log.setup_logging_subsystem()
+            self.app.log.setup_logging_subsystem()
         finally:
             self.app.conf.CELERYD_HIJACK_ROOT_LOGGER = False
 
@@ -142,14 +150,14 @@ class test_default_logger(AppCase):
         logger.handlers[:] = []
 
     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):
         from celery.utils import log as logtools
         mputil, logtools.mputil = logtools.mputil, None
         try:
-            log.setup_logging_subsystem()
+            self.app.log.setup_logging_subsystem()
         finally:
             logtools.mputil = mputil
 
@@ -203,11 +211,14 @@ class test_default_logger(AppCase):
                                    root=False)
         try:
             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')
                 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:
             sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
 
@@ -231,6 +242,11 @@ class test_default_logger(AppCase):
             p.close()
             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):
         logger = self.setup_logger(loglevel=logging.ERROR, logfile=None,
                                    root=False)
@@ -250,7 +266,7 @@ class test_task_logger(test_default_logger):
         logging.root.manager.loggerDict.pop(logger.name, None)
         self.uid = uuid()
 
-        @current_app.task
+        @self.app.task
         def test_task():
             pass
         self.get_logger().handlers = []
@@ -263,12 +279,24 @@ class test_task_logger(test_default_logger):
         _task_stack.pop()
 
     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):
         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):
     _records = None
 

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

@@ -1,19 +1,20 @@
 from __future__ import absolute_import
 
-from functools import wraps
+from contextlib import contextmanager
 
 from kombu import Exchange
 from kombu.utils.functional import maybe_promise
 
-from celery import current_app
 from celery.app import routes
 from celery.exceptions import QueueNotFound
 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()
@@ -21,72 +22,70 @@ def mytask():
     pass
 
 
-def E(queues):
+def E(app, queues):
     def expand(answer):
-        return Router([], queues).expand_destination(answer)
+        return Router(app, [], queues).expand_destination(answer)
     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):
 
-    @with_queues(foo=a_queue, bar=b_queue)
     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):
-        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):
-        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'}})
         with self.assertRaises(QueueNotFound):
             expand(route.route_for_task('a'))
@@ -95,61 +94,66 @@ class test_MapRoute(RouteCase):
 class test_lookup_route(RouteCase):
 
     def test_init_queues(self):
-        router = Router(queues=None)
+        router = Router(self.app, queues=None)
         self.assertDictEqual(router.queues, {})
 
-    @with_queues(foo=a_queue, bar=b_queue)
     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):
-        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):
-        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):
-        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):
-        from celery.datastructures import LRUCache
         o = object()
         R = [{'foo': 'bar'},
-             'celery.datastructures.LRUCache', o]
+             'celery.utils.functional.LRUCache', o]
         p = routes.prepare(R)
         self.assertIsInstance(p[0], routes.MapRoute)
         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.app.utils import Settings, bugreport
 
-from celery.tests.utils import AppCase, Case, Mock
+from celery.tests.case import AppCase, Case, Mock
 
 
 class TestSettings(Case):

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

@@ -7,18 +7,18 @@ from contextlib import contextmanager
 from datetime import timedelta
 from pickle import dumps, loads
 
+from billiard.einfo import ExceptionInfo
 from mock import patch
 
 from celery import current_app
 from celery import states
 from celery.app import app_or_default
 from celery.backends.amqp import AMQPBackend
-from celery.datastructures import ExceptionInfo
 from celery.exceptions import TimeoutError
 from celery.five import Empty, Queue, range
 from celery.utils import uuid
 
-from celery.tests.utils import AppCase, sleepdeprived, Mock
+from celery.tests.case import AppCase, sleepdeprived, Mock
 
 
 class SomeClass(object):
@@ -212,8 +212,10 @@ class test_AMQPBackend(AppCase):
             results.queue.clear()
             assert not results.qsize()
             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):
         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.backends.amqp import AMQPBackend
 from celery.backends.cache import CacheBackend
-from celery.tests.utils import Case
+from celery.tests.case import 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 nose import SkipTest
 
-from billiard.einfo import Traceback
-
 from celery import current_app
 from celery.exceptions import ChordError
 from celery.five import items, range
@@ -27,7 +25,7 @@ from celery.backends.base import (
 )
 from celery.utils import uuid
 
-from celery.tests.utils import AppCase, Case
+from celery.tests.case import AppCase, Case
 
 
 class wrapobject(object):
@@ -81,7 +79,7 @@ class test_exception_pickle(Case):
     def test_oldstyle(self):
         if Oldstyle is None:
             raise SkipTest('py3k does not support old style classes')
-        self.assertIsNone(fnpe(Oldstyle()))
+        self.assertTrue(fnpe(Oldstyle()))
 
     def test_BaseException(self):
         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.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):
@@ -38,7 +38,7 @@ class test_CacheBackend(AppCase):
         )
         try:
             with self.assertRaises(ImproperlyConfigured):
-                tb = CacheBackend(backend=None, app=self.app)
+                CacheBackend(backend=None, app=self.app)
         finally:
             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 states
 from celery.exceptions import ImproperlyConfigured
-from celery.tests.utils import AppCase, mock_module
+from celery.tests.case import AppCase, mock_module
 
 
 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.utils import uuid
 
-from celery.tests.utils import (
+from celery.tests.case import (
     Case,
     mask_modules,
     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.mongodb import MongoBackend, Bunch, pymongo
 from celery.exceptions import ImproperlyConfigured
-from celery.tests.utils import AppCase
+from celery.tests.case import AppCase
 
 COLLECTION = 'taskmeta_celery'
 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 states
-from celery.datastructures import AttributeDict
 from celery.exceptions import ImproperlyConfigured
 from celery.result import AsyncResult
 from celery.task import subtask
+from celery.utils.datastructures import AttributeDict
 from celery.utils.timeutils import timedelta_seconds
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 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 celery import states
 from celery.backends.rpc import RPCBackend
-from celery.utils import uuid
 from celery._state import _task_stack
 
-from celery.tests.utils import AppCase, Mock
+from celery.tests.case import AppCase, Mock
 
 
 class test_RPCBackend(AppCase):
@@ -75,4 +73,3 @@ class test_RPCBackend(AppCase):
         self.assertEqual(ex.delivery_mode, 1)
         self.assertFalse(ex.durable)
         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,
 )
 
-from celery.tests.utils import AppCase, WhateverIO
+from celery.tests.case import AppCase, WhateverIO
 
 
 class test_AMQShell(AppCase):
@@ -36,6 +36,11 @@ class test_AMQShell(AppCase):
     def RV(self):
         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):
         self.shell.onecmd('ns.cmd arg')
         self.assertIn('unknown syntax', self.fh.getvalue())
@@ -52,6 +57,15 @@ class test_AMQShell(AppCase):
         self.shell.onecmd('help foo.baz')
         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):
         with self.assertRaises(SystemExit):
             self.shell.onecmd('exit')

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

@@ -2,10 +2,15 @@ from __future__ import absolute_import
 
 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):
@@ -31,6 +36,47 @@ class MockCommand(Command):
         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):
 
     def test_get_options(self):
@@ -38,6 +84,48 @@ class test_Command(AppCase):
         cmd.option_list = (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):
         with self.assertRaises(NotImplementedError):
             Command().run()
@@ -101,6 +189,92 @@ class test_Command(AppCase):
         cmd.setup_app_from_commandline(['--app=%s' % (app, ),
                                         '--loglevel=INFO'])
         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):
         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.apps import beat as beatapp
 
-from celery.tests.utils import AppCase, Mock
+from celery.tests.case import AppCase, Mock
 
 
 class MockedShelveModule(object):
@@ -79,7 +79,6 @@ class test_Beat(AppCase):
         self.assertTrue(app.log.setup.called)
         self.assertEqual(app.log.setup.call_args[1]['colorize'], False)
 
-
     def test_init_loader(self):
         b = beatapp.Beat()
         b.init_loader()

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

@@ -17,16 +17,20 @@ from celery.bin.celery import (
     purge,
     result,
     inspect,
+    control,
     status,
     migrate,
     help,
     report,
     CeleryCommand,
     determine_exit_status,
+    multi,
     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()
@@ -204,17 +208,21 @@ class test_purge(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):
@@ -292,6 +300,28 @@ class test_CeleryCommand(AppCase):
         with self.assertRaises(SystemExit):
             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):
         self.assertEqual(determine_exit_status('true'), EX_OK)
         self.assertEqual(determine_exit_status(''), EX_FAILURE)
@@ -335,12 +365,83 @@ class test_CeleryCommand(AppCase):
             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):
 
     def test_usage(self):
         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')
     def test_run(self, real):
         out = WhateverIO()
@@ -370,14 +471,101 @@ class test_inspect(AppCase):
         out.seek(0)
         out.truncate()
         i.quiet = True
-        i.say('<-', 'hello')
+        i.say_chat('<-', 'hello')
         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):
 
     @patch('celery.bin.celery.CeleryCommand')
     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()
-        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,
 )
 
-from celery.tests.utils import Case, override_stdouts
+from celery.tests.case import Case, override_stdouts
 
 
 if not current_app.IS_WINDOWS:

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

@@ -1,6 +1,6 @@
 from __future__ import absolute_import
 
-from mock import patch
+from mock import Mock, patch
 from time import time
 
 from celery.events.dumper import (
@@ -9,7 +9,7 @@ from celery.events.dumper import (
     evdump,
 )
 
-from celery.tests.utils import Case, WhateverIO
+from celery.tests.case import Case, WhateverIO
 
 
 class test_Dumper(Case):
@@ -45,3 +45,25 @@ class test_Dumper(Case):
     def test_evdump(self, capture):
         capture.side_effect = KeyboardInterrupt()
         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.bin import events
 
-from celery.tests.utils import Case, patch
+from celery.tests.case import Case, _old_patch as patch
 
 
 class MockCommand(object):

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

@@ -19,7 +19,7 @@ from celery.bin.multi import (
     __doc__ as doc,
 )
 
-from celery.tests.utils import Case, WhateverIO
+from celery.tests.case import Case, WhateverIO
 
 
 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.worker import state
 
-from celery.tests.utils import (
+from celery.tests.case import (
     AppCase,
     WhateverIO,
     skip_if_pypy,
@@ -103,6 +103,26 @@ class test_Worker(WorkerAppCase):
         with self.assertRaises(ImportError):
             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
     def test_invalid_loglevel_gives_error(self):
         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
 
 from contextlib import contextmanager
+from datetime import datetime, timedelta
 from functools import partial, wraps
 from types import ModuleType
 
-import mock
+try:
+    from unittest import mock
+except ImportError:
+    import mock
 from nose import SkipTest
 from kombu.log import NullHandler
 from kombu.utils import nested
@@ -33,6 +37,9 @@ from celery.five import (
 )
 from celery.utils.functional import noop
 
+patch = mock.patch
+call = mock.call
+
 
 class Mock(mock.Mock):
 
@@ -396,7 +403,7 @@ def override_stdouts():
         sys.stderr = sys.__stderr__ = prev_err
 
 
-def patch(module, name, mocked):
+def _old_patch(module, name, mocked):
     module = importlib.import_module(module)
 
     def _patch(fun):
@@ -464,7 +471,8 @@ def reset_modules(*modules):
 def patch_modules(*modules):
     prev = {}
     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:
         yield
     finally:
@@ -525,7 +533,7 @@ def mock_context(mock, typ=Mock):
 
 @contextmanager
 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:
             if side_effect is not None:
                 context.__enter__.side_effect = side_effect
@@ -535,7 +543,7 @@ def mock_open(typ=WhateverIO, side_effect=None):
 
 
 def patch_many(*targets):
-    return nested(*[mock.patch(target) for target in targets])
+    return nested(*[patch(target) for target in targets])
 
 
 @contextmanager
@@ -588,3 +596,32 @@ def skip_if_jython(fun):
             raise SkipTest('does not work on Jython')
         return fun(*args, **kwargs)
     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.tests.utils import Case
+from celery.tests.case import Case
 
 
 def add(x, y):
@@ -13,6 +13,11 @@ def add(x, y):
 
 class test_decorators(Case):
 
+    def test_task_alias(self):
+        from celery import task
+        self.assertTrue(task.__file__)
+        self.assertTrue(task(add))
+
     def setUp(self):
         with warnings.catch_warnings(record=True):
             from celery import decorators

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

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 
 from celery import messaging
-from celery.tests.utils import Case
+from celery.tests.case import 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
 
+from mock import Mock, patch
+
 from celery import current_app
 from celery.task import Task
 from celery.task.sets import subtask, TaskSet
 from celery.canvas import Signature
 
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 class MockTask(Task):
@@ -128,8 +130,13 @@ class test_TaskSet(Case):
             app.conf.CELERY_ALWAYS_EAGER = False
         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]
 
         class mocksubtask(Signature):

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

@@ -3,9 +3,10 @@ from __future__ import absolute_import
 import os
 
 from itertools import count
+from mock import Mock
 
 from celery.concurrency.base import apply_target, BasePool
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 class test_BasePool(Case):
@@ -85,3 +86,31 @@ class test_BasePool(Case):
     def test_interface_terminate_job(self):
         with self.assertRaises(NotImplementedError):
             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,
 )
 
-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):

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

@@ -10,9 +10,13 @@ from celery.concurrency.gevent import (
     Schedule,
     Timer,
     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',
     'gevent.monkey',
@@ -80,6 +84,9 @@ class test_Schedule(Case):
                 g.kill.side_effect = KeyError()
                 x.clear()
 
+                g = x._Greenlet()
+                g.cancel()
+
 
 class test_TasKPool(Case):
 
@@ -118,3 +125,37 @@ class test_Timer(Case):
             x.start()
             x.stop()
             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 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):

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

@@ -1,15 +1,17 @@
 from __future__ import absolute_import
 
+import errno
+import socket
 import time
 
 from itertools import cycle
 
-from mock import Mock
+from mock import Mock, call, patch
 from nose import SkipTest
 
 from celery.five import items, range
 from celery.utils.functional import noop
-from celery.tests.utils import Case
+from celery.tests.case import AppCase
 try:
     from celery.concurrency import processes as mp
 except ImportError:
@@ -117,14 +119,155 @@ class ExeMockTaskPool(mp.TaskPool):
     Pool = BlockingPool = ExeMockPool
 
 
-class test_TaskPool(Case):
+class PoolCase(AppCase):
 
-    def setUp(self):
+    def setup(self):
         try:
             import multiprocessing  # noqa
         except ImportError:
             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):
         pool = TaskPool(10)
         pool.start()

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

@@ -4,7 +4,7 @@ import operator
 
 from celery.concurrency import solo
 from celery.utils.functional import noop
-from celery.tests.utils import Case
+from celery.tests.case import 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.tests.utils import Case, mask_modules, mock_module
+from celery.tests.case import Case, mask_modules, mock_module
 
 
 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.result import AsyncResult
-from celery.tests.utils import Case
+from celery.tests.case import Case
 
 
 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 contextlib import contextmanager
+from mock import patch
+
 from kombu import Connection, Producer, Queue, Exchange
 from kombu.exceptions import StdChannelError
-from mock import patch
+
+from kombu.transport.virtual import QoS
 
 from celery.contrib.migrate import (
+    StopFiltering,
     State,
     migrate_task,
     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.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',
@@ -41,6 +60,188 @@ class test_State(Case):
         x.total_apx = 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):
 
@@ -77,7 +278,7 @@ class test_migrate_tasks(AppCase):
         self.assertTrue(x.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)
         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)
         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)
         migrate = Mock()
         Producer(x).publish('baz', exchange=name, routing_key=name)
         migrate_tasks(x, y, callback=callback,
-                      migrate=migrate, accept=['text/plain'])
+                      migrate=migrate, accept=['text/plain'], app=self.app)
         self.assertTrue(migrate.called)
 
         with patch('kombu.transport.virtual.Channel.queue_declare') as qd:
@@ -101,11 +303,12 @@ class test_migrate_tasks(AppCase):
                     raise StdChannelError()
                 return 0, 3, 0
             qd.side_effect = effect
-            migrate_tasks(x, y)
+            migrate_tasks(x, y, app=self.app)
 
         x = Connection('memory://')
         x.default_channel.queues = {}
         y.default_channel.queues = {}
         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)

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

@@ -10,7 +10,7 @@ from celery.contrib.rdb import (
     debugger,
     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):

+ 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>

部分文件因文件數量過多而無法顯示