| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | # -*- coding: utf-8 -*-"""celery.states=============Built-in task states... _states:States------See :ref:`task-states`... _statesets:Sets----.. state:: READY_STATESREADY_STATES~~~~~~~~~~~~Set of states meaning the task result is ready (has been executed)... state:: UNREADY_STATESUNREADY_STATES~~~~~~~~~~~~~~Set of states meaning the task result is not ready (has not been executed)... state:: EXCEPTION_STATESEXCEPTION_STATES~~~~~~~~~~~~~~~~Set of states meaning the task returned an exception... state:: PROPAGATE_STATESPROPAGATE_STATES~~~~~~~~~~~~~~~~Set of exception states that should propagate exceptions to the user... state:: ALL_STATESALL_STATES~~~~~~~~~~Set of all possible states.Misc.-----"""from __future__ import absolute_import, unicode_literals__all__ = ['PENDING', 'RECEIVED', 'STARTED', 'SUCCESS', 'FAILURE',           'REVOKED', 'RETRY', 'IGNORED', 'READY_STATES', 'UNREADY_STATES',           'EXCEPTION_STATES', 'PROPAGATE_STATES', 'precedence', 'state']#: State precedence.#: None represents the precedence of an unknown state.#: Lower index means higher precedence.PRECEDENCE = ['SUCCESS',              'FAILURE',              None,              'REVOKED',              'STARTED',              'RECEIVED',              'REJECTED',              'RETRY',              'PENDING']#: Hash lookup of PRECEDENCE to indexPRECEDENCE_LOOKUP = dict(zip(PRECEDENCE, range(0, len(PRECEDENCE))))NONE_PRECEDENCE = PRECEDENCE_LOOKUP[None]def precedence(state):    """Get the precedence index for state.    Lower index means higher precedence.    """    try:        return PRECEDENCE_LOOKUP[state]    except KeyError:        return NONE_PRECEDENCEclass state(str):    """State is a subclass of :class:`str`, implementing comparison    methods adhering to state precedence rules::        >>> from celery.states import state, PENDING, SUCCESS        >>> state(PENDING) < state(SUCCESS)        True    Any custom state is considered to be lower than :state:`FAILURE` and    :state:`SUCCESS`, but higher than any of the other built-in states::        >>> state('PROGRESS') > state(STARTED)        True        >>> state('PROGRESS') > state('SUCCESS')        False    """    def __gt__(self, other):        return precedence(self) < precedence(other)    def __ge__(self, other):        return precedence(self) <= precedence(other)    def __lt__(self, other):        return precedence(self) > precedence(other)    def __le__(self, other):        return precedence(self) >= precedence(other)#: Task state is unknown (assumed pending since you know the id).PENDING = 'PENDING'#: Task was received by a worker (only used in events).RECEIVED = 'RECEIVED'#: Task was started by a worker (:setting:`task_track_started`).STARTED = 'STARTED'#: Task succeededSUCCESS = 'SUCCESS'#: Task failedFAILURE = 'FAILURE'#: Task was revoked.REVOKED = 'REVOKED'#: Task was rejected (only used in events).REJECTED = 'REJECTED'#: Task is waiting for retry.RETRY = 'RETRY'IGNORED = 'IGNORED'REJECTED = 'REJECTED'READY_STATES = frozenset({SUCCESS, FAILURE, REVOKED})UNREADY_STATES = frozenset({PENDING, RECEIVED, STARTED, REJECTED, RETRY})EXCEPTION_STATES = frozenset({RETRY, FAILURE, REVOKED})PROPAGATE_STATES = frozenset({FAILURE, REVOKED})ALL_STATES = frozenset({PENDING, RECEIVED, STARTED,                        SUCCESS, FAILURE, RETRY, REVOKED})
 |