U
    .e~#                     @   sZ  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dlmZ dZdId	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/d0 d0e Z&G d1d2 d2e Z'G d3d4 d4e Z(G d5d6 d6e Z)G d7d8 d8e Z*G d9d: d:e+Z,G d;d< d<e-Z.G d=d> d>e/Z0e0Z1G d?d@ d@e/Z2G dAdB dBeZ3G dCdD dDe3Z4G dEdF dFe3Z5G dGdH dHeZ6dS )Ja  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CeleryCommandException)get_pickleable_exceptionzBTask 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-f4liivr4/celery/exceptions.pyr   j   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	   q   s   r	   c                   @   s   e Zd ZdZdS )r
   z6send_task ignores :setting:`task_always_eager` option.Nr0   r.   r.   r.   r/   r
   u   s   r
   c                   @   s   e Zd ZdZdS )r   z-Multiple workers are using the same nodename.Nr0   r.   r.   r.   r/   r   y   s   r   c                   @   s   e Zd ZdZdS )r   zFixup related warning.Nr0   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.Nr0   r.   r.   r.   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   zPotential security issue found.Nr0   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.Nr0   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.Nr0   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                    st   ddl m} || _t|tr,d | | _| _nt||r>||nd  | _| _|| _|| _	|| _
t j| ||f| d S )Nr   )	safe_repr)Zkombu.utils.encodingr5   message
isinstancestrexcexcsr(   whenis_eagersigsuper__init__)selfr6   r9   r;   r<   r=   kwargsr5   	__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 )r7   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 : )r6   r:   rH   rG   r.   r.   r/   __str__   s
    zRetry.__str__c                 C   s   | j | j| j| jffS N)rC   r6   r9   r;   rG   r.   r.   r/   
__reduce__   s    zRetry.__reduce__)NNNFN)r1   r2   r3   r4   r6   r9   r;   r?   rH   rJ   rL   __classcell__r.   r.   rB   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.Nr0   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 rK   )reasonrequeuer>   r?   )r@   rN   rO   rB   r.   r/   r?      s    zReject.__init__c                 C   s   d| j  d| j S )Nzreject requeue=rI   )rO   rN   rG   r.   r.   r/   __repr__   s    zReject.__repr__)NFr1   r2   r3   r4   r?   rP   rM   r.   r.   rB   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   z(Celery is somehow improperly configured.Nr0   r.   r.   r.   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   zSecurity related exception.Nr0   r.   r.   r.   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   zTask related errors.Nr0   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``.Nr0   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.Nr0   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 rK   )UNREGISTERED_FMTformatrG   r.   r.   r/   rP      s    zNotRegistered.__repr__N)r1   r2   r3   r4   rP   r.   r.   r.   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   zThe task is already registered.Nr0   r.   r.   r.   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   zThe operation timed out.Nr0   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)poprT   dictrU   r>   r?   r@   argsrA   rB   r.   r/   r?      s    z MaxRetriesExceededError.__init__r1   r2   r3   r4   r?   rM   r.   r.   rB   r/   r      s   r   c                   @   s   e Zd ZdZdS )r   z2The task has been revoked, so no result available.Nr0   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.Nr0   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.Nr0   r.   r.   r.   r/   r     s   r   c                   @   s   e Zd ZdZdS )r#   zWarning of pending deprecation.Nr0   r.   r.   r.   r/   r#     s   r#   c                   @   s   e Zd ZdZdS )r$   zWarning of deprecation.Nr0   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.Nr0   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.Nr0   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.Nr0   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 )getr[   rX   r.   r.   r/   r?   !  s    zBackendGetMetaError.__init__c                    s   t   d | j S )N	 task_id:)r>   rP   r[   rG   rB   r.   r/   rP   $  s    zBackendGetMetaError.__repr__rQ   r.   r.   rB   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\   r[   )r]   r_   r[   rX   r.   r.   r/   r?   +  s    zBackendStoreError.__init__c                    s   t   d | j d | j S )Nz state:r^   )r>   rP   r_   r[   rG   rB   r.   r/   rP   /  s    zBackendStoreError.__repr__rQ   r.   r.   rB   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)r6   )r>   r?   	exit_code)r@   r6   r`   rB   r.   r/   r?   6  s    zCeleryCommandException.__init__rZ   r.   r.   rB   r/   r'   3  s   r'   )N)7r4   rE   Zbilliard.exceptionsr   r   r   r   Zclickr   Zkombu.exceptionsr   __all__Zcelery.utils.serializationr(   rR   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>   sR   5'
*	
