Parcourir la source

2.6 is now Celery 3.0 (Chiastic Slide)

Ask Solem il y a 12 ans
Parent
commit
2e0d7293a1

+ 10 - 10
Changelog

@@ -5,14 +5,14 @@
 .. contents::
 .. contents::
     :local:
     :local:
 
 
-.. _version-2.6.0:
+.. _version-3.0.0:
 
 
-2.6.0
-=====
+3.0.0 (Chiastic Slide)
+======================
 :status: FROZEN
 :status: FROZEN
 :branch: master
 :branch: master
 
 
-See :ref:`whatsnew-2.6`.
+See :ref:`whatsnew-3.0`.
 
 
 .. _version-2.5.2:
 .. _version-2.5.2:
 
 
@@ -324,7 +324,7 @@ Important Notes
     :setting:`CELERY_TASK_RESULT_EXPIRES` setting.
     :setting:`CELERY_TASK_RESULT_EXPIRES` setting.
 
 
     The old :setting:`CELERY_AMQP_TASK_RESULT_EXPIRES` setting has been
     The old :setting:`CELERY_AMQP_TASK_RESULT_EXPIRES` setting has been
-    deprecated and will be removed in version 3.0.
+    deprecated and will be removed in version 4.0.
 
 
     Note that this means that the result backend requires RabbitMQ 1.1.0 or
     Note that this means that the result backend requires RabbitMQ 1.1.0 or
     higher, and that you have to disable expiration if you are running
     higher, and that you have to disable expiration if you are running
@@ -396,12 +396,12 @@ Important Notes
     white-list setting.
     white-list setting.
 
 
     The :setting:`CELERY_TASK_ERROR_WHITELIST` setting has been deprecated,
     The :setting:`CELERY_TASK_ERROR_WHITELIST` setting has been deprecated,
-    and will be removed completely in version 3.0.
+    and will be removed completely in version 4.0.
 
 
 * Additional Deprecations
 * Additional Deprecations
 
 
     The following functions has been deprecated and is scheduled for removal in
     The following functions has been deprecated and is scheduled for removal in
-    version 3.0:
+    version 4.0:
 
 
     =====================================  ===================================
     =====================================  ===================================
     **Old function**                       **Alternative**
     **Old function**                       **Alternative**
@@ -414,7 +414,7 @@ Important Notes
     =====================================  ===================================
     =====================================  ===================================
 
 
     The following settings has been deprecated and is scheduled for removal
     The following settings has been deprecated and is scheduled for removal
-    in version 3.0:
+    in version 4.0:
 
 
     =====================================  ===================================
     =====================================  ===================================
     **Old setting**                        **Alternative**
     **Old setting**                        **Alternative**
@@ -1440,11 +1440,11 @@ Important Notes
         Using the decorators in :mod:`celery.decorators` emits a
         Using the decorators in :mod:`celery.decorators` emits a
         :class:`PendingDeprecationWarning` with a helpful message urging
         :class:`PendingDeprecationWarning` with a helpful message urging
         you to change your code, in version 2.4 this will be replaced with
         you to change your code, in version 2.4 this will be replaced with
-        a :class:`DeprecationWarning`, and in version 3.0 the
+        a :class:`DeprecationWarning`, and in version 4.0 the
         :mod:`celery.decorators` module will be removed and no longer exist.
         :mod:`celery.decorators` module will be removed and no longer exist.
 
 
         Similarly, the `task.accept_magic_kwargs` attribute will no
         Similarly, the `task.accept_magic_kwargs` attribute will no
-        longer have any effect starting from version 3.0.
+        longer have any effect starting from version 4.0.
 
 
 * The magic keyword arguments are now available as `task.request`
 * The magic keyword arguments are now available as `task.request`
 
 

+ 1 - 1
README.rst

@@ -4,7 +4,7 @@
 
 
 .. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
 .. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
 
 
-:Version: 2.6.0rc5
+:Version: 3.0.0rc5 (Chiastic Slide)
 :Web: http://celeryproject.org/
 :Web: http://celeryproject.org/
 :Download: http://pypi.python.org/pypi/celery/
 :Download: http://pypi.python.org/pypi/celery/
 :Source: http://github.com/celery/celery/
 :Source: http://github.com/celery/celery/

+ 5 - 2
celery/__init__.py

@@ -7,12 +7,14 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
-VERSION = (2, 6, 0, 'rc5')
+SERIES = 'Chiastic Slide'
+VERSION = (3, 0, 0, 'rc5')
 __version__ = '.'.join(map(str, VERSION[0:3])) + ''.join(VERSION[3:])
 __version__ = '.'.join(map(str, VERSION[0:3])) + ''.join(VERSION[3:])
 __author__ = 'Ask Solem'
 __author__ = 'Ask Solem'
 __contact__ = 'ask@celeryproject.org'
 __contact__ = 'ask@celeryproject.org'
 __homepage__ = 'http://celeryproject.org'
 __homepage__ = 'http://celeryproject.org'
 __docformat__ = 'restructuredtext'
 __docformat__ = 'restructuredtext'
