Browse Source

Use new-style relative imports

Ask Solem 13 years ago
parent
commit
b6179c7316
79 changed files with 389 additions and 295 deletions
  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.
 # :copyright: (c) 2009 - 2011 by Ask Solem.
 # :license:   BSD, see LICENSE for more details.
 # :license:   BSD, see LICENSE for more details.
 
 
+from __future__ import absolute_import
+
 import os
 import os
 import sys
 import sys
 
 
@@ -20,14 +22,14 @@ if sys.version_info < (2, 5):
 
 
 
 
 def Celery(*args, **kwargs):
 def Celery(*args, **kwargs):
-    from celery.app import App
+    from .app import App
     return App(*args, **kwargs)
     return App(*args, **kwargs)
 
 
 if not os.environ.get("CELERY_NO_EVAL", False):
 if not os.environ.get("CELERY_NO_EVAL", False):
-    from celery.local import LocalProxy
+    from .local import LocalProxy
 
 
     def _get_current_app():
     def _get_current_app():
-        from celery.app import current_app
+        from .app import current_app
         return current_app()
         return current_app()
 
 
     current_app = LocalProxy(_get_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.
 :license: BSD, see LICENSE for more details.
 
 
 """
 """
+
+from __future__ import absolute_import
+
 import os
 import os
 import threading
 import threading
 
 
@@ -16,9 +19,10 @@ from inspect import getargspec
 
 
 from kombu.utils import cached_property
 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
 # Apps with the :attr:`~celery.app.base.BaseApp.set_as_current` attribute
 # sets this, so it will always contain the last instantiated app,
 # sets this, so it will always contain the last instantiated app,
@@ -87,7 +91,7 @@ class App(base.BaseApp):
         taken from this app."""
         taken from this app."""
         conf = self.conf
         conf = self.conf
 
 
-        from celery.app.task import BaseTask
+        from .task import BaseTask
 
 
         class Task(BaseTask):
         class Task(BaseTask):
             abstract = True
             abstract = True
@@ -119,14 +123,14 @@ class App(base.BaseApp):
 
 
     def TaskSet(self, *args, **kwargs):
     def TaskSet(self, *args, **kwargs):
         """Create new :class:`~celery.task.sets.TaskSet`."""
         """Create new :class:`~celery.task.sets.TaskSet`."""
-        from celery.task.sets import TaskSet
+        from ..task.sets import TaskSet
         kwargs["app"] = self
         kwargs["app"] = self
         return TaskSet(*args, **kwargs)
         return TaskSet(*args, **kwargs)
 
 
     def worker_main(self, argv=None):
     def worker_main(self, argv=None):
         """Run :program:`celeryd` using `argv`.  Uses :data:`sys.argv`
         """Run :program:`celeryd` using `argv`.  Uses :data:`sys.argv`
         if `argv` is not specified."""
         if `argv` is not specified."""
-        from celery.bin.celeryd import WorkerCommand
+        from ..bin.celeryd import WorkerCommand
         return WorkerCommand(app=self).execute_from_commandline(argv)
         return WorkerCommand(app=self).execute_from_commandline(argv)
 
 
     def task(self, *args, **options):
     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.pools import ProducerPool
 from kombu.utils import cached_property
 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.
 #: List of known options to a Kombu producers send method.
 #: Used to extract the message related options out of any `dict`.
 #: 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 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
 import kombu
 if kombu.VERSION < (1, 1, 0):
 if kombu.VERSION < (1, 1, 0):
@@ -236,13 +237,13 @@ class BaseApp(object):
 
 
     def AsyncResult(self, task_id, backend=None, task_name=None):
     def AsyncResult(self, task_id, backend=None, task_name=None):
         """Create :class:`celery.result.BaseAsyncResult` instance."""
         """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,
         return BaseAsyncResult(task_id, app=self, task_name=task_name,
                                backend=backend or self.backend)
                                backend=backend or self.backend)
 
 
     def TaskSetResult(self, taskset_id, results, **kwargs):
     def TaskSetResult(self, taskset_id, results, **kwargs):
         """Create :class:`celery.result.TaskSetResult` instance."""
         """Create :class:`celery.result.TaskSetResult` instance."""
-        from celery.result import TaskSetResult
+        from ..result import TaskSetResult
         return TaskSetResult(taskset_id, results, app=self)
         return TaskSetResult(taskset_id, results, app=self)
 
 
     def broker_connection(self, hostname=None, userid=None,
     def broker_connection(self, hostname=None, userid=None,
@@ -346,7 +347,7 @@ class BaseApp(object):
         return lpmerge(l, r)
         return lpmerge(l, r)
 
 
     def _get_backend(self):
     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 = self.backend_cls or self.conf.CELERY_RESULT_BACKEND
         backend_cls = get_backend_cls(backend_cls, loader=self.loader)
         backend_cls = get_backend_cls(backend_cls, loader=self.loader)
         return backend_cls(app=self)
         return backend_cls(app=self)
@@ -414,7 +415,7 @@ class BaseApp(object):
     @cached_property
     @cached_property
     def loader(self):
     def loader(self):
         """Current loader."""
         """Current loader."""
-        from celery.loaders import get_loader_cls
+        from ..loaders import get_loader_cls
         return get_loader_cls(self.loader_cls)(app=self)
         return get_loader_cls(self.loader_cls)(app=self)
 
 
     @cached_property
     @cached_property

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

@@ -1,13 +1,15 @@
 # -*- coding: utf-8 -*-"
 # -*- coding: utf-8 -*-"
+from __future__ import absolute_import
+
 import sys
 import sys
 import threading
 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",
 extract_exec_options = mattrgetter("queue", "routing_key",
                                    "exchange", "immediate",
                                    "exchange", "immediate",
@@ -696,7 +698,7 @@ class BaseTask(object):
         """Returns :class:`~celery.task.sets.subtask` object for
         """Returns :class:`~celery.task.sets.subtask` object for
         this task, wrapping arguments and execution options
         this task, wrapping arguments and execution options
         for a single task invocation."""
         for a single task invocation."""
-        from celery.task.sets import subtask
+        from ...task.sets import subtask
         return subtask(cls, *args, **kwargs)
         return subtask(cls, *args, **kwargs)
 
 
     @property
     @property

+ 7 - 6
celery/apps/beat.py

@@ -1,14 +1,15 @@
+from __future__ import absolute_import
+
 import atexit
 import atexit
 import socket
 import socket
 import sys
 import sys
 import traceback
 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 = """
 STARTUP_INFO_FMT = """
 Configuration ->
 Configuration ->

+ 7 - 9
celery/apps/worker.py

@@ -11,13 +11,11 @@ import socket
 import sys
 import sys
 import warnings
 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 = """
 BANNER = """
  -------------- celery@%(hostname)s v%(version)s
  -------------- celery@%(hostname)s v%(version)s
@@ -183,7 +181,7 @@ class Worker(object):
         self.loader.init_worker()
         self.loader.init_worker()
 
 
     def tasklist(self, include_builtins=True):
     def tasklist(self, include_builtins=True):
-        from celery.registry import tasks
+        from ..registry import tasks
         tasklist = tasks.keys()
         tasklist = tasks.keys()
         if not include_builtins:
         if not include_builtins:
             tasklist = filter(lambda s: not s.startswith("celery."),
             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):
     def rdb_handler(signum, frame):
         """Signal handler setting a rdb breakpoint at the current frame."""
         """Signal handler setting a rdb breakpoint at the current frame."""
-        from celery.contrib import rdb
+        from ..contrib import rdb
         rdb.set_trace(frame)
         rdb.set_trace(frame)
 
 
     if os.environ.get(envvar):
     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 = {
 BACKEND_ALIASES = {
     "amqp": "celery.backends.amqp.AMQPBackend",
     "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.entity import Exchange, Queue
 from kombu.messaging import Consumer, Producer
 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):
 class BacklogLimitExceeded(Exception):

+ 11 - 9
celery/backends/base.py

@@ -1,4 +1,6 @@
 """celery.backends.base"""
 """celery.backends.base"""
+from __future__ import absolute_import
+
 import time
 import time
 import sys
 import sys
 
 
@@ -6,13 +8,13 @@ from datetime import timedelta
 
 
 from kombu import serialization
 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"])
 EXCEPTION_ABLE_CODECS = frozenset(["pickle", "yaml"])
 
 
@@ -36,7 +38,7 @@ class BaseBackend(object):
     subpolling_interval = None
     subpolling_interval = None
 
 
     def __init__(self, *args, **kwargs):
     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.app = app_or_default(kwargs.get("app"))
         self.serializer = kwargs.get("serializer",
         self.serializer = kwargs.get("serializer",
                                      self.app.conf.CELERY_RESULT_SERIALIZER)
                                      self.app.conf.CELERY_RESULT_SERIALIZER)
@@ -198,7 +200,7 @@ class BaseBackend(object):
         pass
         pass
 
 
     def on_chord_apply(self, setid, body, *args, **kwargs):
     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,
         tasks["celery.chord_unlock"].apply_async((setid, body, ), kwargs,
                                                  countdown=1)
                                                  countdown=1)
 
 

+ 6 - 3
celery/backends/cache.py

@@ -1,8 +1,11 @@
+from __future__ import absolute_import
+
 from kombu.utils import cached_property
 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]
 _imp = [None]
 
 

+ 7 - 4
celery/backends/cassandra.py

@@ -1,4 +1,6 @@
 """celery.backends.cassandra"""
 """celery.backends.cassandra"""
+from __future__ import absolute_import
+
 try:
 try:
     import pycassa
     import pycassa
     from thrift import Thrift
     from thrift import Thrift
@@ -11,10 +13,11 @@ import time
 
 
 from datetime import datetime
 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):
 class CassandraBackend(BaseDictBackend):

+ 9 - 6
celery/backends/database.py

@@ -1,11 +1,14 @@
+from __future__ import absolute_import
+
 from datetime import datetime
 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():
 def _sqlalchemy_installed():

+ 6 - 4
celery/backends/mongodb.py

@@ -1,4 +1,6 @@
 """MongoDB backend for celery."""
 """MongoDB backend for celery."""
+from __future__ import absolute_import
+
 from datetime import datetime
 from datetime import datetime
 
 
 try:
 try:
@@ -6,11 +8,11 @@ try:
 except ImportError:
 except ImportError:
     pymongo = None  # noqa
     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:
 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 __future__ import absolute_import
 
 
-from celery.backends import redis
+from . import redis
 
 
 
 
 class RedisBackend(redis.RedisBackend):
 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 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:
 try:
     import redis
     import redis
@@ -77,8 +78,8 @@ class RedisBackend(KeyValueStoreBackend):
 
 
     def on_chord_part_return(self, task, propagate=False,
     def on_chord_part_return(self, task, propagate=False,
             keyprefix="chord-unlock-%s"):
             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
         setid = task.request.taskset
         key = keyprefix % setid
         key = keyprefix % setid
         deps = TaskSetResult.restore(setid, backend=task.backend)
         deps = TaskSetResult.restore(setid, backend=task.backend)

+ 5 - 2
celery/backends/tyrant.py

@@ -1,11 +1,14 @@
 """celery.backends.tyrant"""
 """celery.backends.tyrant"""
+from __future__ import absolute_import
+
 try:
 try:
     import pytyrant
     import pytyrant
 except ImportError:
 except ImportError:
     pytyrant = None  # noqa
     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):
 class TyrantBackend(KeyValueStoreBackend):

+ 9 - 9
celery/beat.py

@@ -16,15 +16,15 @@ from datetime import datetime
 
 
 from kombu.utils import cached_property
 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):
 class SchedulingError(Exception):

+ 6 - 4
celery/bin/base.py

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

+ 6 - 3
celery/bin/camqadm.py

@@ -4,6 +4,8 @@
 .. program:: camqadm
 .. program:: camqadm
 
 
 """
 """
+from __future__ import absolute_import
+
 import cmd
 import cmd
 import sys
 import sys
 import shlex
 import shlex
@@ -13,9 +15,10 @@ from itertools import count
 
 
 from amqplib import client_0_8 as amqp
 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.
 # Valid string -> bool coercions.
 BOOLS = {"1": True, "0": False,
 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 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):
 class BeatCommand(Command):

+ 6 - 5
celery/bin/celeryctl.py

@@ -8,10 +8,11 @@ from textwrap import wrap
 
 
 from anyjson import deserialize
 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 = {}
 commands = {}
@@ -201,7 +202,7 @@ class result(Command):
     )
     )
 
 
     def run(self, task_id, *args, **kwargs):
     def run(self, task_id, *args, **kwargs):
-        from celery import registry
+        from .. import registry
         result_cls = self.app.AsyncResult
         result_cls = self.app.AsyncResult
         task = kwargs.get("task")
         task = kwargs.get("task")
 
 

+ 4 - 2
celery/bin/celeryd.py

@@ -71,6 +71,8 @@
     terminated and replaced by a new worker.
     terminated and replaced by a new worker.
 
 
 """
 """
+from __future__ import absolute_import
+
 import sys
 import sys
 
 
 try:
 try:
@@ -78,7 +80,7 @@ try:
 except ImportError:  # pragma: no cover
 except ImportError:  # pragma: no cover
     freeze_support = lambda: True  # noqa
     freeze_support = lambda: True  # noqa
 
 
-from celery.bin.base import Command, Option
+from .base import Command, Option
 
 
 
 
 class WorkerCommand(Command):
 class WorkerCommand(Command):
@@ -90,7 +92,7 @@ class WorkerCommand(Command):
         kwargs.pop("app", None)
         kwargs.pop("app", None)
         # Pools like eventlet/gevent needs to patch libs as early
         # Pools like eventlet/gevent needs to patch libs as early
         # as possible.
         # as possible.
-        from celery import concurrency
+        from .. import concurrency
         kwargs["pool"] = concurrency.get_implementation(
         kwargs["pool"] = concurrency.get_implementation(
                     kwargs.get("pool") or self.app.conf.CELERYD_POOL)
                     kwargs.get("pool") or self.app.conf.CELERYD_POOL)
         return self.app.Worker(**kwargs).run()
         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 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")
 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)
             os.execv(path, [path] + argv)
         except Exception:
         except Exception:
             import logging
             import logging
-            from celery.log import setup_logger
+            from ..log import setup_logger
             logger = setup_logger(logfile=logfile, loglevel=logging.ERROR)
             logger = setup_logger(logfile=logfile, loglevel=logging.ERROR)
             logger.critical("Can't exec %r", " ".join([path] + argv),
             logger.critical("Can't exec %r", " ".join([path] + argv),
                             exc_info=sys.exc_info())
                             exc_info=sys.exc_info())

+ 5 - 3
celery/bin/celeryd_multi.py

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

+ 7 - 6
celery/bin/celeryev.py

@@ -5,9 +5,10 @@ import sys
 
 
 from functools import partial
 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):
 class EvCommand(Command):
@@ -31,19 +32,19 @@ class EvCommand(Command):
         return self.run_evtop()
         return self.run_evtop()
 
 
     def run_evdump(self):
     def run_evdump(self):
-        from celery.events.dumper import evdump
+        from ..events.dumper import evdump
         self.set_process_status("dump")
         self.set_process_status("dump")
         return evdump(app=self.app)
         return evdump(app=self.app)
 
 
     def run_evtop(self):
     def run_evtop(self):
-        from celery.events.cursesmon import evtop
+        from ..events.cursesmon import evtop
         self.set_process_status("top")
         self.set_process_status("top")
         return evtop(app=self.app)
         return evtop(app=self.app)
 
 
     def run_evcam(self, camera, logfile=None, pidfile=None, uid=None,
     def run_evcam(self, camera, logfile=None, pidfile=None, uid=None,
             gid=None, umask=None, working_directory=None,
             gid=None, umask=None, working_directory=None,
             detach=False, **kwargs):
             detach=False, **kwargs):
-        from celery.events.snapshot import evcam
+        from ..events.snapshot import evcam
         workdir = working_directory
         workdir = working_directory
         self.set_process_status("cam")
         self.set_process_status("cam")
         kwargs["app"] = self.app
         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 = {
 ALIASES = {
     "processes": "celery.concurrency.processes.TaskPool",
     "processes": "celery.concurrency.processes.TaskPool",

+ 5 - 3
celery/concurrency/base.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import os
 import sys
 import sys
 import time
 import time
@@ -5,9 +7,9 @@ import traceback
 
 
 from functools import partial
 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,
 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 os
 import sys
 import sys
 
 
@@ -7,8 +9,9 @@ if not os.environ.get("GEVENT_NOPATCH"):
     from gevent import monkey
     from gevent import monkey
     monkey.patch_all()
     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):
 class Schedule(timer2.Schedule):

+ 6 - 3
celery/concurrency/evlet.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import os
 import sys
 import sys
 
 
@@ -9,9 +11,10 @@ if not os.environ.get("EVENTLET_NOPATCH"):
     eventlet.monkey_patch()
     eventlet.monkey_patch()
     eventlet.debug.hub_prevent_multiple_readers(False)
     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,
 def apply_target(target, args=(), kwargs={}, callback=None,

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

@@ -3,20 +3,21 @@
 Process Pools.
 Process Pools.
 
 
 """
 """
+from __future__ import absolute_import
+
 import platform
 import platform
 import signal as _signal
 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
 if platform.system() == "Windows":  # pragma: no cover
     # On Windows os.kill calls TerminateProcess which cannot be
     # On Windows os.kill calls TerminateProcess which cannot be
     # handled by # any process, so this is needed to terminate the task
     # handled by # any process, so this is needed to terminate the task
     # *and its children* (if any).
     # *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:
 else:
-    from os import kill as _kill
+    from os import kill as _kill                 # noqa
 
 
 
 
 class TaskPool(BasePool):
 class TaskPool(BasePool):

+ 3 - 1
celery/concurrency/solo.py

@@ -1,6 +1,8 @@
+from __future__ import absolute_import
+
 import os
 import os
 
 
-from celery.concurrency.base import BasePool, apply_target
+from .base import BasePool, apply_target
 
 
 
 
 class TaskPool(BasePool):
 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):
 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
 _DEFAULTS = defaults.DEFAULTS
 conf = current_app.conf
 conf = current_app.conf

+ 1 - 1
celery/datastructures.py

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

+ 8 - 4
celery/db/models.py

@@ -1,14 +1,18 @@
+from __future__ import absolute_import
+
 from datetime import datetime
 from datetime import datetime
 
 
 import sqlalchemy as sa
 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 ;)
 # See docstring of a805d4bd for an explanation for this workaround ;)
 if sa.__version__.startswith('0.5'):
 if sa.__version__.startswith('0.5'):
-    from celery.db.dfd042c7 import PickleType
+    from .dfd042c7 import PickleType
 else:
 else:
-    from celery.db.a805d4bd import PickleType  # noqa
+    from .a805d4bd import PickleType  # noqa
 
 
 
 
 class Task(ResultModelBase):
 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.
 :license: BSD, see LICENSE for more details.
 
 
 """
 """
+from __future__ import absolute_import
+
 import warnings
 import warnings
 
 
-from celery import task as _task
+from . import task as _task
 
 
 
 
 warnings.warn(PendingDeprecationWarning("""
 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.entity import Exchange, Queue
 from kombu.messaging import Consumer, Producer
 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")
 event_exchange = Exchange("celeryev", type="topic")
 
 
@@ -240,7 +240,7 @@ class Events(object):
                                app=self.app)
                                app=self.app)
 
 
     def State(self):
     def State(self):
