
    (\i                         d dl mZmZ 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mZmZmZ d dlmZ d dlmZ d d	lmZmZ  G d
 de      Zy)    )ABCMetaabstractmethod)iscoroutinefunction)sync_to_async)settings)DEFAULT_TASK_QUEUE_NAME)DEFAULT_TASK_PRIORITYTASK_MAX_PRIORITYTASK_MIN_PRIORITYTask)InvalidTask)timezone)get_func_argsis_module_level_functionc                   T    e Zd ZeZdZdZdZdZd Z	d Z
ed        Zd Zd Zd Zd Zy	)
BaseTaskBackendFc                     || _         t        |j                  dt        g            | _        |j                  di       | _        y )NQUEUESOPTIONS)aliassetgetr   queuesoptions)selfr   paramss      j/home/devuser/fomin/mqttuser/mqtt_project/myenv/lib/python3.12/site-packages/django/tasks/backends/base.py__init__zBaseTaskBackend.__init__%   s6    
&**X0G/HIJzz)R0    c                 n   t        |j                        st        d      | j                  s t	        |j                        rt        d      t        |j                        }|j                  r|r|d   dk7  rt        d      | j                  s|j                  t        k7  rt        d      |j                  t        k  s5|j                  t        kD  s"t        |j                        |j                  k7  rt        dt         dt         d	      | j                  s|j                  t        d      t        j                   r6|j                  *t#        j$                  |j                        st        d      | j&                  r2|j(                  | j&                  vrt        d|j(                   d      y
y
)zU
        Determine whether the provided Task can be executed by the backend.
        z0Task function must be defined at a module level.z%Backend does not support async Tasks.r   contextzCTask takes context but does not have a first argument of 'context'.z3Backend does not support setting priority of tasks.z(priority must be a whole number between z and .Nz#Backend does not support run_after.z$run_after must be an aware datetime.zQueue 'z' is not valid for backend.)r   funcr   supports_async_taskr   r   takes_contextsupports_prioritypriorityr	   r   r
   intsupports_defer	run_afterr   USE_TZr   is_awarer   
queue_name)r   tasktask_func_argss      r   validate_taskzBaseTaskBackend.validate_task*   sr    (		2PQQ'',?		,JEFF&tyy1."3y"@U  %%$--;P*PSTTMM--}}004==!T]]2:;L:MU$%Q( 
 ""t~~'ACDD OO*%%dnn5DEE;;4??$++='88STUU >;r   c                      y)zQueue up a task to be executed.N r   r.   argskwargss       r   enqueuezBaseTaskBackend.enqueueU   s    r   c                 ^   K    t        | j                  d      |||       d{   S 7 w)z7Queue up a task function (or coroutine) to be executed.Tthread_sensitive)r.   r4   r5   N)r   r6   r3   s       r   aenqueuezBaseTaskBackend.aenqueueY   s1     G]4<<$GD
 
 	
 
s   $-+-c                     t        d      )zt
        Retrieve a task result by id.

        Raise TaskResultDoesNotExist if such result does not exist.
        z?This backend does not support retrieving or refreshing results.)NotImplementedErrorr   	result_ids     r   
get_resultzBaseTaskBackend.get_result_   s     "M
 	
r   c                 Z   K    t        | j                  d      |       d{   S 7 w)zSee get_result().Tr8   )r>   N)r   r?   r=   s     r   aget_resultzBaseTaskBackend.aget_resulti   s-     J]4??TJ
 
 	
 
s   "+)+c                     g S )Nr2   )r   r5   s     r   checkzBaseTaskBackend.checko   s    	r   N)__name__
__module____qualname__r   
task_classr)   r$   supports_get_resultr&   r   r0   r   r6   r:   r?   rA   rC   r2   r   r   r   r      sZ    J N     1
)VV . .


r   r   )	metaclassN)abcr   r   inspectr   asgiref.syncr   django.confr   django.tasksr   django.tasks.baser	   r
   r   r   django.tasks.exceptionsr   django.utilsr   django.utils.inspectr   r   r   r2   r   r   <module>rS      s7    ' ' &   0  0 ! H] ]r   