
    j,gM%                        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
mZmZmZ  G d de      Z G d d	e      Z ed
       G d d             Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Zy")#    )ABCabstractmethod)OrderedDict)	dataclass)Enum)AnyListOptionalUnionc                       e Zd ZdZdZy)CacheEntryStatusVALIDIN_PROGRESSN)__name__
__module____qualname__r   r        e/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/redis/cache.pyr   r      s    EKr   r   c                       e Zd ZdZdZy)EvictionPolicyType
time_basedfrequency_basedN)r   r   r   r   r   r   r   r   r   r      s    J'Or   r   T)frozenc                   "    e Zd ZU eed<   eed<   y)CacheKeycommand
redis_keysN)r   r   r   str__annotations__tupler   r   r   r   r      s    Lr   r   c                   ,    e Zd ZdededefdZd Zd Zy)
CacheEntry	cache_keycache_valuestatusc                 <    || _         || _        || _        || _        y N)r$   r%   r&   connection_ref)selfr$   r%   r&   r)   s        r   __init__zCacheEntry.__init__   s"     #&,r   c                 p    t        | j                  | j                  | j                  | j                  f      S r(   )hashr$   r%   r&   r)   r*   s    r   __hash__zCacheEntry.__hash__%   s/    ^^T--t{{D<O<OP
 	