-        from celery.events.state import State as _State
+        from .state import State as _State
         return _State()
         return _State()
 
 
     @contextmanager
     @contextmanager

+ 7 - 5
celery/events/cursesmon.py

@@ -1,4 +1,5 @@
-import celery
+from __future__ import absolute_import
+
 import curses
 import curses
 import sys
 import sys
 import threading
 import threading
@@ -9,9 +10,10 @@ from itertools import count
 from textwrap import wrap
 from textwrap import wrap
 from math import ceil
 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
 BORDER_SPACING = 4
 LEFT_BORDER_OFFSET = 3
 LEFT_BORDER_OFFSET = 3
@@ -35,7 +37,7 @@ class CursesMonitor(object):
     online_str = "Workers online: "
     online_str = "Workers online: "
     help_title = "Keys: "
     help_title = "Keys: "
     help = ("j:up k:down i:info t:traceback r:result c:revoke ^c: quit")
     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: "
     info_str = "Info: "
 
 
     def __init__(self, state, keymap=None, app=None):
     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
 import sys
 
 
 from datetime import datetime
 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)
 TASK_NAMES = LocalCache(0xFFF)

+ 8 - 7
celery/events/snapshot.py

@@ -1,12 +1,13 @@
+from __future__ import absolute_import
+
 import atexit
 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):
 class Polaroid(object):

