
    pha%                     |   S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
JrJrJr   " S S\5      r " S S	\5      r\" S
S9 " S S5      5       r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      rg")#    )ABCabstractmethod)OrderedDict)	dataclass)Enum)AnyListOptionalUnionc                       \ rS rSrSrSrSrg)CacheEntryStatus   VALIDIN_PROGRESS N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r       E/home/james-whalen/.local/lib/python3.13/site-packages/redis/cache.pyr   r      s    EKr   r   c                       \ rS rSrSrSrSrg)EvictionPolicyType   
time_basedfrequency_basedr   N)r   r   r   r   r   r   r   r   r   r   r   r      s    J'Or   r   T)frozenc                   *    \ rS rSr% \\S'   \\S'   Srg)CacheKey   command
redis_keysr   N)r   r   r   r   str__annotations__tupler   r   r   r   r    r       s    Lr   r    c                   6    \ rS rSrS\S\S\4S jrS rS r	Sr
g	)

CacheEntry   	cache_keycache_valuestatusc                 4    Xl         X l        X0l        X@l        g N)r*   r+   r,   connection_ref)selfr*   r+   r,   r/   s        r   __init__CacheEntry.__init__   s     #&,r   c                 p    [        U R                  U R                  U R                  U R                  45      $ r.   )hashr*   r+   r,   r/   r0   s    r   __hash__CacheEntry.__hash__%   s/    ^^T--t{{D<O<OP
 	
r   c                 0    [        U 5      [        U5      :H  $ r.   )r4   )r0   others     r   __eq__CacheEntry.__eq__*   s    DzT%[((r   )r*   r+   r/   r,   N)r   r   r   r   r    bytesr   r1   r6   r:   r   r   r   r   r(   r(      s-    
-
- 
- !	
-

)r   r(   c                       \ rS rSr\\S 5       5       r\R                  \S 5       5       r\\S\4S j5       5       r	\S\
4S j5       r\S\S\\
   4S j5       r\S	\
SS
4S j5       rSrg
)EvictionPolicyInterface.   c                     g r.   r   r5   s    r   cacheEvictionPolicyInterface.cache/        	r   c                     g r.   r   )r0   values     r   rA   rB   4   rC   r   returnc                     g r.   r   r5   s    r   typeEvictionPolicyInterface.type9   rC   r   c                     g r.   r   r5   s    r   
evict_next"EvictionPolicyInterface.evict_next>       r   countc                     g r.   r   r0   rN   s     r   
evict_many"EvictionPolicyInterface.evict_manyB   rM   r   r*   Nc                     g r.   r   r0   r*   s     r   touchEvictionPolicyInterface.touchF   rM   r   r   )r   r   r   r   propertyr   rA   setterr   rH   r    rK   intr	   rQ   rU   r   r   r   r   r>   r>   .   s       \\   (    H    X   x D  r   r>   c                       \ rS rSr\S 5       r\S\4S j5       r\S 5       r\S\S\	4S j5       r
\S\S\	4S	 j5       rS
rg)CacheConfigurationInterfaceK   c                     g r.   r   r5   s    r   get_cache_class+CacheConfigurationInterface.get_cache_classL   rM   r   rF   c                     g r.   r   r5   s    r   get_max_size(CacheConfigurationInterface.get_max_sizeP   rM   r   c                     g r.   r   r5   s    r   get_eviction_policy/CacheConfigurationInterface.get_eviction_policyT   rM   r   rN   c                     g r.   r   rP   s     r   is_exceeds_max_size/CacheConfigurationInterface.is_exceeds_max_sizeX   rM   r   r"   c                     g r.   r   r0   r"   s     r   is_allowed_to_cache/CacheConfigurationInterface.is_allowed_to_cache\   rM   r   r   N)r   r   r   r   r   r^   rY   ra   rd   boolrg   r$   rk   r   r   r   r   r[   r[   K   s      c         3 4  r   r[   c                   b   \ rS rSr\\S\4S j5       5       r\\S\4S j5       5       r	\\S\
4S j5       5       r\\S\4S j5       5       r\S\S\\S4   4S	 j5       r\S
\S\4S j5       r\S\\   S\\   4S j5       r\S\\   S\\   4S j5       r\S\4S j5       r\S\S\4S j5       rSrg)CacheInterfacea   rF   c                     g r.   r   r5   s    r   
collectionCacheInterface.collectionb   rC   r   c                     g r.   r   r5   s    r   configCacheInterface.configg   rC   r   c                     g r.   r   r5   s    r   eviction_policyCacheInterface.eviction_policyl   rC   r   c                     g r.   r   r5   s    r   sizeCacheInterface.sizeq   rC   r   keyNc                     g r.   r   r0   r}   s     r   getCacheInterface.getv   rM   r   entryc                     g r.   r   r0   r   s     r   setCacheInterface.setz   rM   r   
cache_keysc                     g r.   r   )r0   r   s     r   delete_by_cache_keys#CacheInterface.delete_by_cache_keys~   rM   r   r#   c                     g r.   r   )r0   r#   s     r   delete_by_redis_keys#CacheInterface.delete_by_redis_keys   rM   r   c                     g r.   r   r5   s    r   flushCacheInterface.flush   rM   r   c                     g r.   r   r   s     r   is_cachableCacheInterface.is_cachable   rM   r   r   )r   r   r   r   rW   r   r   rr   r[   ru   r>   rx   rY   r{   r    r   r(   r   rm   r   r	   r   r<   r   r   r   r   r   r   r   ro   ro   a   sm   K    3    !8    c    x E*d*:$;       tH~ $t*   tE{ tDz   s   x D  r   ro   c                      \ rS rSrS\SS4S jr\S\4S j5       r\S\4S j5       r	\S\
4S j5       r\S\4S	 j5       rS
\S\4S jrS\S\\S4   4S jrS\\   S\\   4S jrS\\   S\\   4S jrS\4S jrS\S\4S jrSrg)DefaultCache   cache_configrF   Nc                     [        5       U l        Xl        U R                  R                  5       R	                  5       U l        X R
                  l        g r.   )r   _cache_cache_configrd   rE   _eviction_policyrA   r0   r   s     r   r1   DefaultCache.__init__   s?     "m) $ 2 2 F F H N N P&*#r   c                     U R                   $ r.   r   r5   s    r   rr   DefaultCache.collection       {{r   c                     U R                   $ r.   )r   r5   s    r   ru   DefaultCache.config   s    !!!r   c                     U R                   $ r.   r   r5   s    r   rx   DefaultCache.eviction_policy   s    $$$r   c                 ,    [        U R                  5      $ r.   )lenr   r5   s    r   r{   DefaultCache.size   s    4;;r   r   c                 Z   U R                  UR                  5      (       d  gXR                  UR                  '   U R                  R	                  UR                  5        U R
                  R                  [        U R                  5      5      (       a  U R                  R                  5         g)NFT)	r   r*   r   r   rU   r   rg   r   rK   r   s     r   r   DefaultCache.set   sw    00',EOO$##EOO411#dkk2BCC!!,,.r   r}   c                 |    U R                   R                  US 5      nUc  g U R                  R                  U5        U$ r.   )r   r   r   rU   )r0   r}   r   s      r   r   DefaultCache.get   s7    T*=##C(r   r   c                     / nU HT  nU R                  U5      b.  U R                  R                  U5        UR                  S5        MC  UR                  S5        MV     U$ )NTF)r   r   popappend)r0   r   responser}   s       r   r   !DefaultCache.delete_by_cache_keys   sN    Cxx}($%&  r   r#   c                 >   / n/ nU Hn  n[        U[        5      (       a  UR                  5       nU R                   H6  nXER                  ;   d  M  UR                  U5        UR                  S5        M8     Mp     U H  nU R                  R                  U5        M      U$ )NT)
