U
    dF#                     @   sN  d Z ddlZddlmZmZmZmZ ddlmZ ddl	m
Z
 dZdZdHdd	ZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZeZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eeZ G d(d) d)eZ!G d*d+ d+eeZ"G d,d- d-eZ#G d.d/ d/eZ$G d0d1 d1eZ%G d2d3 d3eZ&G d4d5 d5eZ'G d6d7 d7eZ(G d8d9 d9e)Z*G d:d; d;e+Z,G d<d= d=e-Z.e.Z/G d>d? d?e-Z0G d@dA dAeZ1G dBdC dCe1Z2G dDdE dEe1Z3G dFdG dGeZ4dS )Ia  Celery error types.

Error Hierarchy
===============

- :exc:`Exception`
    - :exc:`celery.exceptions.CeleryError`
        - :exc:`~celery.exceptions.ImproperlyConfigured`
        - :exc:`~celery.exceptions.SecurityError`
        - :exc:`~celery.exceptions.TaskPredicate`
            - :exc:`~celery.exceptions.Ignore`
            - :exc:`~celery.exceptions.Reject`
            - :exc:`~celery.exceptions.Retry`
        - :exc:`~celery.exceptions.TaskError`
            - :exc:`~celery.exceptions.QueueNotFound`
            - :exc:`~celery.exceptions.IncompleteStream`
            - :exc:`~celery.exceptions.NotRegistered`
            - :exc:`~celery.exceptions.AlreadyRegistered`
            - :exc:`~celery.exceptions.TimeoutError`
            - :exc:`~celery.exceptions.MaxRetriesExceededError`
            - :exc:`~celery.exceptions.TaskRevokedError`
            - :exc:`~celery.exceptions.InvalidTaskError`
            - :exc:`~celery.exceptions.ChordError`
        - :exc:`~celery.exceptions.BackendError`
            - :exc:`~celery.exceptions.BackendGetMetaError`
            - :exc:`~celery.exceptions.BackendStoreError`
    - :class:`kombu.exceptions.KombuError`
        - :exc:`~celery.exceptions.OperationalError`

            Raised when a transport connection error occurs while
            sending a message (be it a task, remote control command error).

            .. note::
                This exception does not inherit from
                :exc:`~celery.exceptions.CeleryError`.
    - **billiard errors** (prefork pool)
        - :exc:`~celery.exceptions.SoftTimeLimitExceeded`
        - :exc:`~celery.exceptions.TimeLimitExceeded`
        - :exc:`~celery.exceptions.WorkerLostError`
        - :exc:`~celery.exceptions.Terminated`
- :class:`UserWarning`
    - :class:`~celery.exceptions.CeleryWarning`
        - :class:`~celery.exceptions.AlwaysEagerIgnored`
        - :class:`~celery.exceptions.DuplicateNodenameWarning`
        - :class:`~celery.exceptions.FixupWarning`
        - :class:`~celery.exceptions.NotConfigured`
        - :class:`~celery.exceptions.SecurityWarning`
- :exc:`BaseException`
    - :exc:`SystemExit`
        - :exc:`~celery.exceptions.WorkerTerminate`
        - :exc:`~celery.exceptions.WorkerShutdown`
    N)SoftTimeLimitExceeded
TerminatedTimeLimitExceededWorkerLostError)ClickException)OperationalError)%reraiseCeleryWarningAlwaysEagerIgnoredDuplicateNodenameWarningFixupWarningNotConfiguredSecurityWarningCeleryErrorImproperlyConfiguredSecurityErrorr   TaskPredicateIgnoreRejectRetry	TaskErrorQueueNotFoundIncompleteStreamNotRegisteredAlreadyRegisteredTimeoutErrorMaxRetriesExceededErrorTaskRevokedErrorInvalidTaskError
ChordErrorBackendErrorBackendGetMetaErrorBackendStoreErrorr   r   r   r   CPendingDeprecationWarningCDeprecationWarningWorkerShutdownWorkerTerminateCeleryCommandExceptionzBTask of kind {0} never registered, please make sure it's imported.c                 C   s   |j |k	r|||dS )zReraise exception.N)__traceback__with_traceback)tpvaluetb r-   5/tmp/pip-unpacked-wheel-mu1yl971/celery/exceptions.pyr   i   s    

r   c                   @   s   e Zd ZdZdS )r	   z#Base class for all Celery warnings.N__name__
__module____qualname____doc__r-   r-   r-   r.   r	   p   s   r	   c                   @   s   e Zd ZdZdS )r
   z6send_task ignores :setting:`task_always_eager` option.Nr/   r-   r-   r-   r.   r
   t   s   r
   c                   @   s   e Zd ZdZdS )r   z-Multiple workers are using the same nodename.Nr/   r-   r-   r-   r.   r   x   s   r   c                   @   s   e Zd ZdZdS )r   zFixup related warning.Nr/   r-   r-   r-   r.   r   |   s   r   c                   @   s   e Zd ZdZdS )r   zBCelery hasn't been configured, as no config module has been found.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   zPotential security issue found.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z!Base class for all Celery errors.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z,Base class for task-related semi-predicates.Nr/   r-   r-   r-   r.   r      s   r   c                       sF   e Zd ZdZdZdZdZd fdd	Zdd Zdd	 Z	d
d Z
  ZS )r   z The task is to be retried later.NFc                    sp   ddl m} || _t|tr,d | | _| _n||r:||nd  | _| _|| _|| _|| _	t
 j| ||f| d S )Nr   )	safe_repr)Zkombu.utils.encodingr4   message