+ 3 - 3
celery/events/state.py

@@ -6,9 +6,9 @@ import heapq
 
 
 from threading import Lock
 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
 #: Hartbeat expiry time in seconds.  The worker will be considered offline
 #: if no heartbeat is received within this time.
 #: if no heartbeat is received within this time.

+ 3 - 3
celery/execute/__init__.py

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 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
 send_task = current_app.send_task
 
 
@@ -21,5 +21,5 @@ def apply(task, *args, **kwargs):
 @deprecated(removal="2.3",
 @deprecated(removal="2.3",
             alternative="Use registry.tasks[name].delay instead.")
             alternative="Use registry.tasks[name].delay instead.")
 def delay_task(task, *args, **kwargs):
 def delay_task(task, *args, **kwargs):
-    from celery.registry import tasks
+    from ..registry import tasks
     return tasks[task].apply_async(args, kwargs)
     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 sys
 import traceback
 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):
 class TraceInfo(object):

+ 2 - 2
celery/loaders/__init__.py

@@ -2,8 +2,8 @@ from __future__ import absolute_import
 
 
 import os
 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",
 LOADER_ALIASES = {"app": "celery.loaders.app.AppLoader",
                   "default": "celery.loaders.default.Loader",
                   "default": "celery.loaders.default.Loader",

+ 1 - 1
celery/loaders/app.py

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

+ 5 - 6
celery/loaders/base.py

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

+ 5 - 4
celery/loaders/default.py

@@ -3,10 +3,11 @@ from __future__ import absolute_import
 import os
 import os
 import warnings
 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"
 DEFAULT_CONFIG_MODULE = "celeryconfig"
 
 

+ 7 - 8
celery/log.py

@@ -12,14 +12,13 @@ try:
 except ImportError:
 except ImportError:
     current_process = mputil = None  # noqa
     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):
 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
 TaskPublisher = current_app.amqp.TaskPublisher
 ConsumerSet = current_app.amqp.ConsumerSet
 ConsumerSet = current_app.amqp.ConsumerSet