r   c                 0    t        |       t        |      k(  S r(   )r-   )r*   others     r   __eq__zCacheEntry.__eq__*   s    DzT%[((r   N)	r   r   r   r   bytesr   r+   r/   r2   r   r   r   r#   r#      s-    
-
- 
- !	
-

)r   r#   c                       e Zd Zeed               Zej                  d        Zeedefd              Zede	fd       Z
ededee	   fd       Zede	dd	fd
       Zy	)EvictionPolicyInterfacec                      y r(   r   r.   s    r   cachezEvictionPolicyInterface.cache/        	r   c                      y r(   r   )r*   values     r   r7   zEvictionPolicyInterface.cache4       r   returnc                      y r(   r   r.   s    r   typezEvictionPolicyInterface.type8   r8   r   c                      y r(   r   r.   s    r   
evict_nextz"EvictionPolicyInterface.evict_next=   r;   r   countc                      y r(   r   r*   rA   s     r   
evict_manyz"EvictionPolicyInterface.evict_manyA   r;   r   r$   Nc                      y r(   r   r*   r$   s     r   touchzEvictionPolicyInterface.touchE   r;   r   )r   r   r   propertyr   r7   setterr   r>   r   r@   intr	   rD   rG   r   r   r   r5   r5   .   s       \\  (    H    X   x D  r   r5   c                   v    e Zd Zed        Zedefd       Zed        Zededefd       Z	ede
defd       Zy	)
CacheConfigurationInterfacec                      y r(   r   r.   s    r   get_cache_classz+CacheConfigurationInterface.get_cache_classK   r;   r   r<   c                      y r(   r   r.   s    r   get_max_sizez(CacheConfigurationInterface.get_max_sizeO   r;   r   c                      y r(   r   r.   s    r   get_eviction_policyz/CacheConfigurationInterface.get_eviction_policyS   r;   r   rA   c                      y r(   r   rC   s     r   is_exceeds_max_sizez/CacheConfigurationInterface.is_exceeds_max_sizeW   r;   r   r   c                      y r(   r   r*   r   s     r   is_allowed_to_cachez/CacheConfigurationInterface.is_allowed_to_cache[   r;   r   N)r   r   r   r   rN   rJ   rP   rR   boolrT   r   rW   r   r   r   rL   rL   J   s      c         3 4  r   rL   c                   F   e Zd Zeedefd              Zeedefd              Zeede	fd              Z
eedefd              Zededeedf   fd       Zed	edefd
       Zedee   dee   fd       Zedee   dee   fd       Zedefd       Zededefd       Zy)CacheInterfacer<   c                      y r(   r   r.   s    r   
collectionzCacheInterface.collectiona   r8   r   c                      y r(   r   r.   s    r   configzCacheInterface.configf   r8   r   c                      y r(   r   r.   s    r   eviction_policyzCacheInterface.eviction_policyk   r8   r   c                      y r(   r   r.   s    r   sizezCacheInterface.sizep   r8   r   keyNc                      y r(   r   r*   rc   s     r   getzCacheInterface.getu   r;   r   entryc                      y r(   r   r*   rg   s     r   setzCacheInterface.sety   r;   r   
cache_keysc                      y r(   r   )r*   rk   s     r   delete_by_cache_keysz#CacheInterface.delete_by_cache_keys}   r;   r   r   c                      y r(   r   )r*   r   s     r   delete_by_redis_keysz#CacheInterface.delete_by_redis_keys   r;   r   c                      y r(   r   r.   s    r   flushzCacheInterface.flush   r;   r   c                      y r(   r   re   s     r   is_cachablezCacheInterface.is_cachable   r;   r   )r   r   r   rH   r   r   r\   rL   r^   r5   r`   rJ   rb   r   r   r#   rf   rX   rj   r	   rm   r3   ro   rq   rs   r   r   r   rZ   rZ   `   sm   K    3    !8    c    x E*d*:$;       tH~ $t*   tE{ tDz   s   x D  r   rZ   c                       e Zd ZdeddfdZedefd       Zedefd       Zede	fd       Z
edefd       Zd	edefd
Zdedeedf   fdZdee   dee   fdZdee   dee   fdZdefdZdedefdZy)DefaultCachecache_configr<   Nc                     t               | _        || _        | j                  j                         j	                         | _        | | j
                  _        y r(   )r   _cache_cache_configrR   r:   _eviction_policyr7   r*   rv   s     r   r+   zDefaultCache.__init__   sC     "m) $ 2 2 F F H N N P&*#r   c                     | j                   S r(   rx   r.   s    r   r\   zDefaultCache.collection       {{r   c                     | j                   S r(   )ry   r.   s    r   r^   zDefaultCache.config   s    !!!r   c                     | j                   S r(   rz   r.   s    r   r`   zDefaultCache.eviction_policy   s    $$$r   c                 ,    t        | j                        S r(   )lenrx   r.   s    r   rb   zDefaultCache.size   s    4;;r   rg   c                 H   | j                  |j                        sy|| j                  |j                  <   | j                  j	                  |j                         | j
                  j                  t        | j                              r| j                  j                          y)NFT)	rs   r$   rx   rz   rG   ry   rT   r   r@   ri   s     r   rj   zDefaultCache.set   ss    0',EOO$##EOO411#dkk2BC!!,,.r   rc   c                 z    | j                   j                  |d       }|y | j                  j                  |       |S r(   )rx   rf   rz   rG   )r*   rc   rg   s      r   rf   zDefaultCache.get   s7    T*=##C(r   rk   c                     g }|D ]Q  }| j                  |      -| j                  j                  |       |j                  d       A|j                  d       S |S )NTF)rf   rx   popappend)r*   rk   responserc   s       r   rm   z!DefaultCache.delete_by_cache_keys   sS     	'Cxx}($%&	' r   r   c                 $   g }g }|D ]d  }t        |t              r|j                         }| j                  D ]3  }||j                  v s|j                  |       |j                  d       5 f |D ]  }| j                  j                  |        |S )NT)
isinstancer3   decoderx   r   r   r   )r*   r   r   keys_to_delete	redis_keyr$   rc   s          r   ro   z!DefaultCache.delete_by_redis_keys   s    # 	*I)U+%,,.	![[ *		 4 44")))4OOD)*	* " 	!CKKOOC 	! r   c                 d    t        | j                        }| j                  j                          |S r(   )r   rx   clear)r*   
elem_counts     r   rq   zDefaultCache.flush   s&    %
r   c                 L    | j                   j                  |j                        S r(   )ry   rW   r   re   s     r   rs   zDefaultCache.is_cachable   s    !!55ckkBBr   )r   r   r   rL   r+   rH   r   r\   r^   r5   r`   rJ   rb   r#   rX   rj   r   r   rf   r	   rm   r3   ro   rq   rs   r   r   r   ru   ru      s   +1+ 
+ K   "3 " " %!8 % %  c    
 
 
x E*d*:$; 
tH~ 
$t* 
tE{ tDz "s 
Cx CD Cr   ru   c                       e Zd Zd Zed        Zej                  defd       Zedefd       Z	de
fdZdedee
   fd	Zd
e
ddfdZd Zy)	LRUPolicyc                     d | _         y r(   )r7   r.   s    r   r+   zLRUPolicy.__init__   s	    
r   c                     | j                   S r(   r}   r.   s    r   r7   zLRUPolicy.cache   r~   r   r7   c                     || _         y r(   r}   )r*   r7   s     r   r7   zLRUPolicy.cache   s	    r   r<   c                 "    t         j                  S r(   )r   r   r.   s    r   r>   zLRUPolicy.type   s    !,,,r   c                 x    | j                          | j                  j                  j                  d      }|d   S )NFlastr   )_assert_cacherx   r\   popitem)r*   popped_entrys     r   r@   zLRUPolicy.evict_next   s5    {{--5555AAr   rA   c                    | j                          |t        | j                  j                        kD  rt	        d      g }t        |      D ]<  }| j                  j                  j                  d      }|j                  |d          > |S )Nz#Evictions count is above cache sizeFr   r   )r   r   rx   r\   
ValueErrorranger   r   )r*   rA   popped_keys_r   s        r   rD   zLRUPolicy.evict_many   s    3t{{--..BCCu 	0A;;1199u9EL|A/	0 r   r$   Nc                     | j                          | j                  j                  j                  |      t	        d      | j                  j                  j                  |       y )Nz(Given entry does not belong to the cache)r   rx   r\   rf   r   move_to_endrF   s     r   rG   zLRUPolicy.touch  sM    ;;!!%%i08GHH**95r   c                 f    | j                   t        | j                   t              st        d      y )Nz6Eviction policy should be associated with valid cache.)r7   r   rZ   r   r.   s    r   r   zLRUPolicy._assert_cache  s+    ::Z

N%KUVV &Lr   )r   r   r   r+   rH   r7   rI   rZ   r   r>   r   r@   rJ   r	   rD   rG   r   r   r   r   r   r      s       \\>   -( - -H 
 X 6x 6D 6Wr   r   c                       e Zd ZeZy)EvictionPolicyN)r   r   r   r   LRUr   r   r   r   r     s    
Cr   r   c                       e Zd ZeZej                  ZdZg dZ	eeefde
dedefdZd Zde
fd	Zdefd
Zde
defdZdedefdZy)CacheConfigi'  )JBITCOUNTBITFIELD_ROBITPOSEXISTSGEODISTGEOHASHGEOPOSGEORADIUSBYMEMBER_ROGEORADIUS_RO	GEOSEARCHGETGETBITGETRANGEHEXISTSHGETHGETALLHKEYSHLENHMGETHSTRLENHVALSzJSON.ARRINDEXzJSON.ARRLENzJSON.GETz	JSON.MGETzJSON.OBJKEYSzJSON.OBJLENz	JSON.RESPzJSON.STRLENz	JSON.TYPELCSLINDEXLLENLPOSLRANGEMGETSCARDSDIFFSINTER
SINTERCARD	SISMEMBERSMEMBERS
SMISMEMBERSORT_ROSTRLENSUBSTRSUNIONzTS.GETzTS.INFOzTS.RANGEzTS.REVRANGETYPEXLENXPENDINGXRANGEXREAD	XREVRANGEZCARDZCOUNTZDIFFZINTER
ZINTERCARD	ZLEXCOUNTZMSCOREZRANGEZRANGEBYLEXZRANGEBYSCOREZRANK	ZREVRANGEZREVRANGEBYLEXZREVRANGEBYSCOREZREVRANKZSCOREZUNIONmax_sizecache_classr`   c                 .    || _         || _        || _        y r(   )_cache_class	_max_sizerz   )r*   r   r   r`   s       r   r+   zCacheConfig.__init__h  s     (! /r   c                     | j                   S r(   )r   r.   s    r   rN   zCacheConfig.get_cache_classr  s       r   r<   c                     | j                   S r(   r   r.   s    r   rP   zCacheConfig.get_max_sizeu  s    ~~r   c                     | j                   S r(   r   r.   s    r   rR   zCacheConfig.get_eviction_policyx  s    $$$r   rA   c                      || j                   kD  S r(   r   rC   s     r   rT   zCacheConfig.is_exceeds_max_size{  s    t~~%%r   r   c                     || j                   v S r(   )DEFAULT_ALLOW_LISTrV   s     r   rW   zCacheConfig.is_allowed_to_cache~  s    $1111r   N)r   r   r   ru   DEFAULT_CACHE_CLASSr   r   DEFAULT_EVICTION_POLICYDEFAULT_MAX_SIZEr   rJ   r   r+   rN   rP   rR   rX   rT   r   rW   r   r   r   r   r     s    &,00K^ ).*A	00 0 (	0!c %^ %& & &23 24 2r   r   c                   "    e Zd Zedefd       Zy)CacheFactoryInterfacer<   c                      y r(   r   r.   s    r   	get_cachezCacheFactoryInterface.get_cache  r;   r   N)r   r   r   r   rZ   r   r   r   r   r   r     s    >  r   r   c                   ,    e Zd Zddee   fdZdefdZy)CacheFactoryNrv   c                 J    || _         | j                   t               | _         y y r(   )_configr   r{   s     r   r+   zCacheFactory.__init__  s!    #<<&=DL  r   r<   c                 \    | j                   j                         } || j                         S )N)rv   )r   rN   )r*   r   s     r   r   zCacheFactory.get_cache  s#    ll22455r   r(   )r   r   r   r
   r   r+   rZ   r   r   r   r   r   r     s    )Xk%: )6> 6r   r   N)abcr   r   collectionsr   dataclassesr   enumr   typingr   r	   r
   r   r   r   r   r#   r5   rL   rZ   ru   r   r   r   r   r   r   r   r   <module>r     s    # # !  - - t  
( (
 $  
) ),c 8# ,+S +\RC> RCj,W' ,W^T i2- i2XC 	6( 	6r   