Преглед на файлове

Use new-style relative imports

Ask Solem преди 13 години
родител
ревизия
b6179c7316
променени са 79 файла, в които са добавени 389 реда и са изтрити 295 реда
  1. 5 3
      celery/__init__.py
  2. 10 6
      celery/app/__init__.py
  3. 3 3
      celery/app/amqp.py
  4. 8 7
      celery/app/base.py
  5. 9 7
      celery/app/task/__init__.py
  6. 7 6
      celery/apps/beat.py
  7. 7 9
      celery/apps/worker.py
  8. 5 3
      celery/backends/__init__.py
  9. 4 3
      celery/backends/amqp.py
  10. 11 9
      celery/backends/base.py
  11. 6 3
      celery/backends/cache.py
  12. 7 4
      celery/backends/cassandra.py
  13. 9 6
      celery/backends/database.py
  14. 6 4
      celery/backends/mongodb.py
  15. 1 1
      celery/backends/pyredis.py
  16. 5 4
      celery/backends/redis.py
  17. 5 2
      celery/backends/tyrant.py
  18. 9 9
      celery/beat.py
  19. 6 4
      celery/bin/base.py
  20. 6 3
      celery/bin/camqadm.py
  21. 3 2
      celery/bin/celerybeat.py
  22. 6 5
      celery/bin/celeryctl.py
  23. 4 2
      celery/bin/celeryd.py
  24. 5 4
      celery/bin/celeryd_detach.py
  25. 5 3
      celery/bin/celeryd_multi.py
  26. 7 6
      celery/bin/celeryev.py
  27. 3 1
      celery/concurrency/__init__.py
  28. 5 3
      celery/concurrency/base.py
  29. 5 2
      celery/concurrency/evg.py
  30. 6 3
      celery/concurrency/evlet.py
  31. 6 5
      celery/concurrency/processes/__init__.py
  32. 3 1
      celery/concurrency/solo.py
  33. 3 1
      celery/concurrency/threads.py
  34. 4 2
      celery/conf.py
  35. 1 1
      celery/datastructures.py
  36. 8 4
      celery/db/models.py
  37. 3 1
      celery/decorators.py
  38. 3 3
      celery/events/__init__.py
  39. 7 5
      celery/events/cursesmon.py
  40. 4 2
      celery/events/dumper.py
  41. 8 7
      celery/events/snapshot.py
  42. 3 3
      celery/events/state.py
  43. 3 3
      celery/execute/__init__.py
  44. 4 5
      celery/execute/trace.py
  45. 2 2
      celery/loaders/__init__.py
  46. 1 1
      celery/loaders/app.py
  47. 5 6
      celery/loaders/base.py
  48. 5 4
      celery/loaders/default.py
  49. 7 8
      celery/log.py
  50. 1 1
      celery/messaging.py
  51. 1 1
      celery/platforms.py
  52. 1 1
      celery/registry.py
  53. 6 6
      celery/result.py
  54. 3 3
      celery/routes.py
  55. 3 3
      celery/schedules.py
  56. 3 1
      celery/signals.py
  57. 8 5
      celery/task/__init__.py
  58. 6 5
      celery/task/base.py
  59. 6 4
      celery/task/chords.py
  60. 1 1
      celery/task/control.py
  61. 4 2
      celery/task/http.py
  62. 3 1
      celery/task/schedules.py
  63. 6 8
      celery/task/sets.py
  64. 4 4
      celery/tests/utils.py
  65. 2 2
      celery/utils/__init__.py
  66. 1 1
      celery/utils/dispatch/__init__.py
  67. 1 1
      celery/utils/dispatch/signal.py
  68. 3 1
      celery/utils/term.py
  69. 12 12
      celery/worker/__init__.py
  70. 1 1
      celery/worker/autoscale.py
  71. 3 3
      celery/worker/buckets.py
  72. 10 10
      celery/worker/consumer.py
  73. 6 3
      celery/worker/control/__init__.py
  74. 10 7
      celery/worker/control/builtins.py
  75. 3 1
      celery/worker/control/registry.py
  76. 3 1
      celery/worker/heartbeat.py
  77. 13 12
      celery/worker/job.py
  78. 3 1
      celery/worker/mediator.py
  79. 4 2
      celery/worker/state.py

+ 5 - 3
celery/__init__.py

@@ -2,6 +2,8 @@
 # :copyright: (c) 2009 - 2011 by Ask Solem.
 # :license:   BSD, see LICENSE for more details.
 
+from __future__ import absolute_import
+
 import os
 import sys
 
@@ -20,14 +22,14 @@ if sys.version_info < (2, 5):
 
 
 def Celery(*args, **kwargs):
-    from celery.app import App
+    from .app import App
     return App(*args, **kwargs)
 
 if not os.environ.get("CELERY_NO_EVAL", False):
-    from celery.local import LocalProxy
+    from .local import LocalProxy
 
     def _get_current_app():
-        from celery.app import current_app
+        from .app import current_app
         return current_app()
 
     current_app = LocalProxy(_get_current_app)

+ 10 - 6
celery/app/__init__.py

@@ -8,6 +8,9 @@ Celery Application.
 :license: BSD, see LICENSE for more details.
 
 """
+
+from __future__ import absolute_import
+
 import os
 import threading
 
@@ -16,9 +19,10 @@ from inspect import getargspec
 
 from kombu.utils import cached_property
 
-from celery import registry
-from celery.app import base
-from celery.utils import instantiate
+from .. import registry
+from ..utils import instantiate
+
+from . import base
 
 # Apps with the :attr:`~celery.app.base.BaseApp.set_as_current` attribute
 # sets this, so it will always contain the last instantiated app,
@@ -87,7 +91,7 @@ class App(base.BaseApp):
         taken from this app."""
         conf = self.conf
 
-        from celery.app.task import BaseTask
+        from .task import BaseTask
 
         class Task(BaseTask):
             abstract = True
@@ -119,14 +123,14 @@ class App(base.BaseApp):
 
     def TaskSet(self, *args, **kwargs):
         """Create new :class:`~celery.task.sets.TaskSet`."""
-        from celery.task.sets import TaskSet
+        from ..task.sets import TaskSet
         kwargs["app"] = self
         return TaskSet(*args, **kwargs)
 
     def worker_main(self, argv=None):
         """Run :program:`celeryd` using `argv`.  Uses :data:`sys.argv`
         if `argv` is not specified."""
-        from celery.bin.celeryd import WorkerCommand
+        from ..bin.celeryd import WorkerCommand
         return WorkerCommand(app=self).execute_from_commandline(argv)
 
     def task(self, *args, **options):

+ 3 - 3
celery/app/amqp.py