+ 1 - 1
celery/platforms.py

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

+ 1 - 1
celery/registry.py

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

+ 6 - 6
celery/result.py

@@ -6,12 +6,12 @@ import time
 from copy import copy
 from copy import copy
 from itertools import imap
 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):
 def _unpickle_result(task_id, task_name):

+ 3 - 3
celery/routes.py

@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 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")
 _first_route = firstmethod("route_for_task")
 
 
@@ -22,7 +22,7 @@ class Router(object):
 
 
     def __init__(self, routes=None, queues=None, create_missing=False,
     def __init__(self, routes=None, queues=None, create_missing=False,
             app=None):
             app=None):
-        from celery.app import app_or_default
+        from .app import app_or_default
         self.app = app_or_default(app)
         self.app = app_or_default(app)
         self.queues = {} if queues is None else queues
         self.queues = {} if queues is None else queues
         self.routes = [] if routes is None else routes
         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,
 from pyparsing import (Word, Literal, ZeroOrMore, Optional,
                        Group, StringEnd, alphas)
                        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):
 class schedule(object):

+ 3 - 1
celery/signals.py

@@ -1,4 +1,6 @@
+from __future__ import absolute_import
 """
 """
+
 ==============
 ==============
 celery.signals
 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",
 task_sent = Signal(providing_args=["task_id", "task",
                                    "args", "kwargs",
                                    "args", "kwargs",

+ 8 - 5
celery/task/__init__.py

@@ -1,11 +1,14 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
+from __future__ import absolute_import
+
 import warnings
 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",
 __all__ = ["Task", "TaskSet", "PeriodicTask", "subtask",
            "discard_all", "chord"]
            "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
 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)
 @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 kombu.pidbox import Mailbox
 
 
-from celery.app import app_or_default
+from ..app import app_or_default
 
 
 
 
 def flatten_reply(reply):
 def flatten_reply(reply):

+ 4 - 2
celery/task/http.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import urllib2
 import urllib2
 
 
 from urllib import urlencode
 from urllib import urlencode
@@ -9,8 +11,8 @@ except ImportError:  # pragma: no cover
 
 
 from anyjson import deserialize
 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"])
 GET_METHODS = frozenset(["GET", "HEAD"])
 
 

+ 3 - 1
celery/task/schedules.py

@@ -1,5 +1,7 @@
+from __future__ import absolute_import
+
 import warnings
 import warnings
-from celery.schedules import schedule, crontab_parser, crontab
+from ..schedules import schedule, crontab_parser, crontab
 
 
 __all__ = ["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
 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 = """\
 TASKSET_DEPRECATION_TEXT = """\
 Using this invocation of TaskSet is deprecated and will be removed
 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
 TaskSets now supports multiple types of tasks, the API has to reflect
 this so the syntax has been changed to:
 this so the syntax has been changed to:
 
 
-    from celery.task.sets import TaskSet
+    from celery.task import TaskSet
 
 
     ts = TaskSet(tasks=[
     ts = TaskSet(tasks=[
             %(cls)s.subtask(args1, kwargs1, options1),
             %(cls)s.subtask(args1, kwargs1, options1),

+ 4 - 4
celery/tests/utils.py

@@ -23,9 +23,9 @@ from contextlib import contextmanager
 import mock
 import mock
 from nose import SkipTest
 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):
 class Mock(mock.Mock):
@@ -57,7 +57,7 @@ def skip_unless_module(module):
 class AppCase(unittest.TestCase):
 class AppCase(unittest.TestCase):
 
 
     def setUp(self):
     def setUp(self):
-        from celery.app import current_app
+        from ..app import current_app
         self.app = self._current_app = current_app()
         self.app = self._current_app = current_app()
         self.setup()
         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 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 = dict(logging._levelNames)
 LOG_LEVELS["FATAL"] = logging.FATAL
 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"]
 __all__ = ["Signal"]

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

@@ -6,7 +6,7 @@ try:
 except NameError:
 except NameError:
     from sets import Set as set                 # Python 2.3 fallback
     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)
 WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
 
 

+ 3 - 1
celery/utils/term.py

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

+ 12 - 12
celery/worker/__init__.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import socket
 import socket
 import logging
 import logging
 import traceback
 import traceback
@@ -5,18 +7,16 @@ import traceback
 from kombu.syn import blocking
 from kombu.syn import blocking
 from kombu.utils.finalize import Finalize
 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
 RUN = 0x1
 CLOSE = 0x2
 CLOSE = 0x2

+ 1 - 1
celery/worker/autoscale.py

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

+ 3 - 3
celery/worker/buckets.py

@@ -7,9 +7,9 @@ from collections import deque
 from time import time, sleep
 from time import time, sleep
 from Queue import Queue, Empty
 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):
 class RateLimitExceeded(Exception):

+ 10 - 10
celery/worker/consumer.py

@@ -76,16 +76,16 @@ import threading
 import traceback
 import traceback
 import warnings
 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
 RUN = 0x1
 CLOSE = 0x2
 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
 # 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
 import sys
 
 
 from datetime import datetime
 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")
 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):
 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):
 class Heart(object):

+ 13 - 12
celery/worker/job.py

@@ -8,18 +8,19 @@ import warnings
 
 
 from datetime import datetime
 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
 # pep8.py borks on a inline signature separator and
 # says "trailing whitespace" ;)
 # says "trailing whitespace" ;)

+ 3 - 1
celery/worker/mediator.py

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

+ 4 - 2
celery/worker/state.py

@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 import os
 import os
 import platform
 import platform
 import shelve
 import shelve
@@ -6,8 +8,8 @@ from collections import defaultdict
 
 
 from kombu.utils import cached_property
 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.
 #: Worker software/platform information.
 SOFTWARE_INFO = {"sw_ident": "celeryd",
 SOFTWARE_INFO = {"sw_ident": "celeryd",