+VERSION_BANNER = '%s (%s)' % (__version__, SERIES)
 
 
 # -eof meta-
 # -eof meta-
 
 
@@ -32,5 +34,6 @@ old_module, new_module = recreate_module(__name__,  # pragma: no cover
     __package__='celery', __file__=__file__,
     __package__='celery', __file__=__file__,
     __path__=__path__, __doc__=__doc__, __version__=__version__,
     __path__=__path__, __doc__=__doc__, __version__=__version__,
     __author__=__author__, __contact__=__contact__,
     __author__=__author__, __contact__=__contact__,
-    __homepage__=__homepage__, __docformat__=__docformat__, VERSION=VERSION,
+    __homepage__=__homepage__, __docformat__=__docformat__,
+    VERSION=VERSION, SERIES=SERIES, VERSION_BANNER=VERSION_BANNER,
 )
 )

+ 11 - 11
celery/app/defaults.py

@@ -36,8 +36,8 @@ DEFAULT_LOG_FMT = '[%(asctime)s: %(levelname)s] %(message)s'
 DEFAULT_TASK_LOG_FMT = """[%(asctime)s: %(levelname)s/%(processName)s] \
 DEFAULT_TASK_LOG_FMT = """[%(asctime)s: %(levelname)s/%(processName)s] \
 %(task_name)s[%(task_id)s]: %(message)s"""
 %(task_name)s[%(task_id)s]: %(message)s"""
 
 
-_BROKER_OLD = {'deprecate_by': '2.5', 'remove_by': '3.0', 'alt': 'BROKER_URL'}
-_REDIS_OLD = {'deprecate_by': '2.5', 'remove_by': '3.0',
+_BROKER_OLD = {'deprecate_by': '2.5', 'remove_by': '4.0', 'alt': 'BROKER_URL'}
+_REDIS_OLD = {'deprecate_by': '2.5', 'remove_by': '4.0',
               'alt': 'URL form of CELERY_RESULT_BACKEND'}
               'alt': 'URL form of CELERY_RESULT_BACKEND'}
 
 
 
 
