
    j                        d dl mZ d dlZd dlZd dlmZ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mZ d dlmZmZ d d	lmZmZ d d
lmZ erd dlmZmZmZm Z  dZ!dZ" G d de          Z# G d d          Z$ G d de$e#e          Z%dS )    )annotationsN)ABCMetaabstractmethod)AsyncGeneratorAsyncIteratorIterableMapping)asynccontextmanager)
ContextVar)TYPE_CHECKINGAnyoverload)ALLCommand)CacheBackendInteractionErrorLockedError)
Serializer)DefaultKeyOnRemoveCallbackValuec                  x   e Zd Zeed^d                        Zed             Zed             Ze	 	 d_d`d            Zedadbd            Z	edcd            Z
eddd            Zedaded            Zedadfd            Zedgd             Zedd!dhd$            Zedidjd+            Zedkd,            Zedidld.            Zedmdnd0            Zedkd1            Zedod2            Zedpd3            Zedqd6            Zedrd7            Zed/d8dsd<            Zed/d/d=dtd?            Ze	 dadudD            ZeddEdvdG            ZedwdH            ZedidxdK            ZedrdL            ZedydM            ZedadzdQ            Z ed{dR            Z!d|dSZ"e	 	 d}d~dW            Z#eddX            Z$e%	 ddd]            Z&dS )_BackendInterfacereturnboolc                    d S N selfs    e/DATA/AppData/hermes/projects/honcho/.venv/lib/python3.11/site-packages/cashews/backends/interface.pyis_initz_BackendInterface.is_init   s    "s    c                
   K   d S r   r    r!   s    r#   initz_BackendInterface.init   s      #r%   c                
   K   d S r   r    r!   s    r#   closez_BackendInterface.close   s      3r%   Nkeyr   valuer   expirefloat | Noneexistbool | Nonec                
   K   d S r   r    )r"   r*   r+   r,   r.   s        r#   setz_BackendInterface.set!   s       sr%   pairsMapping[Key, Value]Nonec                
   K   d S r   r    )r"   r2   r,   s      r#   set_manyz_BackendInterface.set_many*   s      _b_br%   kwargsr   c                
   K   d S r   r    )r"   r*   r+   r7   s       r#   set_rawz_BackendInterface.set_raw-   s      LOCr%   defaultr   Value | Defaultc                
   K   d S r   r    r"   r*   r:   s      r#   getz_BackendInterface.get0   s      HKr%   Value | Nonec                
   K   d S r   r    r=   s      r#   r>   z_BackendInterface.get3   s      ILr%   Default | NoneValue | Default | Nonec                
   K   d S r   r    r=   s      r#   r>   z_BackendInterface.get6   s      ]`]`r%   c                
   K   d S r   r    r"   r*   s     r#   get_rawz_BackendInterface.get_raw9   s      03r%   r:   keystuple[Value | None, ...]c               
   K   d S r   r    )r"   r:   rH   s      r#   get_manyz_BackendInterface.get_many<   s      dgdgr%   d   patternstr
batch_sizeint AsyncIterator[tuple[Key, Value]]c                    d S r   r    r"   rM   rO   s      r#   	get_matchz_BackendInterface.get_match?   s    beber%   c                
   K   d S r   r    rE   s     r#   existsz_BackendInterface.existsB         .1cr%   AsyncIterator[Key]c                    d S r   r    rS   s      r#   scanz_BackendInterface.scanE   s    ORsr%      c                
   K   d S r   r    r"   r*   r+   r,   s       r#   incrz_BackendInterface.incrH   s      X[X[r%   c                
   K   d S r   r    rE   s     r#   deletez_BackendInterface.deleteK   rW   r%   c                
   K   d S r   r    )r"   rH   s     r#   delete_manyz_BackendInterface.delete_manyN   s      58Sr%   c                
   K   d S r   r    )r"   rM   s     r#   delete_matchz_BackendInterface.delete_matchQ   s      8;r%   timeoutfloatc                
   K   d S r   r    )r"   r*   re   s      r#   r,   z_BackendInterface.expireT   s      69cr%   c                
   K   d S r   r    rE   s     r#   
get_expirez_BackendInterface.get_expireW   s      14r%   )sizeindexesrj   tuple[int, ...]c               
   K   d S r   r    )r"   r*   rj   rk   s       r#   get_bitsz_BackendInterface.get_bitsZ   s      Y\Y\r%   )rj   byro   c               
   K   d S r   r    )r"   r*   rj   ro   rk   s        r#   	incr_bitsz_BackendInterface.incr_bits]   s      gjgjr%   startint | floatendmaxvaluec                
   K   d S r   r    )r"   r*   rr   rt   ru   r,   s         r#   
slice_incrz_BackendInterface.slice_incr`   s       cr%   r,   valuesc               
   K   d S r   r    )r"   r*   r,   ry   s       r#   set_addz_BackendInterface.set_addj   s      Z]Z]r%   c                
   K   d S r   r    )r"   r*   ry   s      r#   
