o
    i                     @   sz   d dl mZ d dlmZmZmZmZmZ er"d dlm	Z	 ddl
mZ ddlmZ ddl
mZ ddlmZ G d	d
 d
Z
dS )    )wraps)TYPE_CHECKINGAnyCallableOptionalUnion)Redis   )Retry)DEFAULT_RESULT_TTL)Callback)Queuec                $   @   s   e Zd ZeZdedddddddddddfdedef dddee	 de	d	ee	 d
ee
d  deee  dedeeeef  dee dee	 ded deeeedef f  deeeedef f  deeeedef f  fddZdd ZdS )jobNFqueuer   
connectionr   timeout
result_ttlttlqueue_class
depends_onat_frontmetadescriptionfailure_ttlretryr
   
on_failure.
on_success
on_stoppedc                 C   sf   || _ |r|nt| _|| _|| _|| _|| _|	| _|| _|| _	|
| _
|| _|| _|| _|| _|| _dS )aj  A decorator that adds a ``enqueue`` method to the decorated function,
        which in turn creates a RQ job when called. Accepts a required
        ``queue`` argument that can be either a ``Queue`` instance or a string
        denoting the queue name.  For example::

            ..codeblock:python::

                >>> @job(queue='default')
                >>> def simple_add(x, y):
                >>>    return x + y
                >>> ...
                >>> # Puts `simple_add` function into queue
                >>> simple_add.enqueue(1, 2)

        Args:
            queue (Union['Queue', str]): The queue to use, can be the Queue class itself, or the queue name (str)
            connection (Optional[Redis], optional): Redis Connection. Defaults to None.
            timeout (Optional[int], optional): Job timeout. Defaults to None.
            result_ttl (int, optional): Result time to live. Defaults to DEFAULT_RESULT_TTL.
            ttl (Optional[int], optional): Time to live. Defaults to None.
            queue_class (Optional[Queue], optional): A custom class that inherits from `Queue`. Defaults to None.
            depends_on (Optional[List[Any]], optional): A list of dependents jobs. Defaults to None.
            at_front (Optional[bool], optional): Whether to enqueue the job at front of the queue. Defaults to None.
            meta (Optional[Dict[Any, Any]], optional): Arbitrary metadata about the job. Defaults to None.
            description (Optional[str], optional): Job description. Defaults to None.
            failure_ttl (Optional[int], optional): Failure time to live. Defaults to None.
            retry (Optional[Retry], optional): A Retry object. Defaults to None.
            on_failure (Optional[Union[Callback, Callable[..., Any]]], optional): Callable to run on failure. Defaults
                to None.
            on_success (Optional[Union[Callback, Callable[..., Any]]], optional): Callable to run on success. Defaults
                to None.
            on_stopped (Optional[Union[Callback, Callable[..., Any]]], optional): Callable to run when stopped. Defaults
                to None.
        N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   D/home/app/Keep/.python/lib/python3.10/site-packages/rq/decorators.py__init__   s   4
zjob.__init__c                    s&   t   fdd}| _| _ S )Nc                     s   t jtrjjjd}nj}|dd }|dd }|dd}|s*j}|s/j}|j f| |j	j
j|||jjjjjjjdS )N)namer   r   job_idr   F)argskwargsr   r   r   r   r#   r   r   r   r   r   r   r   r   )
isinstancer   strr   r   popr   r   Zenqueue_callr   r   r   r   r   r   r   r   r   r   )r$   r%   r   r   r#   r   fr   r   r    delayV   s:   zjob.__call__.<locals>.delay)r   r+   enqueue)r   r*   r+   r   r)   r    __call__U   s
   #zjob.__call__)__name__
__module____qualname__r   r   r   r   r'   r   inttypelistr   booldictr   r   r!   r-   r   r   r   r    r      s^    


	

Dr   N)	functoolsr   typingr   r   r   r   r   Zredisr   r   r
   defaultsr   r   r   r   r   r   r   r    <module>   s    