
    hd                     x    d dl 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
 e G d d             Z G d d	e
      Zy)
    N)Lock)	dataclass)DictOptionalTuple)Backendc                   "    e Zd ZU eed<   eed<   y)Valuedatattl_tsN)__name__
__module____qualname__str__annotations__int     j/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/fastapi_cache/backends/inmemory.pyr
   r
   	   s    
IKr   r
   c            	           e Zd ZU i Zeeef   ed<    e       Z	e
defd       Zdedee   fdZdedeeee   f   fdZdedee   fdZdded	ed
ee   ddfdZddee   dee   defdZy)InMemoryBackend_storereturnc                 <    t        t        j                               S N)r   time)selfs    r   _nowzInMemoryBackend._now   s    499;r   keyc                     | j                   j                  |      }|r)|j                  | j                  k  r| j                   |= y |S y r   )r   getr   r   r   r   vs      r   _getzInMemoryBackend._get   sB    KKOOC xx$))#KK$  r   c                    K   | j                   4 d {    | j                  |      }|r6|j                  | j                  z
  |j                  fcd d d       d {    S 	 d d d       d {    y7 _7 7 	# 1 d {  7  sw Y   y xY ww)N)r   N)_lockr$   r   r   r   r"   s      r   get_with_ttlzInMemoryBackend.get_with_ttl    sp     :::		#Axx$))+QVV3	 	 	 		 	 	: 	 	:::sb   BA3B8A9BA5B!A9"B-A7.B5B7B9B?B BBc                    K   | j                   4 d {    | j                  |      }|r|j                  cd d d       d {    S 	 d d d       d {    y 7 F7 7 	# 1 d {  7  sw Y   y xY wwr   )r&   r$   r   r"   s      r   r!   zInMemoryBackend.get'   s^     :::		#Avv	 	 	 		 	 	: 	 	:::sa   A5AA5A A5AA5A 	A5AA5A5A5 A2&A)'A2.A5Nvalueexpirec                    K   | j                   4 d {    t        || j                  |xs dz         | j                  |<   d d d       d {    y 7 ?7 # 1 d {  7  sw Y   y xY ww)Nr   )r&   r
   r   r   )r   r   r)   r*   s       r   setzInMemoryBackend.set.   sD     :::$UDII1,EFDKK ::::::sD   A,AA,+AA,AA,A,A)A A)%A,	namespacec                    K   d}|rPt        | j                  j                               }|D ]&  }|j                  |      s| j                  |= |dz  }( |S |r| j                  |= |dz  }|S w)Nr      )listr   keys
startswith)r   r-   r   countr1   s        r   clearzInMemoryBackend.clear2   sv     ((*+D>>),C(QJE   C QJEs   >A-,A-r   )NN)r   r   r   r   r   r   r
   r   r   r&   propertyr   r   r   r$   r   r'   r!   r,   r4   r   r   r   r   r      s    !FDe!FE c      c eC#4F.G S Xc] GS G Ghsm Gt GXc]  Y\ r   r   )r   asyncior   dataclassesr   typingr   r   r   fastapi_cache.backendsr   r
   r   r   r   r   <module>r:      s<      ! ( ( *   
.g .r   