
    fiM%                        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d"S )#    )ABCabstractmethod)OrderedDict)	dataclass)Enum)AnyListOptionalUnionc                       e Zd ZdZdZdS )CacheEntryStatusVALIDIN_PROGRESSN)__name__
__module____qualname__r   r        [/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/redis/cache.pyr   r      s        EKKKr   r   c                       e Zd ZdZdZdS )EvictionPolicyType
time_basedfrequency_basedN)r   r   r   r   r   r   r   r   r   r      s        J'OOOr   r   T)frozenc                   $    e Zd ZU eed<   eed<   dS )CacheKeycommand
redis_keysN)r   r   r   str__annotations__tupler   r   r   r   r      s'         LLLr   r   c                   .    e Zd ZdededefdZd Zd ZdS )
CacheEntry	cache_keycache_valuestatusc                 >    || _         || _        || _        || _        d S 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P
 
 	
r   c                 B    t          |           t          |          k    S r(   )r-   )r*   others     r   __eq__zCacheEntry.__eq__*   s    DzzT%[[((r   N)	r   r   r   r   bytesr   r+   r/   r2   r   r   r   r#   r#      sb        
-
- 
- !	
- 
- 
- 
-
 
 

) ) ) ) )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d	S )EvictionPolicyInterfacec                     d S r(   r   r.   s    r   cachezEvictionPolicyInterface.cache/   	     	r   c                     d S r(   r   )r*   values     r   r7   zEvictionPolicyInterface.cache4       r   returnc                     d S r(   r   r.   s    r   typezEvictionPolicyInterface.type8   r8   r   c                     d S r(   r   r.   s    r   
evict_nextz"EvictionPolicyInterface.evict_next=   r;   r   countc                     d S r(   r   r*   rA   s     r   
evict_manyz"EvictionPolicyInterface.evict_manyA   r;   r   r$   Nc                     d S 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         ^ X \  \ (    ^ X H    ^  X    ^ x D    ^  r   r5   c                       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d	S )
CacheConfigurationInterfacec                     d S r(   r   r.   s    r   get_cache_classz+CacheConfigurationInterface.get_cache_classK   r;   r   r<   c                     d S r(   r   r.   s    r   get_max_sizez(CacheConfigurationInterface.get_max_sizeO   r;   r   c                     d S r(   r   r.   s    r   get_eviction_policyz/CacheConfigurationInterface.get_eviction_policyS   r;   r   rA   c                     d S r(   r   rC   s     r   is_exceeds_max_sizez/CacheConfigurationInterface.is_exceeds_max_sizeW   r;   r   r   c                     d S 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                      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dS )CacheInterfacer<   c                     d S r(   r   r.   s    r   
collectionzCacheInterface.collectiona   r8   r   c                     d S r(   r   r.   s    r   configzCacheInterface.configf   r8   r   c                     d S r(   r   r.   s    r   eviction_policyzCacheInterface.eviction_policyk   r8   r   c                     d S r(   r   r.   s    r   sizezCacheInterface.sizep   r8   r   keyNc                     d S r(   r   r*   rc   s     r   getzCacheInterface.getu   r;   r   entryc                     d S r(   r   r*   rg   s     r   setzCacheInterface.sety   r;   r   
cache_keysc                     d S r(   r   )r*   rk   s     r   delete_by_cache_keysz#CacheInterface.delete_by_cache_keys}   r;   r   r   c                     d S r(   r   )r*   r   s     r   delete_by_redis_keysz#CacheInterface.delete_by_redis_keys   r;   r   c                     d S r(   r   r.   s    r   flushzCacheInterface.flush   r;   r   c                     d S 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   `   s       K    ^ X 3    ^ X !8    ^ X c    ^ X 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dS )DefaultCachecache_configr<   Nc                     t                      | _        || _        | j                                                                        | _        | | j        _        d S r(   )r   _cache_cache_configrR   r:   _eviction_policyr7   r*   rv   s     r   r+   zDefaultCache.__init__   sK     "mm) $ 2 F F H H N N P 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                 $   |                      |j                  sdS || j        |j        <   | j                            |j                   | j                            t          | j                            r| j                                         dS )NFT)	rs   r$   rx   rz   rG   ry   rT   r   r@   ri   s     r   rj   zDefaultCache.set   s    00 	5',EO$##EO44411#dk2B2BCC 	/!,,...tr   rc   c                 x    | j                             |d           }|d S | j                            |           |S r(   )rx   rf   rz   rG   )r*   rc   rg   s      r   rf   zDefaultCache.get   s=    T**=4##C(((r   rk   c                     g }|D ]\}|                      |          0| j                            |           |                    d           G|                    d           ]|S )NTF)rf   rx   popappend)r*   rk   responserc   s       r   rm   z!DefaultCache.delete_by_cache_keys   si     	' 	'Cxx}}($$$%%%%&&&&r   r   c                 "   g }g }|D ]h}t          |t                    r|                                }| j        D ]5}||j        v r*|                    |           |                    d           6i|D ]}| 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44OOD)))*
 " 	! 	!CKOOC    r   c                 `    t          | j                  }| j                                         |S r(   )r   rx   clear)r*   
elem_counts     r   rq   zDefaultCache.flush   s+    %%
r   c                 @    | j                             |j                  S r(   )ry   rW   r   re   s     r   rs   zDefaultCache.is_cachable   s    !55ckB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    X "3 " " " X" %!8 % % % X%  c       X 
 
 
 
 
 
x E*d*:$;    
tH~ 
$t* 
 
 
 
tE{ tDz    "s    
Cx CD C C C C C 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dS )	LRUPolicyc                     d | _         d S 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                     || _         d S 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                 z    |                                   | j        j                            d          }|d         S )NFlastr   )_assert_cacherx   r\   popitem)r*   popped_entrys     r   r@   zLRUPolicy.evict_next   s9    {-5555AAAr   rA   c                 $   |                                   |t          | j        j                  k    rt	          d          g }t          |          D ]=}| j        j                            d          }|                    |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Cu 	0 	0A;199u9EEL|A////r   r$   Nc                     |                                   | j        j                            |          t	          d          | j        j                            |           d S )Nz(Given entry does not belong to the cache)r   rx   r\   rf   r   move_to_endrF   s     r   rG   zLRUPolicy.touch  s[    ;!%%i008GHHH**955555r   c                 f    | j         t          | j         t                    st          d          d S )Nz6Eviction policy should be associated with valid cache.)r7   r   rZ   r   r.   s    r   r   zLRUPolicy._assert_cache  s2    :Z
N%K%KUVVV r   )r   r   r   r+   rH   r7   rI   rZ   r   r>   r   r@   rJ   r	   rD   rG   r   r   r   r   r   r      s            X \>    \ -( - - - X-H    
 X    6x 6D 6 6 6 6W W W W Wr   r   c                       e Zd ZeZdS )EvictionPolicyN)r   r   r   r   LRUr   r   r   r   r     s        
CCCr   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dS )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                 0    || _         || _        || _        d S 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         k    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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K K K^ ).*A	0 00 0 (	0 0 0 0! ! !c    %^ % % % %& & & & & &23 24 2 2 2 2 2 2r   r   c                   *    e Zd Zedefd            ZdS )CacheFactoryInterfacer<   c                     d S r(   r   r.   s    r   	get_cachezCacheFactoryInterface.get_cache  r;   r   N)r   r   r   r   rZ   r   r   r   r   r   r     s9        >    ^  r   r   c                   4    e Zd Zddee         fdZdefdZdS )CacheFactoryNrv   c                 L    || _         | j         t                      | _         d S d S r(   )_configr   r{   s     r   r+   zCacheFactory.__init__  s(    #<&==DLLL  r   r<   c                 V    | j                                         } || j                   S )N)rv   )r   rN   )r*   r   s     r   r   zCacheFactory.get_cache  s*    l2244{5555r   r(   )r   r   r   r
   r   r+   rZ   r   r   r   r   r   r     sT        ) )Xk%: ) ) ) )6> 6 6 6 6 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 RC RC RC> RC RC RCj,W ,W ,W ,W ,W' ,W ,W ,W^    T   i2 i2 i2 i2 i2- i2 i2 i2X    C   	6 	6 	6 	6 	6( 	6 	6 	6 	6 	6r   