isinstancestrexcexcswhenis_eagersigsuper__init__)selfr5   r8   r:   r;   r<   kwargsr4   	__class__r-   r.   r>      s    
zRetry.__init__c                 C   s(   t | jtjrd| j dS d| j S )Nzin szat )r6   r:   numbersNumberr?   r-   r-   r.   humanize   s    zRetry.humanizec                 C   s6   | j r| j S | jr(d|   d| j S d|   S )NzRetry : )r5   r9   rG   rF   r-   r-   r.   __str__   s
    zRetry.__str__c                 C   s   | j | j| j| jffS N)rB   r5   r8   r:   rF   r-   r-   r.   
__reduce__   s    zRetry.__reduce__)NNNFN)r0   r1   r2   r3   r5   r8   r:   r>   rG   rI   rK   __classcell__r-   r-   rA   r.   r      s     r   c                   @   s   e Zd ZdZdS )r   z4A task can raise this to ignore doing state updates.Nr/   r-   r-   r-   r.   r      s   r   c                       s*   e Zd ZdZd fdd	Zdd Z  ZS )	r   zAA task can raise this if it wants to reject/re-queue the message.NFc                    s   || _ || _t || d S rJ   )reasonrequeuer=   r>   )r?   rM   rN   rA   r-   r.   r>      s    zReject.__init__c                 C   s   d| j  d| j S )Nzreject requeue=rH   )rN   rM   rF   r-   r-   r.   __repr__   s    zReject.__repr__)NFr0   r1   r2   r3   r>   rO   rL   r-   r-   rA   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z(Celery is somehow improperly configured.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   zSecurity related exception.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   zTask related errors.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z.Task routed to a queue not in ``conf.queues``.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z?Found the end of a stream of data, but the data isn't complete.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdd ZdS )r   zThe task is not registered.c                 C   s
   t | S rJ   )UNREGISTERED_FMTformatrF   r-   r-   r.   rO      s    zNotRegistered.__repr__N)r0   r1   r2   r3   rO   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   zThe task is already registered.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   zThe operation timed out.Nr/   r-   r-   r-   r.   r      s   r   c                       s    e Zd ZdZ fddZ  ZS )r   z.The tasks max restart limit has been exceeded.c                    s0   | dg | _| dt | _t j|| d S )N	task_argstask_kwargs)poprS   dictrT   r=   r>   r?   argsr@   rA   r-   r.   r>      s    z MaxRetriesExceededError.__init__r0   r1   r2   r3   r>   rL   r-   r-   rA   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z2The task has been revoked, so no result available.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z8The task has invalid data or ain't properly constructed.Nr/   r-   r-   r-   r.   r      s   r   c                   @   s   e Zd ZdZdS )r   z-A task part of the chord raised an exception.Nr/   r-   r-   r-   r.   r     s   r   c                   @   s   e Zd ZdZdS )r#   zWarning of pending deprecation.Nr/   r-   r-   r-   r.   r#     s   r#   c                   @   s   e Zd ZdZdS )r$   zWarning of deprecation.Nr/   r-   r-   r-   r.   r$   
  s   r$   c                   @   s   e Zd ZdZdS )r&   z5Signals that the worker should terminate immediately.Nr/   r-   r-   r-   r.   r&     s   r&   c                   @   s   e Zd ZdZdS )r%   z7Signals that the worker should perform a warm shutdown.Nr/   r-   r-   r-   r.   r%     s   r%   c                   @   s   e Zd ZdZdS )r    z0An issue writing or reading to/from the backend.Nr/   r-   r-   r-   r.   r      s   r    c                       s(   e Zd ZdZdd Z fddZ  ZS )r!   z"An issue reading from the backend.c                 O   s   | dd| _d S )Ntask_id )getrZ   rW   r-   r-   r.   r>      s    zBackendGetMetaError.__init__c                    s   t   d | j S )N	 task_id:)r=   rO   rZ   rF   rA   r-   r.   rO   #  s    zBackendGetMetaError.__repr__rP   r-   r-   rA   r.   r!     s   r!   c                       s(   e Zd ZdZdd Z fddZ  ZS )r"   z An issue writing to the backend.c                 O   s    | dd| _| dd| _d S )Nstater[   rZ   )r\   r^   rZ   rW   r-   r-   r.   r>   *  s    zBackendStoreError.__init__c                    s   t   d | j d | j S )Nz state:r]   )r=   rO   r^   rZ   rF   rA   r-   r.   rO   .  s    zBackendStoreError.__repr__rP   r-   r-   rA   r.   r"   '  s   r"   c                       s    e Zd ZdZ fddZ  ZS )r'   z6A general command exception which stores an exit code.c                    s   t  j|d || _d S )N)r5   )r=   r>   	exit_code)r?   r5   r_   rA   r-   r.   r>   5  s    zCeleryCommandException.__init__rY   r-   r-   rA   r.   r'   2  s   r'   )N)5r3   rD   Zbilliard.exceptionsr   r   r   r   Zclickr   Zkombu.exceptionsr   __all__rQ   r   UserWarningr	   r
   r   r   r   r   	Exceptionr   r   r   ZRetryTaskErrorr   r   r   r   r   KeyErrorr   r   r   r   r   r   r   r   r   PendingDeprecationWarningr#   DeprecationWarningr$   
SystemExitr&   ZSystemTerminater%   r    r!   r"   r'   r-   r-   r-   r.   <module>   sP   5'
*	