isinstancer<   decoder   r#   r   r   )r0   r#   r   keys_to_delete	redis_keyr*   r}   s          r   r   !DefaultCache.delete_by_redis_keys   s    #I)U++%,,.	![[	 4 44")))4OOD) ) $ "CKKOOC  " r   c                 d    [        U R                  5      nU R                  R                  5         U$ r.   )r   r   clear)r0   
elem_counts     r   r   DefaultCache.flush   s&    %
r   c                 L    U R                   R                  UR                  5      $ r.   )r   rk   r"   r   s     r   r   DefaultCache.is_cachable   s    !!55ckkBBr   )r   r   r   )r   r   r   r   r[   r1   rW   r   rr   ru   r>   rx   rY   r{   r(   rm   r   r    r   r   r	   r   r<   r   r   r   r   r   r   r   r   r      s   +1+ 
+ K   "3 " " %!8 % %  c    
 
 
x E*d*:$; 
tH~ 
$t* 
tE{ tDz "s 
Cx CD Cr   r   c                       \ rS rSrS r\S 5       r\R                  S\4S j5       r\S\	4S j5       r
S\4S jrS	\S\\   4S
 jrS\SS4S jrS rSrg)	LRUPolicy   c                     S U l         g r.   )rA   r5   s    r   r1   LRUPolicy.__init__   s	    