@@ -16,9 +16,9 @@ from kombu import compat as messaging
 from kombu.pools import ProducerPool
 from kombu.utils import cached_property
 
-from celery import routes as _routes
-from celery import signals
-from celery.utils import gen_unique_id, textindent
+from .. import routes as _routes
+from .. import signals
+from ..utils import gen_unique_id, textindent
 
 #: List of known options to a Kombu producers send method.
 #: Used to extract the message related options out of any `dict`.

+ 8 - 7
celery/app/base.py

@@ -22,9 +22,10 @@ from threading import Lock
 
 from kombu.utils import cached_property
 
-from celery import datastructures
-from celery.app.defaults import DEFAULTS
-from celery.utils import instantiate, lpmerge
+from .. import datastructures
+from ..utils import instantiate, lpmerge
+
+from .defaults import DEFAULTS
 
 import kombu
 if kombu.VERSION < (1, 1, 0):
@@ -236,13 +237,13 @@ class BaseApp(object):
 
     def AsyncResult(self, task_id, backend=None, task_name=None):
         """Create :class:`celery.result.BaseAsyncResult` instance."""
-        from celery.result import BaseAsyncResult
+        from ..result import BaseAsyncResult
         return BaseAsyncResult(task_id, app=self, task_name=task_name,
                                backend=backend or self.backend)
 
     def TaskSetResult(self, taskset_id, results, **kwargs):
         """Create :class:`celery.result.TaskSetResult` instance."""