@@ -69,7 +69,7 @@ NAMESPACES = {
         'CONNECTION_MAX_RETRIES': Option(100, type='int'),
         'CONNECTION_MAX_RETRIES': Option(100, type='int'),
         'POOL_LIMIT': Option(10, type='int'),
         'POOL_LIMIT': Option(10, type='int'),
         'INSIST': Option(False, type='bool',
         'INSIST': Option(False, type='bool',
-                         deprecate_by='2.4', remove_by='3.0'),
+                         deprecate_by='2.4', remove_by='4.0'),
         'USE_SSL': Option(False, type='bool'),
         'USE_SSL': Option(False, type='bool'),
         'TRANSPORT': Option(type='string'),
         'TRANSPORT': Option(type='string'),
         'TRANSPORT_OPTIONS': Option({}, type='dict'),
         'TRANSPORT_OPTIONS': Option({}, type='dict'),
@@ -91,7 +91,7 @@ NAMESPACES = {
         'ACKS_LATE': Option(False, type='bool'),
         'ACKS_LATE': Option(False, type='bool'),
         'ALWAYS_EAGER': Option(False, type='bool'),
         'ALWAYS_EAGER': Option(False, type='bool'),
         'AMQP_TASK_RESULT_EXPIRES': Option(type='float',
         'AMQP_TASK_RESULT_EXPIRES': Option(type='float',
-                deprecate_by='2.5', remove_by='3.0',
+                deprecate_by='2.5', remove_by='4.0',
                 alt='CELERY_TASK_RESULT_EXPIRES'),
                 alt='CELERY_TASK_RESULT_EXPIRES'),
         'AMQP_TASK_RESULT_CONNECTION_MAX': Option(1, type='int',
         'AMQP_TASK_RESULT_CONNECTION_MAX': Option(1, type='int',
                 remove_by='2.5', alt='BROKER_POOL_LIMIT'),
                 remove_by='2.5', alt='BROKER_POOL_LIMIT'),
@@ -137,7 +137,7 @@ NAMESPACES = {
         'SEND_TASK_SENT_EVENT': Option(False, type='bool'),
         'SEND_TASK_SENT_EVENT': Option(False, type='bool'),
         'STORE_ERRORS_EVEN_IF_IGNORED': Option(False, type='bool'),
         'STORE_ERRORS_EVEN_IF_IGNORED': Option(False, type='bool'),
         'TASK_ERROR_WHITELIST': Option((), type='tuple',
         'TASK_ERROR_WHITELIST': Option((), type='tuple',
-            deprecate_by='2.5', remove_by='3.0'),
+            deprecate_by='2.5', remove_by='4.0'),
         'TASK_PUBLISH_RETRY': Option(True, type='bool'),
         'TASK_PUBLISH_RETRY': Option(True, type='bool'),
         'TASK_PUBLISH_RETRY_POLICY': Option({
         'TASK_PUBLISH_RETRY_POLICY': Option({
                 'max_retries': 100,
                 'max_retries': 100,
@@ -167,9 +167,9 @@ NAMESPACES = {
         'CONSUMER': Option(type='string'),
         'CONSUMER': Option(type='string'),
         'LOG_FORMAT': Option(DEFAULT_PROCESS_LOG_FMT),
         'LOG_FORMAT': Option(DEFAULT_PROCESS_LOG_FMT),
         'LOG_COLOR': Option(type='bool'),
         'LOG_COLOR': Option(type='bool'),
-        'LOG_LEVEL': Option('WARN', deprecate_by='2.4', remove_by='3.0',
+        'LOG_LEVEL': Option('WARN', deprecate_by='2.4', remove_by='4.0',
                             alt='--loglevel argument'),
                             alt='--loglevel argument'),
-        'LOG_FILE': Option(deprecate_by='2.4', remove_by='3.0',
+        'LOG_FILE': Option(deprecate_by='2.4', remove_by='4.0',
                             alt='--logfile argument'),
                             alt='--logfile argument'),
         'MEDIATOR': Option('celery.worker.mediator.Mediator'),
         'MEDIATOR': Option('celery.worker.mediator.Mediator'),
         'MAX_TASKS_PER_CHILD': Option(type='int'),
         'MAX_TASKS_PER_CHILD': Option(type='int'),
@@ -187,15 +187,15 @@ NAMESPACES = {
         'SCHEDULER': Option('celery.beat.PersistentScheduler'),
         'SCHEDULER': Option('celery.beat.PersistentScheduler'),
         'SCHEDULE_FILENAME': Option('celerybeat-schedule'),
         'SCHEDULE_FILENAME': Option('celerybeat-schedule'),
         'MAX_LOOP_INTERVAL': Option(0, type='float'),
         'MAX_LOOP_INTERVAL': Option(0, type='float'),
-        'LOG_LEVEL': Option('INFO', deprecate_by='2.4', remove_by='3.0',
+        'LOG_LEVEL': Option('INFO', deprecate_by='2.4', remove_by='4.0',
                             alt='--loglevel argument'),
                             alt='--loglevel argument'),
-        'LOG_FILE': Option(deprecate_by='2.4', remove_by='3.0',
+        'LOG_FILE': Option(deprecate_by='2.4', remove_by='4.0',
                            alt='--logfile argument'),
                            alt='--logfile argument'),
     },
     },
     'CELERYMON': {
     'CELERYMON': {
-        'LOG_LEVEL': Option('INFO', deprecate_by='2.4', remove_by='3.0',
+        'LOG_LEVEL': Option('INFO', deprecate_by='2.4', remove_by='4.0',
                             alt='--loglevel argument'),
                             alt='--loglevel argument'),
-        'LOG_FILE': Option(deprecate_by='2.4', remove_by='3.0',
+        'LOG_FILE': Option(deprecate_by='2.4', remove_by='4.0',
                            alt='--logfile argument'),
                            alt='--logfile argument'),
         'LOG_FORMAT': Option(DEFAULT_LOG_FMT),
         'LOG_FORMAT': Option(DEFAULT_LOG_FMT),
     },
     },

+ 1 - 1
celery/app/registry.py

@@ -43,7 +43,7 @@ class TaskRegistry(dict):
         except KeyError:
         except KeyError:
             raise self.NotRegistered(name)
             raise self.NotRegistered(name)
 
 
-    # -- these methods are irrelevant now and will be removed in 3.0
+    # -- these methods are irrelevant now and will be removed in 4.0
     def regular(self):
     def regular(self):
         return self.filter_types('regular')
         return self.filter_types('regular')
 
 

+ 1 - 1
celery/app/task.py

@@ -155,7 +155,7 @@ class Task(object):
     abstract = True
     abstract = True
 
 
     #: If disabled the worker will not forward magic keyword arguments.
     #: If disabled the worker will not forward magic keyword arguments.
-    #: Deprecated and scheduled for removal in v3.0.
+    #: Deprecated and scheduled for removal in v4.0.
     accept_magic_kwargs = None
     accept_magic_kwargs = None
 
 
     #: Maximum number of retries before giving up.  If set to :const:`None`,
     #: Maximum number of retries before giving up.  If set to :const:`None`,

+ 1 - 1
celery/app/utils.py

@@ -140,7 +140,7 @@ def bugreport(app):
         'system': _platform.system(),
         'system': _platform.system(),
         'arch': ', '.join(filter(None, _platform.architecture())),
         'arch': ', '.join(filter(None, _platform.architecture())),
         'py_i': platforms.pyimplementation(),
         'py_i': platforms.pyimplementation(),
-        'celery_v': celery.__version__,
+        'celery_v': celery.VERSION_BANNER,
         'kombu_v': kombu.__version__,
         'kombu_v': kombu.__version__,
         'billiard_v': billiard.__version__,
         'billiard_v': billiard.__version__,
         'py_v': _platform.python_version(),
         'py_v': _platform.python_version(),

+ 2 - 2
celery/apps/beat.py

@@ -15,7 +15,7 @@ from __future__ import absolute_import
 import socket
 import socket
 import sys
 import sys
 
 
-from celery import __version__, platforms, beat
+from celery import VERSION_BANNER, platforms, beat
 from celery.app import app_or_default
 from celery.app import app_or_default
 from celery.app.abstract import configurated, from_config
 from celery.app.abstract import configurated, from_config
 from celery.utils.imports import qualname
 from celery.utils.imports import qualname
@@ -62,7 +62,7 @@ class Beat(configurated):
 
 
     def run(self):
     def run(self):
         print(str(self.colored.cyan(
         print(str(self.colored.cyan(
-                    'celerybeat v%s is starting.' % __version__)))
+                    'celerybeat v%s is starting.' % VERSION_BANNER)))
         self.init_loader()
         self.init_loader()
         self.set_process_title()
         self.set_process_title()
         self.start_scheduler()
         self.start_scheduler()

+ 2 - 2
celery/apps/worker.py

@@ -22,7 +22,7 @@ from functools import partial
 
 
 from billiard import cpu_count, current_process
 from billiard import cpu_count, current_process
 
 
-from celery import __version__, platforms, signals
+from celery import VERSION_BANNER, platforms, signals
 from celery.app import app_or_default
 from celery.app import app_or_default
 from celery.app.abstract import configurated, from_config
 from celery.app.abstract import configurated, from_config
 from celery.exceptions import ImproperlyConfigured, SystemTerminate
 from celery.exceptions import ImproperlyConfigured, SystemTerminate
@@ -221,7 +221,7 @@ class Worker(configurated):
         banner = (BANNER % {
         banner = (BANNER % {
             'app': appr,
             'app': appr,
             'hostname': self.hostname,
             'hostname': self.hostname,
-            'version': __version__,
+            'version': VERSION_BANNER,
             'conninfo': self.app.connection().as_uri(),
             'conninfo': self.app.connection().as_uri(),
             'concurrency': concurrency,
             'concurrency': concurrency,
             'events': events,
             'events': events,

+ 2 - 2
celery/backends/amqp.py

@@ -34,7 +34,7 @@ class BacklogLimitExceeded(Exception):
 def repair_uuid(s):
 def repair_uuid(s):
     # Historically the dashes in UUIDS are removed from AMQ entity names,
     # Historically the dashes in UUIDS are removed from AMQ entity names,
     # but there is no known reason to.  Hopefully we'll be able to fix
     # but there is no known reason to.  Hopefully we'll be able to fix
-    # this in v3.0.
+    # this in v4.0.
     return '%s-%s-%s-%s-%s' % (s[:8], s[8:12], s[12:16], s[16:20], s[20:])
     return '%s-%s-%s-%s-%s' % (s[:8], s[8:12], s[12:16], s[16:20], s[20:])
 
 
 
 
@@ -77,7 +77,7 @@ class AMQPBackend(BaseDictBackend):
         self.auto_delete = auto_delete
         self.auto_delete = auto_delete
 
 
         # AMQP_TASK_RESULT_EXPIRES setting is deprecated and will be
         # AMQP_TASK_RESULT_EXPIRES setting is deprecated and will be
-        # removed in version 3.0.
+        # removed in version 4.0.
         dexpires = conf.CELERY_AMQP_TASK_RESULT_EXPIRES
         dexpires = conf.CELERY_AMQP_TASK_RESULT_EXPIRES
 
 
         self.expires = None
         self.expires = None

+ 7 - 4
celery/bin/base.py

@@ -112,7 +112,7 @@ class Command(object):
     args = ''
     args = ''
 
 
     #: Application version.
     #: Application version.
-    version = celery.__version__
+    version = celery.VERSION_BANNER
 
 
     #: 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.
@@ -161,6 +161,7 @@ class Command(object):
         """
         """
         if argv is None:
         if argv is None:
             argv = list(sys.argv)
             argv = list(sys.argv)
+        self.early_version(argv)
         argv = self.setup_app_from_commandline(argv)
         argv = self.setup_app_from_commandline(argv)
         prog_name = os.path.basename(argv[0])
         prog_name = os.path.basename(argv[0])
         return self.handle_argv(prog_name, argv[1:])
         return self.handle_argv(prog_name, argv[1:])
@@ -209,13 +210,15 @@ class Command(object):
         sys.stderr.write(msg + '\n')
         sys.stderr.write(msg + '\n')
         sys.exit(status)
         sys.exit(status)
 
 
+    def early_version(self, argv):
+        if '--version' in argv:
+            sys.stdout.write('%s\n' % self.version)
+            sys.exit(0)
+
     def parse_options(self, prog_name, arguments):
     def parse_options(self, prog_name, arguments):
         """Parse the available options."""
         """Parse the available options."""
         # Don't want to load configuration to just print the version,
         # Don't want to load configuration to just print the version,
         # so we handle --version manually here.
         # so we handle --version manually here.
-        if '--version' in arguments:
-            sys.stdout.write('%s\n' % self.version)
-            sys.exit(0)
         parser = self.create_parser(prog_name)
         parser = self.create_parser(prog_name)
         return parser.parse_args(arguments)
         return parser.parse_args(arguments)
 
 

+ 0 - 2
celery/bin/celery.py

@@ -16,7 +16,6 @@ from billiard import freeze_support
 from importlib import import_module
 from importlib import import_module
 from pprint import pformat
 from pprint import pformat
 
 
-from celery import __version__
 from celery.platforms import EX_OK, EX_FAILURE, EX_UNAVAILABLE, EX_USAGE
 from celery.platforms import EX_OK, EX_FAILURE, EX_UNAVAILABLE, EX_USAGE
 from celery.utils import term
 from celery.utils import term
 from celery.utils import text
 from celery.utils import text
@@ -63,7 +62,6 @@ def command(fun, name=None, sortpri=0):
 class Command(BaseCommand):
 class Command(BaseCommand):
     help = ''
     help = ''
     args = ''
     args = ''
-    version = __version__
     prog_name = 'celery'
     prog_name = 'celery'
     show_body = True
     show_body = True
     leaf = True
     leaf = True

+ 2 - 2
celery/bin/celeryd_detach.py

@@ -13,12 +13,12 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 from __future__ import with_statement
 from __future__ import with_statement
 
 
+import celery
 import os
 import os
 import sys
 import sys
 
 
 from optparse import OptionParser, BadOptionError
 from optparse import OptionParser, BadOptionError
 
 
-from celery import __version__
 from celery.platforms import EX_FAILURE, detached
 from celery.platforms import EX_FAILURE, detached
 from celery.utils.log import get_logger
 from celery.utils.log import get_logger
 
 
@@ -104,7 +104,7 @@ class PartialOptionParser(OptionParser):
 class detached_celeryd(object):
 class detached_celeryd(object):
     option_list = OPTION_LIST
     option_list = OPTION_LIST
     usage = '%prog [options] [celeryd options]'
     usage = '%prog [options] [celeryd options]'
-    version = __version__
+    version = celery.VERSION_BANNER
     description = ('Detaches Celery worker nodes.  See `celeryd --help` '
     description = ('Detaches Celery worker nodes.  See `celeryd --help` '
                    'for the list of supported worker arguments.')
                    'for the list of supported worker arguments.')
     command = sys.executable
     command = sys.executable

+ 2 - 2
celery/bin/celeryd_multi.py

@@ -103,7 +103,7 @@ from time import sleep
 from kombu.utils import cached_property
 from kombu.utils import cached_property
 from kombu.utils.encoding import from_utf8
 from kombu.utils.encoding import from_utf8
 
 
-from celery import __version__
+from celery import VERSION_BANNER
 from celery.platforms import PIDFile, shellsplit
 from celery.platforms import PIDFile, shellsplit
 from celery.utils import term
 from celery.utils import term
 from celery.utils.text import pluralize
 from celery.utils.text import pluralize
@@ -367,7 +367,7 @@ class MultiTool(object):
     def splash(self):
     def splash(self):
         if not self.nosplash:
         if not self.nosplash:
             c = self.colored
             c = self.colored
-            self.note(c.cyan('celeryd-multi v%s' % __version__))
+            self.note(c.cyan('celeryd-multi v%s' % VERSION_BANNER))
 
 
     def waitexec(self, argv, path=sys.executable):
     def waitexec(self, argv, path=sys.executable):
         args = ' '.join([path] + list(argv))
         args = ' '.join([path] + list(argv))

+ 2 - 2
celery/events/cursesmon.py

@@ -19,7 +19,7 @@ from itertools import count
 from textwrap import wrap
 from textwrap import wrap
 from math import ceil
 from math import ceil
 
 
-from celery import __version__
+from celery import VERSION_BANNER
 from celery import states
 from celery import states
 from celery.app import app_or_default
 from celery.app import app_or_default
 from celery.utils.text import abbr, abbrtask
 from celery.utils.text import abbr, abbrtask
@@ -49,7 +49,7 @@ class CursesMonitor(object):  # pragma: no cover
     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' % __version__
+    greet = 'celeryev %s' % VERSION_BANNER
     info_str = 'Info: '
     info_str = 'Info: '
 
 
     def __init__(self, state, keymap=None, app=None):
     def __init__(self, state, keymap=None, app=None):

+ 1 - 2
celery/exceptions.py

@@ -12,8 +12,6 @@ from billiard.exceptions import (  # noqa
     SoftTimeLimitExceeded, TimeLimitExceeded, WorkerLostError,
     SoftTimeLimitExceeded, TimeLimitExceeded, WorkerLostError,
 )
 )
 
 
-from .utils.encoding import safe_repr
-
 UNREGISTERED_FMT = """\
 UNREGISTERED_FMT = """\
 Task of kind %s is not registered, please make sure it's imported.\
 Task of kind %s is not registered, please make sure it's imported.\
 """
 """
@@ -62,6 +60,7 @@ class RetryTaskError(Exception):
     """The task is to be retried later."""
     """The task is to be retried later."""
 
 
     def __init__(self, message=None, exc=None, when=None, **kwargs):
     def __init__(self, message=None, exc=None, when=None, **kwargs):
+        from kombu.utils.encoding import safe_repr
         self.message = message
         self.message = message
         if isinstance(exc, basestring):
         if isinstance(exc, basestring):
             self.exc, self.excs = None, exc
             self.exc, self.excs = None, exc

+ 2 - 2
celery/loaders/__init__.py

@@ -23,13 +23,13 @@ def get_loader_cls(loader):
     return symbol_by_name(loader, LOADER_ALIASES)
     return symbol_by_name(loader, LOADER_ALIASES)
 
 
 
 
-@deprecated(deprecation='2.5', removal='3.0',
+@deprecated(deprecation='2.5', removal='4.0',
         alternative='celery.current_app.loader')
         alternative='celery.current_app.loader')
 def current_loader():
 def current_loader():
     return current_app.loader
     return current_app.loader
 
 
 
 
-@deprecated(deprecation='2.5', removal='3.0',
+@deprecated(deprecation='2.5', removal='4.0',
             alternative='celery.current_app.conf')
             alternative='celery.current_app.conf')
 def load_settings():
 def load_settings():
     return current_app.conf
     return current_app.conf

+ 1 - 1
celery/worker/consumer.py

@@ -647,7 +647,7 @@ class Consumer(object):
         """Sets up the process mailbox when running in a greenlet
         """Sets up the process mailbox when running in a greenlet
         environment."""
         environment."""
         # THIS CODE IS TERRIBLE
         # THIS CODE IS TERRIBLE
-        # Luckily work has already started rewriting the Consumer for 3.0.
+        # Luckily work has already started rewriting the Consumer for 4.0.
         self._pidbox_node_shutdown = threading.Event()
         self._pidbox_node_shutdown = threading.Event()
         self._pidbox_node_stopped = threading.Event()
         self._pidbox_node_stopped = threading.Event()
         try:
         try:

+ 1 - 1
celery/worker/job.py

@@ -149,7 +149,7 @@ class Request(object):
         See :meth:`celery.task.base.Task.run` for more information.
         See :meth:`celery.task.base.Task.run` for more information.
 
 
         Magic keyword arguments are deprecated and will be removed
         Magic keyword arguments are deprecated and will be removed
-        in version 3.0.
+        in version 4.0.
 
 
         """
         """
         kwargs = dict(self.kwargs)
         kwargs = dict(self.kwargs)

+ 2 - 2
docs/conf.py

@@ -112,7 +112,7 @@ if False:
 # -- Options for Epub output ---------------------------------------------------
 # -- Options for Epub output ---------------------------------------------------
 
 
 # Bibliographic Dublin Core info.
 # Bibliographic Dublin Core info.
-epub_title = 'Celery Manual, Version 2.6'
+epub_title = 'Celery Manual, Version 3.0'
 epub_author = 'Ask Solem'
 epub_author = 'Ask Solem'
 epub_publisher = 'Celery Project'
 epub_publisher = 'Celery Project'
 epub_copyright = '2009-2012'
 epub_copyright = '2009-2012'
@@ -129,7 +129,7 @@ epub_scheme = 'ISBN'
 epub_identifier = 'celeryproject.org'
 epub_identifier = 'celeryproject.org'
 
 
 # A unique identification for the text.
 # A unique identification for the text.
-epub_uid = 'Celery Manual, Version 2.6'
+epub_uid = 'Celery Manual, Version 3.0'
 
 
 # HTML files that should be inserted before the pages created by sphinx.
 # HTML files that should be inserted before the pages created by sphinx.
 # The format is a list of tuples containing the path and title.
 # The format is a list of tuples containing the path and title.

+ 1 - 133
docs/configuration.rst

@@ -56,7 +56,7 @@ Note that workers running Celery versions below 2.5 will assume a local
 timezone for all messages, so only enable if all workers have been
 timezone for all messages, so only enable if all workers have been
 upgraded.
 upgraded.
 
 
-Disabled by default.  UTC will be enabled by default in version 3.0.
+Disabled by default.  UTC will be enabled by default in version 4.0.
 
 
 .. setting:: CELERY_TIMEZONE
 .. setting:: CELERY_TIMEZONE
 
 
@@ -1500,135 +1500,3 @@ Default is `[%(asctime)s: %(levelname)s/%(processName)s] %(message)s`
 
 
 See the Python :mod:`logging` module for more information about log
 See the Python :mod:`logging` module for more information about log
 formats.
 formats.
-
-.. _conf-deprecated:
-
-Deprecated Settings
--------------------
-
-These settings have been deprecated and should no longer used,
-as they will be removed in future versions.
-
-.. setting:: CELERY_AMQP_TASK_RESULT_EXPIRES
-
-CELERY_AMQP_TASK_RESULT_EXPIRES
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.5
-
-The time in seconds of which the task result queues should expire.
-
-This setting is deprecated, and will be removed in version 3.0.
-Please use :setting:`CELERY_TASK_RESULT_EXPIRES` instead.
-
-.. note::
-
-    AMQP result expiration requires RabbitMQ versions 2.1.0 or higher.
-
-.. setting:: CELERY_TASK_ERROR_WHITELIST
-
-CELERY_TASK_ERROR_WHITELIST
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.5
-
-A white list of exceptions to send error emails for.
-
-This option is pending deprecation and is scheduled for removal
-in version 3.0.
-
-.. setting:: CELERYD_LOG_FILE
-
-CELERYD_LOG_FILE
-~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--logfile` argument instead.
-
-The default file name the worker daemon logs messages to.  Can be overridden
-using the :option:`--logfile` option to :mod:`~celery.bin.celeryd`.
-
-The default is :const:`None` (`stderr`)
-
-.. setting:: CELERYD_LOG_LEVEL
-
-CELERYD_LOG_LEVEL
-~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--loglevel` argument instead.
-
-Worker log level, can be one of :const:`DEBUG`, :const:`INFO`, :const:`WARNING`,
-:const:`ERROR` or :const:`CRITICAL`.
-
-Can also be set via the :option:`--loglevel` argument to
-:mod:`~celery.bin.celeryd`.
-
-See the :mod:`logging` module for more information.
-
-.. setting:: CELERYBEAT_LOG_FILE
-
-CELERYBEAT_LOG_FILE
-~~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--logfile` argument instead.
-
-The default file name to log messages to.  Can be overridden using
-the `--logfile` option to :mod:`~celery.bin.celerybeat`.
-
-The default is :const:`None` (`stderr`).
-
-.. setting:: CELERYBEAT_LOG_LEVEL
-
-CELERYBEAT_LOG_LEVEL
-~~~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--loglevel` argument instead.
-
-Logging level. Can be any of :const:`DEBUG`, :const:`INFO`, :const:`WARNING`,
-:const:`ERROR`, or :const:`CRITICAL`.
-
-Can also be set via the :option:`--loglevel` argument to
-:mod:`~celery.bin.celerybeat`.
-
-See the :mod:`logging` module for more information.
-
-.. setting:: CELERYMON_LOG_FILE
-
-CELERYMON_LOG_FILE
-~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--logfile` argument instead.
-
-The default file name to log messages to.  Can be overridden using
-the :option:`--logfile` argument to `celerymon`.
-
-The default is :const:`None` (`stderr`)
-
-.. setting:: CELERYMON_LOG_LEVEL
-
-CELERYMON_LOG_LEVEL
-~~~~~~~~~~~~~~~~~~~
-
-.. deprecated:: 2.4
-
-This option is deprecated and is scheduled for removal in version 3.0.
-Please use the :option:`--loglevel` argument instead.
-
-Logging level. Can be any of :const:`DEBUG`, :const:`INFO`, :const:`WARNING`,
-:const:`ERROR`, or :const:`CRITICAL`.
-
-See the :mod:`logging` module for more information.

+ 2 - 2
docs/getting-started/introduction.rst

@@ -38,7 +38,7 @@ What do I need?
 ===============
 ===============
 
 
 .. sidebar:: Version Requirements
 .. sidebar:: Version Requirements
-    :subtitle: Celery version 2.6 runs on
+    :subtitle: Celery version 3.0 runs on
 
 
     - Python ❨2.5, 2.6, 2.7, 3.2, 3.3❩
     - Python ❨2.5, 2.6, 2.7, 3.2, 3.3❩
     - PyPy ❨1.8, 1.9❩
     - PyPy ❨1.8, 1.9❩
@@ -60,7 +60,7 @@ Get Started
 ===========
 ===========
 
 
 If this is the first time you're trying to use Celery, or you are
 If this is the first time you're trying to use Celery, or you are
-new to Celery 2.6 coming from previous versions then you should our
+new to Celery 3.0 coming from previous versions then you should read our
 getting started tutorials:
 getting started tutorials:
 
 
 - :ref:`first-steps`
 - :ref:`first-steps`

+ 1 - 1
docs/getting-started/next-steps.rst

@@ -72,7 +72,7 @@ The :program:`celery` program can be used to start the worker::
 
 
 When the worker starts you should see a banner and some messages::
 When the worker starts you should see a banner and some messages::
 
 
-     -------------- celery@halcyon.local v2.6.0rc4
+     -------------- celery@halcyon.local v3.0 (Chiastic Slide)
      ---- **** -----
      ---- **** -----
      --- * ***  * -- [Configuration]
      --- * ***  * -- [Configuration]
      -- * - **** --- . broker:      amqp://guest@localhost:5672//
      -- * - **** --- . broker:      amqp://guest@localhost:5672//

+ 1 - 1
docs/includes/introduction.txt

@@ -1,4 +1,4 @@
-:Version: 2.6.0rc5
+:Version: 3.0.0rc5 (Chiastic Slide)
 :Web: http://celeryproject.org/
 :Web: http://celeryproject.org/
 :Download: http://pypi.python.org/pypi/celery/
 :Download: http://pypi.python.org/pypi/celery/
 :Source: http://github.com/celery/celery/
 :Source: http://github.com/celery/celery/

+ 1 - 1
docs/index.rst

@@ -48,7 +48,7 @@ Contents
     community
     community
     tutorials/index
     tutorials/index
     faq
     faq
-    whatsnew-2.6
+    whatsnew-3.0
     whatsnew-2.5
     whatsnew-2.5
     changelog
     changelog
     reference/index
     reference/index

+ 3 - 3
docs/internals/deprecation.rst

@@ -7,9 +7,9 @@
 .. contents::
 .. contents::
     :local:
     :local:
 
 
-.. _deprecations-v3.0:
+.. _deprecations-v4.0:
 
 
-Removals for version 3.0
+Removals for version 4.0
 ========================
 ========================
 
 
 Old Task API
 Old Task API
@@ -72,7 +72,7 @@ Magic keyword arguments
 ~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~
 
 
 The magic keyword arguments accepted by tasks will be removed
 The magic keyword arguments accepted by tasks will be removed
-in 3.0, so you should start rewriting any tasks
+in 4.0, so you should start rewriting any tasks
 using the ``celery.decorators`` module and depending
 using the ``celery.decorators`` module and depending
 on keyword arguments being passed to the task,
 on keyword arguments being passed to the task,
 for example::
 for example::

+ 2 - 2
docs/internals/protocol.rst

@@ -89,14 +89,14 @@ to process it.
 * callbacks
 * callbacks
     :`<list>subtask`:
     :`<list>subtask`:
 
 
-    .. versionadded:: 2.6
+    .. versionadded:: 3.0
 
 
     A list of subtasks to apply if the task exited successfully.
     A list of subtasks to apply if the task exited successfully.
 
 
 * errbacks
 * errbacks
     :`<list>subtask`:
     :`<list>subtask`:
 
 
-    .. versionadded:: 2.6
+    .. versionadded:: 3.0
 
 
     A list of subtasks to apply if an error occurs while executing the task.
     A list of subtasks to apply if an error occurs while executing the task.
 
 

+ 1 - 1
docs/whatsnew-2.5.rst

@@ -152,7 +152,7 @@ Deprecations
 
 
 * The :mod:`celery.decorators` module has changed status
 * The :mod:`celery.decorators` module has changed status
   from pending deprecation to deprecated, and is scheduled for removal
   from pending deprecation to deprecated, and is scheduled for removal
-  in version 3.0.  The ``celery.task`` module must be used instead.
+  in version 4.0.  The ``celery.task`` module must be used instead.
 
 
 .. _v250-news:
 .. _v250-news:
 
 

+ 10 - 9
docs/whatsnew-2.6.rst → docs/whatsnew-3.0.rst

@@ -1,8 +1,8 @@
-.. _whatsnew-2.6:
+.. _whatsnew-3.0:
 
 
-==========================
- What's new in Celery 2.6
-==========================
+===========================================
+ What's new in Celery 3.0 (Chiastic Slide)
+===========================================
 
 
 Celery is a simple, flexible and reliable distributed system to
 Celery is a simple, flexible and reliable distributed system to
 process vast amounts of messages, while providing operations with
 process vast amounts of messages, while providing operations with
@@ -21,7 +21,7 @@ While this version is backward compatible with previous versions
 it's important that you read the following section.
 it's important that you read the following section.
 
 
 If you use Celery in combination with Django you must also
 If you use Celery in combination with Django you must also
-read the `django-celery changelog`_ and upgrade to `django-celery 2.6`_.
+read the `django-celery changelog`_ and upgrade to `django-celery 3.0`_.
 
 
 This version is officially supported on CPython 2.5, 2.6, 2.7, 3.2 and 3.3,
 This version is officially supported on CPython 2.5, 2.6, 2.7, 3.2 and 3.3,
 as well as PyPy and Jython.
 as well as PyPy and Jython.
@@ -58,7 +58,7 @@ as well as PyPy and Jython.
 
 
 .. _`website`: http://celeryproject.org/
 .. _`website`: http://celeryproject.org/
 .. _`django-celery changelog`: http://bit.ly/djcelery-26-changelog
 .. _`django-celery changelog`: http://bit.ly/djcelery-26-changelog
-.. _`django-celery 2.6`: http://pypi.python.org/pypi/django-celery/
+.. _`django-celery 3.0`: http://pypi.python.org/pypi/django-celery/
 
 
 .. contents::
 .. contents::
     :local:
     :local:
@@ -106,15 +106,16 @@ for the no-execv patch to work.
 Last version to support Python 2.5
 Last version to support Python 2.5
 ----------------------------------
 ----------------------------------
 
 
-The 2.6 series will be last series to support Python 2.5.
+The 3.0 series will be last version to support Python 2.5,
+and starting from 3.1 Python 2.6 and later will be required.
 
 
 With several other distributions taking the step to discontinue
 With several other distributions taking the step to discontinue
 Python 2.5 support, we feel that it is time too.
 Python 2.5 support, we feel that it is time too.
 
 
 Python 2.6 should be widely available at this point, and we urge
 Python 2.6 should be widely available at this point, and we urge
 you to upgrade, but if that is not possible you still have the option
 you to upgrade, but if that is not possible you still have the option
-to continue using the Celery 2.6 series, and important bug fixes
-introduced in Celery 2.7 will be back-ported to Celery 2.6 upon request.
+to continue using the Celery 3.0, and important bug fixes
+introduced in Celery 3.1 will be back-ported to Celery 3.0 upon request.
 
 
 .. _v260-news:
 .. _v260-news: