
    ]jg                     T   d dl mZ d dlmZmZmZmZmZm	Z	m
Z
mZ ddlmZmZ e	r4d dlmZ d dlmZ d dlmZ  ed      Z e
d	d
      Z G d deeef         Zedd       Ze	 ddedef   ded   dedededgdf   f
d       Z	 ddeddef   ded   dededededgdf   f   f
dZy)    )job)AnyCallableOptionaloverloadProtocolTYPE_CHECKINGTypeVarUnion   )	get_queueget_result_ttl)Redis)Queue)	ParamSpecPRT)	covariantc                       e Zd Zdej                  dej
                  defdZdej                  dej
                  defdZdej                  dej
                  defdZ	y)_JobFnargskwargsreturnc                      y N selfr   r   s      >/root/env/lib/python3.12/site-packages/django_rq/decorators.pydelayz_JobFn.delay           c                      y r   r   r   s      r   enqueuez_JobFn.enqueue   r!   r"   c                      y r   r   r   s      r   __call__z_JobFn.__call__   r!   r"   N)
__name__
__module____qualname__r   r   r   r   r    r$   r&   r   r"   r   r   r      sP    DqvvDDaDFF188FFG!&&GAHHGGr"   r   func_or_queueCallable[P, R]r   _JobFn[P, R]c                      y r   r   )r*   s    r   r   r      s    <?r"   Nr   
connectionr   r   r   c                      y r   r   )r*   r.   r   r   s       r   r   r      s     47r"   c                 >   t        |       r| }d}nd}| }d}t        |t              r|}	 t        |      }||j                  }n||j                  }|j                  dt        |            |d<   ||d<   t        |g|i |}|r ||      S |S # t
        $ r Y Iw xY w)a/  
    The same as RQ's job decorator, but it automatically works out
    the ``connection`` argument from RQ_QUEUES.

    And also, it allows simplified ``@job`` syntax to put job into
    default queue.

    If ``result_ttl`` is not passed, It set the default ttl to the queue `DEFAULT_RESULT_TTL`.
    defaultN
result_ttlr.   )	callable
isinstancestrr   r.   KeyErrorgetr   _rq_job)r*   r.   r   r   funcqueue
queue_name	decorators           r   r   r   !   s     %.J%
	e$E!"--
 ))J!::lN:4NOF<%F<///I  		s   B 	BB)r*   r+   r   r,   r   )rq.decoratorsr   r8   typingr   r   r   r   r   r	   r
   r   queuesr   r   redisr   rqr   typing_extensionsr   r   r   r   r5   r   r"   r   <module>rC      s    ( ] ] ] - +#At$AH!Q$ H 
 ? 
 ?	 %)7#&7!7 7 	7
  .017 
7 %)()7C78(!( ( 	(
 >8%5$6$FGGH(r"   