-        from celery.result import TaskSetResult
+        from ..result import TaskSetResult
         return TaskSetResult(taskset_id, results, app=self)
 
     def broker_connection(self, hostname=None, userid=None,
@@ -346,7 +347,7 @@ class BaseApp(object):
         return lpmerge(l, r)
 
     def _get_backend(self):
-        from celery.backends import get_backend_cls
+        from ..backends import get_backend_cls
         backend_cls = self.backend_cls or self.conf.CELERY_RESULT_BACKEND
         backend_cls = get_backend_cls(backend_cls, loader=self.loader)
         return backend_cls(app=self)
@@ -414,7 +415,7 @@ class BaseApp(object):
     @cached_property
     def loader(self):
         """Current loader."""
-        from celery.loaders import get_loader_cls
+        from ..loaders import get_loader_cls
         return get_loader_cls(self.loader_cls)(app=self)
 
     @cached_property

+ 9 - 7
celery/app/task/__init__.py

@@ -1,13 +1,15 @@
 # -*- coding: utf-8 -*-"
+from __future__ import absolute_import
+
 import sys
 import threading
 
-from celery.datastructures import ExceptionInfo
-from celery.exceptions import MaxRetriesExceededError, RetryTaskError
-from celery.execute.trace import TaskTrace
-from celery.registry import tasks, _unpickle_task
-from celery.result import EagerResult
-from celery.utils import mattrgetter, gen_unique_id, fun_takes_kwargs
+from ...datastructures import ExceptionInfo
+from ...exceptions import MaxRetriesExceededError, RetryTaskError
+from ...execute.trace import TaskTrace
+from ...registry import tasks, _unpickle_task
+from ...result import EagerResult
+from ...utils import mattrgetter, gen_unique_id, fun_takes_kwargs
 
 extract_exec_options = mattrgetter("queue", "routing_key",
                                    "exchange", "immediate",
@@ -696,7 +698,7 @@ class BaseTask(object):
         """Returns :class:`~celery.task.sets.subtask` object for
         this task, wrapping arguments and execution options
         for a single task invocation."""
-        from celery.task.sets import subtask
+        from ...task.sets import subtask
         return subtask(cls, *args, **kwargs)
 
     @property

+ 7 - 6
celery/apps/beat.py

@@ -1,14 +1,15 @@
+from __future__ import absolute_import
+
 import atexit
 import socket
 import sys
 import traceback
 
-from celery import __version__
-from celery import beat
-from celery import platforms
-from celery.app import app_or_default
-from celery.utils import get_full_cls_name, LOG_LEVELS
-from celery.utils.timeutils import humanize_seconds
+from .. import __version__, platforms
+from .. import beat
+from ..app import app_or_default
+from ..utils import get_full_cls_name, LOG_LEVELS
+from ..utils.timeutils import humanize_seconds
 
 STARTUP_INFO_FMT = """
 Configuration ->

+ 7 - 9
celery/apps/worker.py

@@ -11,13 +11,11 @@ import socket
 import sys
 import warnings
 
-from celery import __version__
-from celery import platforms
-from celery import signals
-from celery.app import app_or_default
-from celery.exceptions import ImproperlyConfigured, SystemTerminate
-from celery.utils import get_full_cls_name, LOG_LEVELS, cry
-from celery.worker import WorkController
+from .. import __version__, platforms, signals
+from ..app import app_or_default
+from ..exceptions import ImproperlyConfigured, SystemTerminate
+from ..utils import get_full_cls_name, LOG_LEVELS, cry
+from ..worker import WorkController
 
 BANNER = """
  -------------- celery@%(hostname)s v%(version)s
@@ -183,7 +181,7 @@ class Worker(object):
         self.loader.init_worker()
 
     def tasklist(self, include_builtins=True):
-        from celery.registry import tasks
+        from ..registry import tasks
         tasklist = tasks.keys()
         if not include_builtins:
             tasklist = filter(lambda s: not s.startswith("celery."),
@@ -343,7 +341,7 @@ def install_rdb_handler(envvar="CELERY_RDBSIG"):  # pragma: no cover
 
     def rdb_handler(signum, frame):
         """Signal handler setting a rdb breakpoint at the current frame."""
-        from celery.contrib import rdb
+        from ..contrib import rdb
         rdb.set_trace(frame)
 
     if os.environ.get(envvar):

+ 5 - 3
celery/backends/__init__.py

@@ -1,6 +1,8 @@
-from celery import current_app
-from celery.local import LocalProxy
-from celery.utils import get_cls_by_name
+from __future__ import absolute_import
+
+from .. import current_app
+from ..local import LocalProxy
+from ..utils import get_cls_by_name
 
 BACKEND_ALIASES = {
     "amqp": "celery.backends.amqp.AMQPBackend",

+ 4 - 3
celery/backends/amqp.py

@@ -11,9 +11,10 @@ from itertools import count
 from kombu.entity import Exchange, Queue
 from kombu.messaging import Consumer, Producer
 
-from celery import states
-from celery.backends.base import BaseDictBackend
-from celery.exceptions import TimeoutError
+from .. import states
+from ..exceptions import TimeoutError
+
+from .base import BaseDictBackend
 
 
 class BacklogLimitExceeded(Exception):

+ 11 - 9
celery/backends/base.py

@@ -1,4 +1,6 @@
 """celery.backends.base"""
+from __future__ import absolute_import
+
 import time
 import sys
 
@@ -6,13 +8,13 @@ from datetime import timedelta
 
 from kombu import serialization
 
-from celery import states
-from celery.exceptions import TimeoutError, TaskRevokedError
-from celery.utils import timeutils
-from celery.utils.serialization import get_pickled_exception
-from celery.utils.serialization import get_pickleable_exception
-from celery.utils.serialization import create_exception_cls
-from celery.datastructures import LocalCache
+from .. import states
+from ..datastructures import LocalCache
+from ..exceptions import TimeoutError, TaskRevokedError
+from ..utils import timeutils
+from ..utils.serialization import (get_pickled_exception,
+                                   get_pickleable_exception,
+                                   create_exception_cls)
 
 EXCEPTION_ABLE_CODECS = frozenset(["pickle", "yaml"])
 
@@ -36,7 +38,7 @@ class BaseBackend(object):
     subpolling_interval = None
 
     def __init__(self, *args, **kwargs):
-        from celery.app import app_or_default
+        from ..app import app_or_default
         self.app = app_or_default(kwargs.get("app"))
         self.serializer = kwargs.get("serializer",
                                      self.app.conf.CELERY_RESULT_SERIALIZER)
@@ -198,7 +200,7 @@ class BaseBackend(object):
         pass
 
     def on_chord_apply(self, setid, body, *args, **kwargs):
-        from celery.registry import tasks
+        from ..registry import tasks
         tasks["celery.chord_unlock"].apply_async((setid, body, ), kwargs,
                                                  countdown=1)
 

+ 6 - 3
celery/backends/cache.py

@@ -1,8 +1,11 @@
+from __future__ import absolute_import
+
 from kombu.utils import cached_property
 
-from celery.backends.base import KeyValueStoreBackend
-from celery.exceptions import ImproperlyConfigured
-from celery.datastructures import LocalCache
+from ..datastructures import LocalCache
+from ..exceptions import ImproperlyConfigured
+
+from .base import KeyValueStoreBackend
 
 _imp = [None]
 

+ 7 - 4
celery/backends/cassandra.py

@@ -1,4 +1,6 @@
 """celery.backends.cassandra"""
+from __future__ import absolute_import
+
 try:
     import pycassa
     from thrift import Thrift
@@ -11,10 +13,11 @@ import time
 
 from datetime import datetime
 
-from celery.backends.base import BaseDictBackend
-from celery.exceptions import ImproperlyConfigured
-from celery.utils.timeutils import maybe_timedelta, timedelta_seconds
-from celery import states
+from .. import states
+from ..exceptions import ImproperlyConfigured
+from ..utils.timeutils import maybe_timedelta, timedelta_seconds
+
+from .base import BaseDictBackend
 
 
 class CassandraBackend(BaseDictBackend):

+ 9 - 6
celery/backends/database.py

@@ -1,11 +1,14 @@
+from __future__ import absolute_import
+
 from datetime import datetime
 
-from celery import states
-from celery.backends.base import BaseDictBackend
-from celery.db.models import Task, TaskSet
-from celery.db.session import ResultSession
-from celery.exceptions import ImproperlyConfigured
-from celery.utils.timeutils import maybe_timedelta
+from .. import states
+from ..db.models import Task, TaskSet
+from ..db.session import ResultSession
+from ..exceptions import ImproperlyConfigured
+from ..utils.timeutils import maybe_timedelta
+
+from .base import BaseDictBackend
 
 
 def _sqlalchemy_installed():

+ 6 - 4
celery/backends/mongodb.py

@@ -1,4 +1,6 @@
 """MongoDB backend for celery."""
+from __future__ import absolute_import
+
 from datetime import datetime
 
 try:
@@ -6,11 +8,11 @@ try:
 except ImportError:
     pymongo = None  # noqa
 
-from celery import states
-from celery.backends.base import BaseDictBackend
-from celery.exceptions import ImproperlyConfigured
-from celery.utils.timeutils import maybe_timedelta
+from .. import states
+from ..exceptions import ImproperlyConfigured
+from ..utils.timeutils import maybe_timedelta
 
+from .base import BaseDictBackend
 
 class Bunch:
 

+ 1 - 1
celery/backends/pyredis.py

@@ -6,7 +6,7 @@ Please use :class:`celery.backends.redis.RedisBackend` instead.
 """
 from __future__ import absolute_import
 
-from celery.backends import redis
+from . import redis
 
 
 class RedisBackend(redis.RedisBackend):

+ 5 - 4
celery/backends/redis.py

@@ -2,8 +2,9 @@ from __future__ import absolute_import
 
 from kombu.utils import cached_property
 
-from celery.backends.base import KeyValueStoreBackend
-from celery.exceptions import ImproperlyConfigured
+from ..exceptions import ImproperlyConfigured
+
+from .base import KeyValueStoreBackend
 
 try:
     import redis
@@ -77,8 +78,8 @@ class RedisBackend(KeyValueStoreBackend):
 
     def on_chord_part_return(self, task, propagate=False,
             keyprefix="chord-unlock-%s"):
-        from celery.task.sets import subtask
-        from celery.result import TaskSetResult
+        from ..task.sets import subtask
+        from ..result import TaskSetResult
         setid = task.request.taskset
         key = keyprefix % setid
         deps = TaskSetResult.restore(setid, backend=task.backend)

+ 5 - 2
celery/backends/tyrant.py

@@ -1,11 +1,14 @@
 """celery.backends.tyrant"""
+from __future__ import absolute_import
+
 try:
     import pytyrant
 except ImportError:
     pytyrant = None  # noqa
 
-from celery.backends.base import KeyValueStoreBackend
-from celery.exceptions import ImproperlyConfigured
+from ..exceptions import ImproperlyConfigured
+
+from .base import KeyValueStoreBackend
 
 
 class TyrantBackend(KeyValueStoreBackend):

+ 9 - 9
celery/beat.py

@@ -16,15 +16,15 @@ from datetime import datetime
 
 from kombu.utils import cached_property
 
-from celery import __version__
-from celery import platforms
-from celery import registry
-from celery import signals
-from celery.app import app_or_default
-from celery.log import SilenceRepeated
-from celery.schedules import maybe_schedule, crontab
-from celery.utils import instantiate, maybe_promise
-from celery.utils.timeutils import humanize_seconds
+from . import __version__
+from . import platforms
+from . import registry
+from . import signals
+from .app import app_or_default
+from .log import SilenceRepeated
+from .schedules import maybe_schedule, crontab
+from .utils import instantiate, maybe_promise
+from .utils.timeutils import humanize_seconds
 
 
 class SchedulingError(Exception):

+ 6 - 4
celery/bin/base.py

@@ -1,9 +1,11 @@
+from __future__ import absolute_import
+
 import os
 import sys
 
 from optparse import OptionParser, make_option as Option
 
-import celery
+from .. import __version__, Celery
 
 
 class Command(object):
@@ -18,7 +20,7 @@ class Command(object):
     args = ''
 
     #: Application version.
-    version = celery.__version__
+    version = __version__
 
     #: If false the parser will raise an exception if positional
     #: args are provided.
@@ -145,7 +147,7 @@ class Command(object):
         return argv
 
     def get_cls_by_name(self, name):
-        from celery.utils import get_cls_by_name, import_from_cwd
+        from ..utils import get_cls_by_name, import_from_cwd
         return get_cls_by_name(name, imp=import_from_cwd)
 
     def process_cmdline_config(self, argv):
@@ -181,7 +183,7 @@ class Command(object):
         return acc
 
     def _get_default_app(self, *args, **kwargs):
-        return celery.Celery(*args, **kwargs)
+        return Celery(*args, **kwargs)
 
 
 def daemon_options(default_pidfile, default_logfile=None):

+ 6 - 3
celery/bin/camqadm.py

@@ -4,6 +4,8 @@
 .. program:: camqadm
 
 """
+from __future__ import absolute_import
+
 import cmd
 import sys
 import shlex
@@ -13,9 +15,10 @@ from itertools import count
 
 from amqplib import client_0_8 as amqp
 
-from celery.app import app_or_default
-from celery.bin.base import Command
-from celery.utils import padlist
+from ..app import app_or_default
+from ..utils import padlist
+
+from .base import Command
 
 # Valid string -> bool coercions.
 BOOLS = {"1": True, "0": False,

+ 3 - 2
celery/bin/celerybeat.py

@@ -27,8 +27,9 @@ from __future__ import absolute_import
 
 from functools import partial
 
-from celery.platforms import detached
-from celery.bin.base import Command, Option, daemon_options
+from ..platforms import detached
+
+from .base import Command, Option, daemon_options
 
 
 class BeatCommand(Command):

+ 6 - 5
celery/bin/celeryctl.py

@@ -8,10 +8,11 @@ from textwrap import wrap
 
 from anyjson import deserialize
 
-from celery import __version__
-from celery.app import app_or_default, current_app
-from celery.bin.base import Command as CeleryCommand
-from celery.utils import term
+from .. import __version__
+from ..app import app_or_default, current_app
+from ..utils import term
+
+from .base import Command as CeleryCommand
 
 
 commands = {}
@@ -201,7 +202,7 @@ class result(Command):
     )
 
     def run(self, task_id, *args, **kwargs):
-        from celery import registry
+        from .. import registry
         result_cls = self.app.AsyncResult
         task = kwargs.get("task")
 

+ 4 - 2
celery/bin/celeryd.py

@@ -71,6 +71,8 @@
     terminated and replaced by a new worker.
 
 """
+from __future__ import absolute_import
+
 import sys
 
 try:
@@ -78,7 +80,7 @@ try:
 except ImportError:  # pragma: no cover
     freeze_support = lambda: True  # noqa
 
-from celery.bin.base import Command, Option
+from .base import Command, Option
 
 
 class WorkerCommand(Command):
@@ -90,7 +92,7 @@ class WorkerCommand(Command):
         kwargs.pop("app", None)
         # Pools like eventlet/gevent needs to patch libs as early
         # as possible.
-        from celery import concurrency
+        from .. import concurrency
         kwargs["pool"] = concurrency.get_implementation(
                     kwargs.get("pool") or self.app.conf.CELERYD_POOL)
         return self.app.Worker(**kwargs).run()

+ 5 - 4
celery/bin/celeryd_detach.py

@@ -6,9 +6,10 @@ import sys
 
 from optparse import OptionParser, BadOptionError
 
-from celery import __version__
-from celery.platforms import detached
-from celery.bin.base import daemon_options
+from .. import __version__
+from ..platforms import detached
+
+from .base import daemon_options
 
 OPTION_LIST = daemon_options(default_pidfile="celeryd.pid")
 
@@ -20,7 +21,7 @@ def detach(path, argv, logfile=None, pidfile=None, uid=None,
             os.execv(path, [path] + argv)
         except Exception:
             import logging
-            from celery.log import setup_logger
+            from ..log import setup_logger
             logger = setup_logger(logfile=logfile, loglevel=logging.ERROR)
             logger.critical("Can't exec %r", " ".join([path] + argv),
                             exc_info=sys.exc_info())

+ 5 - 3
celery/bin/celeryd_multi.py

@@ -85,6 +85,8 @@ Examples
     celeryd -n xuzzy.myhost -c 3
 
 """
+from __future__ import absolute_import
+
 import errno
 import os
 import shlex
@@ -96,8 +98,8 @@ from collections import defaultdict
 from subprocess import Popen
 from time import sleep
 
-from celery import __version__
-from celery.utils import term
+from .. import __version__
+from ..utils import term
 
 SIGNAMES = set(sig for sig in dir(signal)
                         if sig.startswith("SIG") and "_" not in sig)
@@ -286,7 +288,7 @@ class MultiTool(object):
             self.note("")
 
     def getpids(self, p, cmd, callback=None):
-        from celery import platforms
+        from .. import platforms
         pidfile_template = p.options.setdefault("--pidfile", "celeryd@%n.pid")
 
         nodes = []

+ 7 - 6
celery/bin/celeryev.py

@@ -5,9 +5,10 @@ import sys
 
 from functools import partial
 
-from celery import platforms
-from celery.platforms import detached
-from celery.bin.base import Command, Option, daemon_options
+from .. import platforms
+from ..platforms import detached
+
+from .base import Command, Option, daemon_options
 
 
 class EvCommand(Command):
@@ -31,19 +32,19 @@ class EvCommand(Command):
         return self.run_evtop()
 
     def run_evdump(self):
-        from celery.events.dumper import evdump
+        from ..events.dumper import evdump
         self.set_process_status("dump")
         return evdump(app=self.app)
 
     def run_evtop(self):
-        from celery.events.cursesmon import evtop
+        from ..events.cursesmon import evtop
         self.set_process_status("top")
         return evtop(app=self.app)
 
     def run_evcam(self, camera, logfile=None, pidfile=None, uid=None,
             gid=None, umask=None, working_directory=None,
             detach=False, **kwargs):
-        from celery.events.snapshot import evcam
+        from ..events.snapshot import evcam
         workdir = working_directory
         self.set_process_status("cam")
         kwargs["app"] = self.app

+ 3 - 1
celery/concurrency/__init__.py

@@ -1,4 +1,6 @@
-from celery.utils import get_cls_by_name
+from __future__ import absolute_import
+
+from ..utils import get_cls_by_name
 
 ALIASES = {
     "processes": "celery.concurrency.processes.TaskPool",

+ 5 - 3
celery/concurrency/base.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import sys
 import time
@@ -5,9 +7,9 @@ import traceback
 
 from functools import partial
 
-from celery import log
-from celery.datastructures import ExceptionInfo
-from celery.utils import timer2
+from .. import log
+from ..datastructures import ExceptionInfo
+from ..utils import timer2
 
 
 def apply_target(target, args=(), kwargs={}, callback=None,

+ 5 - 2
celery/concurrency/evg.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import sys
 
@@ -7,8 +9,9 @@ if not os.environ.get("GEVENT_NOPATCH"):
     from gevent import monkey
     monkey.patch_all()
 
-from celery.concurrency.base import apply_target, BasePool
-from celery.utils import timer2
+from ..utils import timer2
+
+from .base import apply_target, BasePool
 
 
 class Schedule(timer2.Schedule):

+ 6 - 3
celery/concurrency/evlet.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import sys
 
@@ -9,9 +11,10 @@ if not os.environ.get("EVENTLET_NOPATCH"):
     eventlet.monkey_patch()
     eventlet.debug.hub_prevent_multiple_readers(False)
 
-from celery import signals
-from celery.concurrency import base
-from celery.utils import timer2
+from .. import signals
+from ..utils import timer2
+
+from . import base
 
 
 def apply_target(target, args=(), kwargs={}, callback=None,

+ 6 - 5
celery/concurrency/processes/__init__.py

@@ -3,20 +3,21 @@
 Process Pools.
 
 """
+from __future__ import absolute_import
+
 import platform
 import signal as _signal
 
-from celery.concurrency.base import BasePool
-from celery.concurrency.processes.pool import Pool, RUN
+from ..base import BasePool
+from .pool import Pool, RUN
 
 if platform.system() == "Windows":  # pragma: no cover
     # On Windows os.kill calls TerminateProcess which cannot be
     # handled by # any process, so this is needed to terminate the task
     # *and its children* (if any).
-    from celery.concurrency.processes import _win
-    _kill = _win.kill_processtree  # noqa
+    from ._win import kill_processtree as _kill  # noqa
 else:
-    from os import kill as _kill
+    from os import kill as _kill                 # noqa
 
 
 class TaskPool(BasePool):

+ 3 - 1
celery/concurrency/solo.py

@@ -1,6 +1,8 @@
+from __future__ import absolute_import
+
 import os
 
-from celery.concurrency.base import BasePool, apply_target
+from .base import BasePool, apply_target
 
 
 class TaskPool(BasePool):

+ 3 - 1
celery/concurrency/threads.py

@@ -1,4 +1,6 @@
-from celery.concurrency.base import apply_target, BasePool
+from __future__ import absolute_import
+
+from .base import apply_target, BasePool
 
 
 class TaskPool(BasePool):

+ 4 - 2
celery/conf.py

@@ -6,8 +6,10 @@ Use :mod:`celery.defaults` instead.
 
 
 """
-from celery import current_app
-from celery.app import defaults
+from __future__ import absolute_import
+
+from . import current_app
+from .app import defaults
 
 _DEFAULTS = defaults.DEFAULTS
 conf = current_app.conf

+ 1 - 1
celery/datastructures.py

@@ -18,7 +18,7 @@ from itertools import chain
 from Queue import Empty
 from threading import RLock
 
-from celery.utils.compat import OrderedDict
+from .utils.compat import OrderedDict
 
 
 class AttributeDictMixin(object):

+ 8 - 4
celery/db/models.py

@@ -1,14 +1,18 @@
+from __future__ import absolute_import
+
 from datetime import datetime
 
 import sqlalchemy as sa
 
-from celery import states
-from celery.db.session import ResultModelBase
+from .. import states
+
+from .session import ResultModelBase
+
 # See docstring of a805d4bd for an explanation for this workaround ;)
 if sa.__version__.startswith('0.5'):
-    from celery.db.dfd042c7 import PickleType
+    from .dfd042c7 import PickleType
 else:
-    from celery.db.a805d4bd import PickleType  # noqa
+    from .a805d4bd import PickleType  # noqa
 
 
 class Task(ResultModelBase):

+ 3 - 1
celery/decorators.py

@@ -12,9 +12,11 @@ The new decorators does not support magic keyword arguments.
 :license: BSD, see LICENSE for more details.
 
 """
+from __future__ import absolute_import
+
 import warnings
 
-from celery import task as _task
+from . import task as _task
 
 
 warnings.warn(PendingDeprecationWarning("""

+ 3 - 3
celery/events/__init__.py

@@ -12,8 +12,8 @@ from itertools import count
 from kombu.entity import Exchange, Queue
 from kombu.messaging import Consumer, Producer
 
-from celery.app import app_or_default
-from celery.utils import gen_unique_id
+from ..app import app_or_default
+from ..utils import gen_unique_id
 
 event_exchange = Exchange("celeryev", type="topic")
 
@@ -240,7 +240,7 @@ class Events(object):
                                app=self.app)
 
     def State(self):
-        from celery.events.state import State as _State
+        from .state import State as _State
         return _State()
 
     @contextmanager

+ 7 - 5
celery/events/cursesmon.py

@@ -1,4 +1,5 @@
-import celery
+from __future__ import absolute_import
+
 import curses
 import sys
 import threading
@@ -9,9 +10,10 @@ from itertools import count
 from textwrap import wrap
 from math import ceil
 
-from celery import states
-from celery.app import app_or_default
-from celery.utils import abbr, abbrtask
+from .. import __version__
+from .. import states
+from ..app import app_or_default
+from ..utils import abbr, abbrtask
 
 BORDER_SPACING = 4
 LEFT_BORDER_OFFSET = 3
@@ -35,7 +37,7 @@ class CursesMonitor(object):
     online_str = "Workers online: "
     help_title = "Keys: "
     help = ("j:up k:down i:info t:traceback r:result c:revoke ^c: quit")
-    greet = "celeryev %s" % celery.__version__
+    greet = "celeryev %s" % __version__
     info_str = "Info: "
 
     def __init__(self, state, keymap=None, app=None):

+ 4 - 2
celery/events/dumper.py

@@ -1,9 +1,11 @@
+from __future__ import absolute_import
+
 import sys
 
 from datetime import datetime
 
-from celery.app import app_or_default
-from celery.datastructures import LocalCache
+from ..app import app_or_default
+from ..datastructures import LocalCache
 
 
 TASK_NAMES = LocalCache(0xFFF)

+ 8 - 7
celery/events/snapshot.py

@@ -1,12 +1,13 @@
+from __future__ import absolute_import
+
 import atexit
 
-from celery import platforms
-from celery.app import app_or_default
-from celery.datastructures import TokenBucket
-from celery.utils import timer2
-from celery.utils import instantiate, LOG_LEVELS
-from celery.utils.dispatch import Signal
-from celery.utils.timeutils import rate
+from .. import platforms
+from ..app import app_or_default
+from ..datastructures import TokenBucket
+from ..utils import timer2, instantiate, LOG_LEVELS
+from ..utils.dispatch import Signal
+from ..utils.timeutils import rate
 
 
 class Polaroid(object):

+ 3 - 3
celery/events/state.py

@@ -6,9 +6,9 @@ import heapq
 
 from threading import Lock
 
-from celery import states
-from celery.datastructures import AttributeDict, LocalCache
-from celery.utils import kwdict
+from .. import states
+from ..datastructures import AttributeDict, LocalCache
+from ..utils import kwdict
 
 #: Hartbeat expiry time in seconds.  The worker will be considered offline
 #: if no heartbeat is received within this time.

+ 3 - 3
celery/execute/__init__.py

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 
-from celery import current_app
-from celery.utils import deprecated
+from .. import current_app
+from ..utils import deprecated
 
 send_task = current_app.send_task
 
@@ -21,5 +21,5 @@ def apply(task, *args, **kwargs):
 @deprecated(removal="2.3",
             alternative="Use registry.tasks[name].delay instead.")
 def delay_task(task, *args, **kwargs):
-    from celery.registry import tasks
+    from ..registry import tasks
     return tasks[task].apply_async(args, kwargs)

+ 4 - 5
celery/execute/trace.py

@@ -3,11 +3,10 @@ from __future__ import absolute_import
 import sys
 import traceback
 
-from celery import states
-from celery import signals
-from celery.registry import tasks
-from celery.exceptions import RetryTaskError
-from celery.datastructures import ExceptionInfo
+from .. import states, signals
+from ..datastructures import ExceptionInfo
+from ..exceptions import RetryTaskError
+from ..registry import tasks
 
 
 class TraceInfo(object):

+ 2 - 2
celery/loaders/__init__.py

@@ -2,8 +2,8 @@ from __future__ import absolute_import
 
 import os
 
-from celery import current_app
-from celery.utils import get_cls_by_name
+from .. import current_app
+from ..utils import get_cls_by_name
 
 LOADER_ALIASES = {"app": "celery.loaders.app.AppLoader",
                   "default": "celery.loaders.default.Loader",

+ 1 - 1
celery/loaders/app.py

@@ -1,6 +1,6 @@
 from __future__ import absolute_import
 
-from celery.loaders.base import BaseLoader
+from .base import BaseLoader
 
 
 class AppLoader(BaseLoader):

+ 5 - 6
celery/loaders/base.py

@@ -8,10 +8,9 @@ import warnings
 from anyjson import deserialize
 from kombu.utils import cached_property
 
-from celery.datastructures import DictAttribute
-from celery.exceptions import ImproperlyConfigured
-from celery.utils import get_cls_by_name
-from celery.utils import import_from_cwd as _import_from_cwd
+from ..datastructures import DictAttribute
+from ..exceptions import ImproperlyConfigured
+from ..utils import get_cls_by_name, import_from_cwd as _import_from_cwd
 
 BUILTIN_MODULES = frozenset(["celery.task"])
 
@@ -47,7 +46,7 @@ class BaseLoader(object):
     _conf = None
 
     def __init__(self, app=None, **kwargs):
-        from celery.app import app_or_default
+        from ..app import app_or_default
         self.app = app_or_default(app)
 
     def on_task_init(self, task_id, task):
@@ -114,7 +113,7 @@ class BaseLoader(object):
                 override_types={"tuple": "json",
                                 "list": "json",
                                 "dict": "json"}):
-        from celery.app.defaults import Option, NAMESPACES
+        from ..app.defaults import Option, NAMESPACES
         namespace = namespace.upper()
         typemap = dict(Option.typemap, **extra_types)
 

+ 5 - 4
celery/loaders/default.py

@@ -3,10 +3,11 @@ from __future__ import absolute_import
 import os
 import warnings
 
-from celery.datastructures import AttributeDict
-from celery.exceptions import NotConfigured
-from celery.loaders.base import BaseLoader
-from celery.utils import find_module
+from ..datastructures import AttributeDict
+from ..exceptions import NotConfigured
+from ..utils import find_module
+
+from .base import BaseLoader
 
 DEFAULT_CONFIG_MODULE = "celeryconfig"
 

+ 7 - 8
celery/log.py

@@ -12,14 +12,13 @@ try:
 except ImportError:
     current_process = mputil = None  # noqa
 
-from celery import signals
-from celery import current_app
-from celery.utils import LOG_LEVELS, isatty
-from celery.utils.compat import LoggerAdapter
-from celery.utils.compat import WatchedFileHandler
-from celery.utils.encoding import safe_str
-from celery.utils.patch import ensure_process_aware_logger
-from celery.utils.term import colored
+from . import current_app
+from . import signals
+from .utils import LOG_LEVELS, isatty
+from .utils.compat import LoggerAdapter, WatchedFileHandler
+from .utils.encoding import safe_str
+from .utils.patch import ensure_process_aware_logger
+from .utils.term import colored
 
 
 class ColorFormatter(logging.Formatter):

+ 1 - 1
celery/messaging.py

@@ -1,4 +1,4 @@
-from celery import current_app
+from . import current_app
 
 TaskPublisher = current_app.amqp.TaskPublisher
 ConsumerSet = current_app.amqp.ConsumerSet

+ 1 - 1
celery/platforms.py

@@ -5,7 +5,7 @@ import sys
 import errno
 import signal as _signal
 
-from celery.local import try_import
+from .local import try_import
 
 _setproctitle = try_import("setproctitle")
 resource = try_import("resource")

+ 1 - 1
celery/registry.py

@@ -3,7 +3,7 @@ from __future__ import absolute_import
 
 import inspect
 
-from celery.exceptions import NotRegistered
+from .exceptions import NotRegistered
 
 
 class TaskRegistry(dict):

+ 6 - 6
celery/result.py

@@ -6,12 +6,12 @@ import time
 from copy import copy
 from itertools import imap
 
-from celery import current_app
-from celery import states
-from celery.app import app_or_default
-from celery.exceptions import TimeoutError
-from celery.registry import _unpickle_task
-from celery.utils.compat import OrderedDict
+from . import current_app
+from . import states
+from .app import app_or_default
+from .exceptions import TimeoutError
+from .registry import _unpickle_task
+from .utils.compat import OrderedDict
 
 
 def _unpickle_result(task_id, task_name):

+ 3 - 3
celery/routes.py

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 
-from celery.exceptions import QueueNotFound
-from celery.utils import firstmethod, instantiate, lpmerge, mpromise
+from .exceptions import QueueNotFound
+from .utils import firstmethod, instantiate, lpmerge, mpromise
 
 _first_route = firstmethod("route_for_task")
 
@@ -22,7 +22,7 @@ class Router(object):
 
     def __init__(self, routes=None, queues=None, create_missing=False,
             app=None):
-        from celery.app import app_or_default
+        from .app import app_or_default
         self.app = app_or_default(app)
         self.queues = {} if queues is None else queues
         self.routes = [] if routes is None else routes

+ 3 - 3
celery/schedules.py

@@ -5,9 +5,9 @@ from dateutil.relativedelta import relativedelta
 from pyparsing import (Word, Literal, ZeroOrMore, Optional,
                        Group, StringEnd, alphas)
 
-from celery.utils import is_iterable
-from celery.utils.timeutils import (timedelta_seconds, weekday,
-                                    remaining, humanize_seconds)
+from .utils import is_iterable
+from .utils.timeutils import (timedelta_seconds, weekday,
+                              remaining, humanize_seconds)
 
 
 class schedule(object):

+ 3 - 1
celery/signals.py

@@ -1,4 +1,6 @@
+from __future__ import absolute_import
 """
+
 ==============
 celery.signals
 ==============
@@ -347,7 +349,7 @@ Provides arguments:
 
 
 """
-from celery.utils.dispatch import Signal
+from .utils.dispatch import Signal
 
 task_sent = Signal(providing_args=["task_id", "task",
                                    "args", "kwargs",

+ 8 - 5
celery/task/__init__.py

@@ -1,11 +1,14 @@
 # -*- coding: utf-8 -*-
+from __future__ import absolute_import
+
 import warnings
 
-from celery.app import app_or_default
-from celery.task.base import Task, PeriodicTask
-from celery.task.sets import TaskSet, subtask
-from celery.task.chords import chord
-from celery.task.control import discard_all
+from ..app import app_or_default
+
+from .base import Task, PeriodicTask
+from .sets import TaskSet, subtask
+from .chords import chord
+from .control import discard_all
 
 __all__ = ["Task", "TaskSet", "PeriodicTask", "subtask",
            "discard_all", "chord"]

+ 6 - 5
celery/task/base.py

@@ -1,8 +1,9 @@
-from celery import current_app
-from celery.app.task import Context, TaskType, BaseTask  # noqa
-from celery.schedules import maybe_schedule
-from celery.utils import deprecated
-from celery.utils import timeutils
+from __future__ import absolute_import
+
+from .. import current_app
+from ..app.task import Context, TaskType, BaseTask  # noqa
+from ..schedules import maybe_schedule
+from ..utils import deprecated, timeutils
 
 Task = current_app.Task
 

+ 6 - 4
celery/task/chords.py

@@ -1,8 +1,10 @@
-from kombu.utils import gen_unique_id
+from __future__ import absolute_import
 
-from celery import current_app
-from celery.result import TaskSetResult
-from celery.task.sets import TaskSet, subtask
+from .. import current_app
+from ..result import TaskSetResult
+from ..utils import gen_unique_id
+
+from .sets import TaskSet, subtask
 
 
 @current_app.task(name="celery.chord_unlock", max_retries=None)

+ 1 - 1
celery/task/control.py

@@ -3,7 +3,7 @@ from __future__ import with_statement
 
 from kombu.pidbox import Mailbox
 
-from celery.app import app_or_default
+from ..app import app_or_default
 
 
 def flatten_reply(reply):

+ 4 - 2
celery/task/http.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import urllib2
 
 from urllib import urlencode
@@ -9,8 +11,8 @@ except ImportError:  # pragma: no cover
 
 from anyjson import deserialize
 
-from celery import __version__ as celery_version
-from celery.task.base import Task as BaseTask
+from .. import __version__ as celery_version
+from .base import Task as BaseTask
 
 GET_METHODS = frozenset(["GET", "HEAD"])
 

+ 3 - 1
celery/task/schedules.py

@@ -1,5 +1,7 @@
+from __future__ import absolute_import
+
 import warnings
-from celery.schedules import schedule, crontab_parser, crontab
+from ..schedules import schedule, crontab_parser, crontab
 
 __all__ = ["schedule", "crontab_parser", "crontab"]
 

+ 6 - 8
celery/task/sets.py

@@ -3,13 +3,11 @@ from __future__ import with_statement
 
 import warnings
 
-from kombu.utils import cached_property
-
-from celery import registry
-from celery.app import app_or_default
-from celery.datastructures import AttributeDict
-from celery.utils import gen_unique_id, reprcall
-from celery.utils.compat import UserList
+from .. import registry
+from ..app import app_or_default
+from ..datastructures import AttributeDict
+from ..utils import cached_property, gen_unique_id, reprcall
+from ..utils.compat import UserList
 
 TASKSET_DEPRECATION_TEXT = """\
 Using this invocation of TaskSet is deprecated and will be removed
@@ -18,7 +16,7 @@ in Celery v2.4!
 TaskSets now supports multiple types of tasks, the API has to reflect
 this so the syntax has been changed to:
 
-    from celery.task.sets import TaskSet
+    from celery.task import TaskSet
 
     ts = TaskSet(tasks=[
             %(cls)s.subtask(args1, kwargs1, options1),

+ 4 - 4
celery/tests/utils.py

@@ -23,9 +23,9 @@ from contextlib import contextmanager
 import mock
 from nose import SkipTest
 
-from celery.app import app_or_default
-from celery.utils import noop
-from celery.utils.compat import StringIO, LoggerAdapter
+from ..app import app_or_default
+from ..utils import noop
+from ..utils.compat import StringIO, LoggerAdapter
 
 
 class Mock(mock.Mock):
@@ -57,7 +57,7 @@ def skip_unless_module(module):
 class AppCase(unittest.TestCase):
 
     def setUp(self):
-        from celery.app import current_app
+        from ..app import current_app
         self.app = self._current_app = current_app()
         self.setup()
 

+ 2 - 2
celery/utils/__init__.py

@@ -19,8 +19,8 @@ from pprint import pprint
 
 from kombu.utils import cached_property, gen_unique_id  # noqa
 
-from celery.utils.compat import StringIO
-from celery.utils.encoding import safe_repr as _safe_repr
+from .compat import StringIO
+from .encoding import safe_repr as _safe_repr
 
 LOG_LEVELS = dict(logging._levelNames)
 LOG_LEVELS["FATAL"] = logging.FATAL

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

@@ -1,3 +1,3 @@
-from celery.utils.dispatch.signal import Signal
+from .signal import Signal
 
 __all__ = ["Signal"]

+ 1 - 1
celery/utils/dispatch/signal.py

@@ -6,7 +6,7 @@ try:
 except NameError:
     from sets import Set as set                 # Python 2.3 fallback
 
-from celery.utils.dispatch import saferef
+from . import saferef
 
 WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
 

+ 3 - 1
celery/utils/term.py

@@ -9,9 +9,11 @@ term utils.
               c.green("dog ")))
 
 """
+from __future__ import absolute_import
+
 import platform
 
-from celery.utils.encoding import safe_str
+from .encoding import safe_str
 
 BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
 OP_SEQ = "\033[%dm"

+ 12 - 12
celery/worker/__init__.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import socket
 import logging
 import traceback
@@ -5,18 +7,16 @@ import traceback
 from kombu.syn import blocking
 from kombu.utils.finalize import Finalize
 
-from celery import beat
-from celery import concurrency as _concurrency
-from celery import registry
-from celery import platforms
-from celery import signals
-from celery.app import app_or_default
-from celery.exceptions import SystemTerminate
-from celery.log import SilenceRepeated
-from celery.utils import noop, instantiate
-
-from celery.worker import state
-from celery.worker.buckets import TaskBucket, FastQueue
+from .. import beat
+from .. import concurrency as _concurrency
+from .. import registry, platforms, signals
+from ..app import app_or_default
+from ..exceptions import SystemTerminate
+from ..log import SilenceRepeated
+from ..utils import noop, instantiate
+
+from . import state
+from .buckets import TaskBucket, FastQueue
 
 RUN = 0x1
 CLOSE = 0x2

+ 1 - 1
celery/worker/autoscale.py

@@ -8,7 +8,7 @@ import traceback
 
 from time import sleep, time
 
-from celery.worker import state
+from . import state
 
 
 class Autoscaler(threading.Thread):

+ 3 - 3
celery/worker/buckets.py

@@ -7,9 +7,9 @@ from collections import deque
 from time import time, sleep
 from Queue import Queue, Empty
 
-from celery.datastructures import TokenBucket
-from celery.utils import timeutils
-from celery.utils.compat import izip_longest, chain_from_iterable
+from ..datastructures import TokenBucket
+from ..utils import timeutils
+from ..utils.compat import izip_longest, chain_from_iterable
 
 
 class RateLimitExceeded(Exception):

+ 10 - 10
celery/worker/consumer.py

@@ -76,16 +76,16 @@ import threading
 import traceback
 import warnings
 
-from celery.app import app_or_default
-from celery.datastructures import AttributeDict
-from celery.exceptions import NotRegistered
-from celery.utils import noop
-from celery.utils import timer2
-from celery.utils.encoding import safe_repr
-from celery.worker import state
-from celery.worker.job import TaskRequest, InvalidTaskError
-from celery.worker.control.registry import Panel
-from celery.worker.heartbeat import Heart
+from ..app import app_or_default
+from ..datastructures import AttributeDict
+from ..exceptions import NotRegistered
+from ..utils import noop
+from ..utils import timer2
+from ..utils.encoding import safe_repr
+from . import state
+from .job import TaskRequest, InvalidTaskError
+from .control.registry import Panel
+from .heartbeat import Heart
 
 RUN = 0x1
 CLOSE = 0x2

+ 6 - 3
celery/worker/control/__init__.py

@@ -1,6 +1,9 @@
-from celery.worker.control import registry
+from __future__ import absolute_import
 
-Panel = registry.Panel
+from . import registry
 
 # Loads the built-in remote control commands
-__import__("celery.worker.control.builtins")
+from . import builtins  # noqa
+
+Panel = registry.Panel
+

+ 10 - 7
celery/worker/control/builtins.py

@@ -1,14 +1,17 @@
+from __future__ import absolute_import
+
 import sys
 
 from datetime import datetime
 
-from celery.platforms import signals as _signals
-from celery.registry import tasks
-from celery.utils import timeutils
-from celery.worker import state
-from celery.worker.state import revoked
-from celery.worker.control.registry import Panel
-from celery.utils.encoding import safe_repr
+from ...platforms import signals as _signals
+from ...registry import tasks
+from ...utils import timeutils
+from ...utils.encoding import safe_repr
+from .. import state
+from ..state import revoked
+
+from .registry import Panel
 
 TASK_INFO_FIELDS = ("exchange", "routing_key", "rate_limit")
 

+ 3 - 1
celery/worker/control/registry.py

@@ -1,4 +1,6 @@
-from celery.utils.compat import UserDict
+from __future__ import absolute_import
+
+from ...utils.compat import UserDict
 
 
 class Panel(UserDict):

+ 3 - 1
celery/worker/heartbeat.py

@@ -1,4 +1,6 @@
-from celery.worker.state import SOFTWARE_INFO
+from __future__ import absolute_import
+
+from .state import SOFTWARE_INFO
 
 
 class Heart(object):

+ 13 - 12
celery/worker/job.py

@@ -8,18 +8,19 @@ import warnings
 
 from datetime import datetime
 
-from celery import current_app
-from celery import exceptions
-from celery import platforms
-from celery import registry
-from celery.app import app_or_default
-from celery.datastructures import ExceptionInfo
-from celery.execute.trace import TaskTrace
-from celery.utils import (noop, kwdict, fun_takes_kwargs,
-                          get_symbol_by_name, truncate_text)
-from celery.utils.encoding import safe_repr, safe_str, default_encoding
-from celery.utils.timeutils import maybe_iso8601
-from celery.worker import state
+from .. import current_app
+from .. import exceptions
+from .. import platforms
+from .. import registry
+from ..app import app_or_default
+from ..datastructures import ExceptionInfo
+from ..execute.trace import TaskTrace
+from ..utils import (noop, kwdict, fun_takes_kwargs,
+                     get_symbol_by_name, truncate_text)
+from ..utils.encoding import safe_repr, safe_str, default_encoding
+from ..utils.timeutils import maybe_iso8601
+
+from . import state
 
 # pep8.py borks on a inline signature separator and
 # says "trailing whitespace" ;)

+ 3 - 1
celery/worker/mediator.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import sys
 import threading
@@ -5,7 +7,7 @@ import traceback
 
 from Queue import Empty
 
-from celery.app import app_or_default
+from ..app import app_or_default
 
 
 class Mediator(threading.Thread):

+ 4 - 2
celery/worker/state.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import platform
 import shelve
@@ -6,8 +8,8 @@ from collections import defaultdict
 
 from kombu.utils import cached_property
 
-from celery import __version__
-from celery.datastructures import LimitedSet
+from .. import __version__
+from ..datastructures import LimitedSet
 
 #: Worker software/platform information.
 SOFTWARE_INFO = {"sw_ident": "celeryd",