a
    Cg                     @   s   d dl mZ d dlmZ 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 d d	lmZmZmZ d d
lmZ ddlmZ edZedZG dd deZdS )    )deepcopy)partial)ListTypeVar)transaction)timezone)	ParamSpec)ResultDoesNotExist)task_enqueued)ResultStatusTask
TaskResult)get_random_id   )BaseTaskBackendTPc                       s   e Zd ZU dZdZee ed< ee	dd fddZ
edddd	Zeeef ejejee d
ddZeedddZddddZ  ZS )DummyBackendTresultsN)aliasparamsreturnc                    s   t  || g | _d S N)super__init__r   )selfr   r   	__class__ Z/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_tasks/backends/dummy.pyr      s    zDummyBackend.__init__)resultr   c                 C   s4   t |dt  | j| tjt| |d d S )Nenqueued_at)Ztask_result)	object__setattr__r   nowr   appendr
   sendtype)r   r    r   r   r   _store_result   s    zDummyBackend._store_result)taskargskwargsr   c                 C   sb   |  | tt |t tjd d d ||| jd	}| |durPt	t
| j| n
| | t|S )N)	r)   idstatusr!   Z
started_atZfinished_atr*   r+   backendF)Zvalidate_taskr   r   r   r   ZNEWr   Z_get_enqueue_on_commit_for_taskr   Z	on_commitr   r(   r   )r   r)   r*   r+   r    r   r   r   enqueue#   s     

zDummyBackend.enqueue)	result_idr   c                    s<   zt  fdd| jD W S  ty6   t d Y n0 d S )Nc                 3   s   | ]}|j  kr|V  qd S r   )r,   ).0r    r0   r   r   	<genexpr>?       z*DummyBackend.get_result.<locals>.<genexpr>)nextr   StopIterationr	   )r   r0   r   r2   r   
get_result=   s    zDummyBackend.get_result)r   c                 C   s   | j   d S r   )r   clear)r   r   r   r   r8   C   s    zDummyBackend.clear)__name__
__module____qualname__Zsupports_deferZsupports_async_taskr   r   __annotations__strdictr   r(   r   r   r   r*   r+   r/   r7   r8   __classcell__r   r   r   r   r      s   
r   N)copyr   	functoolsr   typingr   r   Z	django.dbr   Zdjango.utilsr   Ztyping_extensionsr   Zdjango_tasks.exceptionsr	   Zdjango_tasks.signalsr
   Zdjango_tasks.taskr   r   r   Zdjango_tasks.utilsr   baser   r   r   r   r   r   r   r   <module>   s   