set_removez_BackendInterface.set_removem   s      @Cr%   countIterable[str]c                
   K   d S r   r    )r"   r*   r~   s      r#   set_popz_BackendInterface.set_popp   s      JM#r%   c                
   K   dS )zN
        Return size in bites that allocated by a value for given key
        Nr    rE   s     r#   get_sizez_BackendInterface.get_sizes         
 	r%   c                
   K   dS )z,
        Return count keys in cache
        Nr    r!   s    r#   get_keys_countz _BackendInterface.get_keys_countz   r   r%   messagebytes | Nonebytesc                
   K   d S r   r    )r"   r   s     r#   pingz_BackendInterface.ping   s      ADr%   c                
   K   d S r   r    r!   s    r#   clearz_BackendInterface.clear   s      #&3r%   c                D   K   |                      |||d           d {V S )NF)r,   r.   )r1   r]   s       r#   set_lockz_BackendInterface.set_lock   s2      XXc5uXEEEEEEEEEr%   皙?waitstepc                
   K   d S r   r    )r"   r*   r   r   s       r#   	is_lockedz_BackendInterface.is_locked   s       sr%   c                
   K   d S r   r    )r"   r*   r+   s      r#   unlockz_BackendInterface.unlock   s      <?Cr%   Tr   check_intervalAsyncGenerator[None]c                 K   t          t          j                              }	 |                     |||           d {V }|sj	 |                     d           d {V d W V  d S n# t
          $ r	 d W V  Y d S w xY w|rt          j        |           d {V  xt          d| d          	 d W V  | 	                    ||           d {V  n!# | 	                    ||           d {V  w xY wd S )NTrx   s   LOCKzKey z is already locked)
rN   uuiduuid4r   r   r   asynciosleepr   r   )r"   r*   r,   r   r   
identifierlocks          r#   r   z_BackendInterface.lock   sr      &&
	sJvFFFFFFFFD B!YYw////////7 8 4   EEEEFF  !-777777777!"@"@"@"@AAA3kk#z2222222222dkk#z2222222222Fs    A( (A;:A;/C C/r   r   )NN)
r*   r   r+   r   r,   r-   r.   r/   r   r   r   )r2   r3   r,   r-   r   r4   )r*   r   r+   r   r7   r   r   r4   )r*   r   r:   r   r   r;   )r*   r   r:   r4   r   r?   )r*   r   r:   rA   r   rB   )r*   r   r   r   )rH   r   r:   r?   r   rI   )rL   )rM   rN   rO   rP   r   rQ   )r*   r   r   r   )rM   rN   rO   rP   r   rX   )r[   N)r*   r   r+   rP   r,   r-   r   rP   rH   r   r   r4   )rM   rN   r   r4   )r*   r   re   rf   )r*   r   r   rP   )r*   r   rk   rP   rj   rP   r   rl   )
r*   r   rk   rP   rj   rP   ro   rP   r   rl   )r*   r   rr   rs   rt   rs   ru   rP   r,   r-   r   rP   )r*   r   ry   rN   r,   r-   r   r4   )r*   r   ry   rN   r   r4   )r*   r   r~   rP   r   r   )r   rP   )r   r   r   r   r   r4   )r*   r   r+   r   r,   rf   r   r   )Nr   )r*   r   r   r-   r   rf   r   r   )r*   r   r+   r   r   r   )Tr   )
r*   r   r,   rf   r   r   r   rf   r   r   )'__name__
__module____qualname__propertyr   r$   r'   r)   r1   r6   r9   r   r>   rF   rK   rT   rV   rZ   r^   r`   rb   rd   r,   ri   rn   rq   rw   r{   r}   r   r   r   r   r   r   r   r   r
   r   r    r%   r#   r   r      s       """ ^ X" ^ ^
  $!    ^ bbbb ^bOOO ^OKKK XKLLLL XL```` ^`333 ^3AEggggg ^geeee ^e111 ^1RRRR ^R[[[[ ^[111 ^1888 ^8;;; ^;999 ^9444 ^4BC\\\\\ ^\CDPQjjjjj ^j  $    ^ KO]]]]] ^]CCC ^CMMMM ^M   ^    ^ DDDD ^D&&& ^&F F F F  "	    ^ ??? ^?RS      r%   r   )	metaclassc                  |     e Zd ZdZd fdZedd            ZddZddZddZ	edd            Z
ddZddZ xZS )ControlMixinTr   r4   c                    t          t          t          |                     t                                | _        d| _         t                      j        |i | d S )NrG   F)r   rN   idr1   _ControlMixin__disable_control_setsuper__init__)r"   argsr7   	__class__s      r#   r   zControlMixin.__init__   sT    3=c"T((mmUXUZUZ3[3[3[!$)&)))))r%   set[Command]c                4    | j                                         S r   )r   r>   r!   s    r#   _disablezControlMixin._disable   s    ~!!###r%   r+   c                H    | j                             |           d| _        d S )NT)r   r1   r   )r"   r+   s     r#   _set_disablezControlMixin._set_disable   s&    5!!! r%   cmdsr   r   c                V    | j         s| j         S | j        }|s|rdS |D ]	}||v r dS 
dS )NTF)r   enable_by_defaultr   )r"   r   r   cmds       r#   
is_disablezControlMixin.is_disable   s]      	.---= 	 	4 	 	Chtt ur%   c                     | j         |  S r   )r   )r"   r   s     r#   	is_enablezControlMixin.is_enable   s    "4?D)))r%   c                @    | j         s| j         S | j        t          k    S r   )r   r   r   r   r!   s    r#   is_full_disablezControlMixin.is_full_disable   s&      	.---}##r%   c                    |st          j                    }n.| j                                        }|                    |           |                     |           d S r   )r   copyr   updater   r"   r   r   s      r#   disablezControlMixin.disable   sV     	"xzzHH}))++HOOD!!!(#####r%   c                    |st                      }n+| j                                        }|t          |          z  }|                     |           d S r   )r1   r   r   r   r   s      r#   enablezControlMixin.enable   sR     	"uuHH}))++HD		!H(#####r%   r   )r   r   )r+   r   r   r4   )r   r   r   r   r   )r   r   r   r4   )r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r#   r   r      s        * * * * * *
 $ $ $ X$! ! ! !	 	 	 	* * * * $ $ $ X$
$ $ $ $$ $ $ $ $ $ $ $r%   r   c                  6     e Zd Zddd fdZdd
ZddZ xZS )BackendN)
serializerr   Serializer | Noner   r4   c                   t                                                       t          j                    j        | _        || _        g | _        d S r   )r   r   r   r   hex_id_serializer_on_remove_callbacks)r"   r   r   r7   r   s       r#   r   zBackend.__init__   s?    :<<#%<>!!!r%   callbackr   c                :    | j                             |           d S r   )r   append)r"   r   s     r#   on_remove_callbackzBackend.on_remove_callback   s    !((22222r%   rH   r   c                D   K   | j         D ]} |||            d {V  d S )N)backend)r   )r"   rH   r   s      r#   _call_on_remove_callbacksz!Backend._call_on_remove_callbacks   sL      1 	/ 	/H(4...........	/ 	/r%   )r   r   r   r4   )r   r   r   r4   r   )r   r   r   r   r   r   r   r   s   @r#   r   r      sr        >B ? ? ? ? ? ? ? ?3 3 3 3/ / / / / / / /r%   r   )&
__future__r   r   r   abcr   r   collections.abcr   r   r   r	   
contextlibr
   contextvarsr   typingr   r   r   cashews.commandsr   r   cashews.exceptionsr   r   cashews.serializer   cashews._typingr   r   r   r   	NOT_EXIST	UNLIMITEDr   r   r   r    r%   r#   <module>r      s   " " " " " "   ' ' ' ' ' ' ' ' L L L L L L L L L L L L * * * * * * " " " " " " / / / / / / / / / / ) ) ) ) ) ) ) ) H H H H H H H H ( ( ( ( ( ( FEEEEEEEEEEEE		Z Z Z Z Z' Z Z Z Zz2$ 2$ 2$ 2$ 2$ 2$ 2$ 2$j/ / / / /l- / / / / / /r%   