r   c                     U R                   $ r.   r   r5   s    r   rA   LRUPolicy.cache   r   r   rA   c                     Xl         g r.   r   )r0   rA   s     r   rA   r      s    r   rF   c                 "    [         R                  $ r.   )r   r   r5   s    r   rH   LRUPolicy.type   s    !,,,r   c                 r    U R                  5         U R                  R                  R                  SS9nUS   $ )NFlastr   )_assert_cacher   rr   popitem)r0   popped_entrys     r   rK   LRUPolicy.evict_next   s5    {{--5555AAr   rN   c                    U R                  5         U[        U R                  R                  5      :  a  [	        S5      e/ n[        U5       H:  nU R                  R                  R                  SS9nUR                  US   5        M<     U$ )Nz#Evictions count is above cache sizeFr   r   )r   r   r   rr   
ValueErrorranger   r   )r0   rN   popped_keys_r   s        r   rQ   LRUPolicy.evict_many   s{    3t{{--..BCCuA;;1199u9EL|A/  r   r*   Nc                     U R                  5         U R                  R                  R                  U5      c  [	        S5      eU R                  R                  R                  U5        g )Nz(Given entry does not belong to the cache)r   r   rr   r   r   move_to_endrT   s     r   rU   LRUPolicy.touch  sM    ;;!!%%i08GHH**95r   c                 r    U R                   b  [        U R                   [        5      (       d  [        S5      eg )Nz6Eviction policy should be associated with valid cache.)rA   r   ro   r   r5   s    r   r   LRUPolicy._assert_cache  s.    ::Z

N%K%KUVV &Lr   )r   rA   )r   r   r   r   r1   rW   rA   rX   ro   r   rH   r    rK   rY   r	   rQ   rU   r   r   r   r   r   r   r      s       \\>   -( - -H 
 X 6x 6D 6Wr   r   c                       \ rS rSr\rSrg)EvictionPolicyi  r   N)r   r   r   r   r   LRUr   r   r   r   r   r     s    
Cr   r   c                       \ rS rSr\r\R                  rSr	/ SQr
\	\\4S\S\S\4S jjrS rS	\4S
 jrS	\4S jrS\S	\4S jrS\S	\4S jrSrg)CacheConfigi  i'  )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_classrx   c                 (    X l         Xl        X0l        g r.   )_cache_class	_max_sizer   )r0   r  r  rx   s       r   r1   CacheConfig.__init__i  s     (! /r   c                     U R                   $ r.   )r   r5   s    r   r^   CacheConfig.get_cache_classs  s       r   rF   c                     U R                   $ r.   r!  r5   s    r   ra   CacheConfig.get_max_sizev  s    ~~r   c                     U R                   $ r.   r   r5   s    r   rd   CacheConfig.get_eviction_policyy  s    $$$r   rN   c                     XR                   :  $ r.   r&  rP   s     r   rg   CacheConfig.is_exceeds_max_size|  s    ~~%%r   r"   c                     XR                   ;   $ r.   )DEFAULT_ALLOW_LISTrj   s     r   rk   CacheConfig.is_allowed_to_cache  s    1111r   )r   r   r!  N)r   r   r   r   r   DEFAULT_CACHE_CLASSr   r   DEFAULT_EVICTION_POLICYDEFAULT_MAX_SIZEr-  rY   r   r1   r^   ra   rd   rm   rg   r$   rk   r   r   r   r   r   r     s    &,00K^ ).*A	00 0 (	0!c %^ %& & &23 24 2r   r   c                   ,    \ rS rSr\S\4S j5       rSrg)CacheFactoryInterfacei  rF   c                     g r.   r   r5   s    r   	get_cacheCacheFactoryInterface.get_cache  rM   r   r   N)r   r   r   r   r   ro   r5  r   r   r   r   r3  r3    s    >  r   r3  c                   :    \ rS rSrSS\\   4S jjrS\4S jrSr	g)	CacheFactoryi  Nr   c                 J    Xl         U R                   c  [        5       U l         g g r.   )_configr   r   s     r   r1   CacheFactory.__init__  s    #<<&=DL  r   rF   c                 V    U R                   R                  5       nU" U R                   S9$ )N)r   )r:  r^   )r0   r  s     r   r5  CacheFactory.get_cache  s#    ll22455r   )r:  r.   )
r   r   r   r   r
   r   r1   ro   r5  r   r   r   r   r8  r8    s    )Xk%: )6> 6r   r8  N)abcr   r   collectionsr   dataclassesr   enumr   typingr   r	   r
   r   r   r   r    r(   r>   r[   ro   r   r   r   r   r3  r8  r   r   r   <module>rC     s    # # !  - - t  
( (
 $  
) ),c :# ,+S +\RC> RCj,W' ,W^T i2- i2XC 	6( 	6r   