§
    X˜¶f—  ã                   óB   — d dl Zd dlmZ d dlmZ  G d„ de¦  «        ZdS )é    N)Ú	BaseCache)ÚRedisSerializerc                   ó  — e Zd ZU dZdZej        ed<   dZej        ed<    e	¦   «         Z
	 	 	 	 	 	 d&d	ej        d
edej        e         dededej        ej        eej        g ef         f                  dej        fd„Zdefd„Zdej        e         defd„Zdedej        fd„Zdedej        ej                 fd„Zd'dedej        dej        e         dej        fd„Zd'dedej        dej        e         dej        fd„Z	 d'dej        eej        f         dej        e         dej        ej                 fd„Zdedefd„Zdedej        ej                 fd„Zdedefd „Zdefd!„Zd(ded#edej        fd$„Zd(ded#edej        fd%„Z dS ))Ú
RedisCachea  Uses the Redis key-value store as a cache backend.

    The first argument can be either a string denoting address of the Redis
    server or an object resembling an instance of a redis.Redis class.

    Note: Python Redis API already takes care of encoding unicode strings on
    the fly.

    :param host: address of the Redis server or an object which API is
                 compatible with the official Python Redis client (redis-py).
    :param port: port number on which Redis server listens for connections.
    :param password: password authentication for the Redis server.
    :param db: db (zero-based numeric index) on Redis Server to connect.
    :param default_timeout: the default timeout that is used if no timeout is
                            specified on :meth:`~BaseCache.set`. A timeout of
                            0 indicates that the cache never expires.
    :param key_prefix: A prefix that should be added to all keys.

    Any additional keyword arguments will be passed to ``redis.Redis``.
    NÚ_read_clientÚ_write_clientÚ	localhostéë  r   é,  ÚhostÚportÚpasswordÚdbÚdefault_timeoutÚ
key_prefixÚkwargsc                 ó‚  — t          j        | |¦  «         |€t          d¦  «        ‚t          |t          ¦  «        rl	 dd l}n"# t          $ r}	t          d¦  «        |	‚d }	~	ww xY w|                     dd ¦  «        rt          d¦  «        ‚ |j	        d||||dœ|¤Žx| _
        | _        n|x| _        | _
        |pd| _        d S )	Nz)RedisCache host parameter may not be Noner   zno redis module foundÚdecode_responsesz0decode_responses is not supported by RedisCache.)r   r   r   r   Ú © )r   Ú__init__Ú
ValueErrorÚ
isinstanceÚstrÚredisÚImportErrorÚRuntimeErrorÚgetÚRedisr   r   r   )
Úselfr   r   r   r   r   r   r   r   Úerrs
             úB/var/www/piapp/venv/lib/python3.11/site-packages/cachelib/redis.pyr   zRedisCache.__init__!   s	  € õ 	Ô˜4 Ñ1Ô1Ð1Øˆ<ÝÐHÑIÔIÐIÝ�d�CÑ Ô ð 	:ðEØ����øÝð Eð Eð EÝ"Ð#:Ñ;Ô;ÀÐDøøøøðEøøøà�zŠzÐ,¨dÑ3Ô3ð UÝ Ð!SÑTÔTÐTØ5@°U´[ð 6Ø ¨x¸Bð6ð 6ØBHð6ð 6ð ˆDÔ Ô!2Ð!2ð 6:Ð9ˆDÔ Ô 2Ø$Ð*¨ˆŒˆˆs   ½A Á
A!ÁAÁA!Úreturnc                 ól   — t          | j        t          ¦  «        r| j        n|                      ¦   «         S ©N)r   r   r   )r    s    r"   Ú_get_prefixzRedisCache._get_prefix<   s+   € å)¨$¬/½3Ñ?Ô?ÐVˆDŒOˆOÀTÇ_Â_ÑEVÔEVð	
ó    Útimeoutc                 ó@   — t          j        | |¦  «        }|dk    rd}|S )z¨Normalize timeout by setting it to default of 300 if
        not defined (None) or -1 if explicitly set to zero.

        :param timeout: timeout to normalize.
        r   éÿÿÿÿ)r   Ú_normalize_timeout)r    r(   s     r"   r+   zRedisCache._normalize_timeoutA   s)   € õ Ô.¨t°WÑ=Ô=ˆØ�aŠ<ˆ<ØˆGØˆr'   Úkeyc                 ó’   — | j                              | j                             |                      ¦   «         › |› �¦  «        ¦  «        S r%   )Ú
serializerÚloadsr   r   r&   ©r    r,   s     r"   r   zRedisCache.getL   sG   € ØŒ×$Ò$ØÔ×!Ò! T×%5Ò%5Ñ%7Ô%7Ð">¸Ð">Ð">Ñ?Ô?ñ
ô 
ð 	
r'   Úkeysc                 óš   ‡ — ‰ j         rˆ fd„|D ¦   «         }nt          |¦  «        }ˆ fd„‰ j                             |¦  «        D ¦   «         S )Nc                 ó@   •— g | ]}‰                      ¦   «         › |› �‘ŒS r   ©r&   ©Ú.0r,   r    s     €r"   ú
<listcomp>z'RedisCache.get_many.<locals>.<listcomp>S   ó0   ø€ ÐJÐJÐJ¸c × 0Ò 0Ñ 2Ô 2Ð9°CÐ9Ð9ÐJÐJÐJr'   c                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS r   )r.   r/   )r6   Úxr    s     €r"   r7   z'RedisCache.get_many.<locals>.<listcomp>V   s)   ø€ ÐXÐXÐX¨Q�”×%Ò% aÑ(Ô(ÐXÐXÐXr'   )r   Úlistr   Úmget©r    r1   Úprefixed_keyss   `  r"   Úget_manyzRedisCache.get_manyQ   s^   ø€ ØŒ?ð 	'ØJÐJÐJÐJÀTÐJÑJÔJˆMˆMå  ™JœJˆMØXÐXÐXÐX°$Ô2C×2HÒ2HÈÑ2WÔ2WÐXÑXÔXÐXr'   Úvaluec                 ó<  — |                       |¦  «        }| j                             |¦  «        }|dk    r3| j                             |                      ¦   «         › |› �|¬¦  «        }n3| j                             |                      ¦   «         › |› �||¬¦  «        }|S )Nr*   ©Únamer@   ©rC   r@   Útime)r+   r.   Údumpsr   Úsetr&   Úsetex)r    r,   r@   r(   ÚdumpÚresults         r"   rG   zRedisCache.setX   s²   € Ø×)Ò)¨'Ñ2Ô2ˆØŒ×$Ò$ UÑ+Ô+ˆØ�bŠ=ˆ=ØÔ'×+Ò+Ø×(Ò(Ñ*Ô*Ð1¨CÐ1Ð1¸ð ,ñ ô ˆFˆFð Ô'×-Ò-Ø×(Ò(Ñ*Ô*Ð1¨CÐ1Ð1¸ÀGð .ñ ô ˆFð ˆr'   c                 ó<  — |                       |¦  «        }| j                             |¦  «        }| j                             |                      ¦   «         › |› �|¬¦  «        }|r8|dk    r2| j                             |                      ¦   «         › |› �|¬¦  «         |S )NrB   r*   )rC   rE   )r+   r.   rF   r   Úsetnxr&   Úexpire)r    r,   r@   r(   rI   Úcreateds         r"   ÚaddzRedisCache.adde   s®   € Ø×)Ò)¨'Ñ2Ô2ˆØŒ×$Ò$ UÑ+Ô+ˆØÔ$×*Ò*Ø×$Ò$Ñ&Ô&Ð-¨Ð-Ð-°Tð +ñ 
ô 
ˆð ð 	W�w "’}�}ØÔ×%Ò%¨d×.>Ò.>Ñ.@Ô.@Ð+GÀ#Ð+GÐ+GÈgÐ%ÑVÔVÐVØˆr'   Úmappingc                 ó  — |                       |¦  «        }| j                             d¬¦  «        }|                     ¦   «         D ]�\  }}| j                             |¦  «        }|dk    r.|                     |                      ¦   «         › |› �|¬¦  «         ŒS|                     |                      ¦   «         › |› �||¬¦  «         Œ‚| 	                    ¦   «         }d„ t          |                     ¦   «         |¦  «        D ¦   «         S )NF)Útransactionr*   rB   rD   c                 ó   — g | ]	\  }}|¯|‘Œ
S r   r   )r6   ÚkÚwas_sets      r"   r7   z'RedisCache.set_many.<locals>.<listcomp>   s!   € ÐLÐLÐL‘j�a˜ÀGÐL�ÐLÐLÐLr'   )r+   r   ÚpipelineÚitemsr.   rF   rG   r&   rH   ÚexecuteÚzipr1   )r    rP   r(   Úpiper,   r@   rI   Úresultss           r"   Úset_manyzRedisCache.set_manyp   s  € ð ×)Ò)¨'Ñ2Ô2ˆð Ô!×*Ò*°uÐ*Ñ=Ô=ˆà!Ÿ-š-™/œ/ð 	Xð 	X‰JˆC�Ø”?×(Ò(¨Ñ/Ô/ˆDØ˜"Š}ˆ}Ø—’ ×!1Ò!1Ñ!3Ô!3Ð:°SÐ:Ð:À$�ÑGÔGÐGÐGà—
’
 4×#3Ò#3Ñ#5Ô#5Ð <°sÐ <Ð <ÀDÈw�
ÑWÔWÐWÐWØ—,’,‘.”.ˆØLÐL¥C¨¯ª©¬¸Ñ$@Ô$@ÐLÑLÔLÐLr'   c                 ó|   — t          | j                             |                      ¦   «         › |› �¦  «        ¦  «        S r%   )Úboolr   Údeleter&   r0   s     r"   r_   zRedisCache.delete�   s8   € Ý�DÔ&×-Ò-°×1AÒ1AÑ1CÔ1CÐ.JÀSÐ.JÐ.JÑKÔKÑLÔLÐLr'   c                 óŠ   ‡ — |sg S ‰ j         rˆ fd„|D ¦   «         }nd„ |D ¦   «         } ‰ j        j        |Ž  ˆ fd„|D ¦   «         S )Nc                 ó@   •— g | ]}‰                      ¦   «         › |› �‘ŒS r   r4   r5   s     €r"   r7   z*RedisCache.delete_many.<locals>.<listcomp>ˆ   r8   r'   c                 ó   — g | ]}|‘ŒS r   r   )r6   rT   s     r"   r7   z*RedisCache.delete_many.<locals>.<listcomp>Š   s   € Ð-Ð-Ð- 1˜QÐ-Ð-Ð-r'   c                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r   )Úhas)r6   rT   r    s     €r"   r7   z*RedisCache.delete_many.<locals>.<listcomp>Œ   s(   ø€ Ð<Ð<Ð<�a°·²¸±´Ð<�Ð<Ð<Ð<r'   )r   r   r_   r=   s   `  r"   Údelete_manyzRedisCache.delete_many„   su   ø€ Øð 	ØˆIØŒ?ð 	.ØJÐJÐJÐJÀTÐJÑJÔJˆMˆMà-Ð-¨Ð-Ñ-Ô-ˆMØ!ˆÔÔ! =Ð1Ð1Ø<Ð<Ð<Ð<˜=Ð<Ñ<Ô<Ð<r'   c                 ó|   — t          | j                             |                      ¦   «         › |› �¦  «        ¦  «        S r%   )r^   r   Úexistsr&   r0   s     r"   rd   zRedisCache.hasŽ   s8   € Ý�DÔ%×,Ò,°×0@Ò0@Ñ0BÔ0BÐ-IÀCÐ-IÐ-IÑJÔJÑKÔKÐKr'   c                 óæ   — d}| j         rA| j                             |                      ¦   «         dz   ¦  «        }|r | j        j        |Ž }n| j                             ¦   «         }t          |¦  «        S )Nr   Ú*)r   r   r1   r&   r   r_   Úflushdbr^   )r    Ústatusr1   s      r"   ÚclearzRedisCache.clear‘   ss   € ØˆØŒ?ð 	2ØÔ$×)Ò)¨$×*:Ò*:Ñ*<Ô*<¸sÑ*BÑCÔCˆDØð :Ø2˜Ô+Ô2°DÐ9�øàÔ'×/Ò/Ñ1Ô1ˆFÝ�F‰|Œ|Ðr'   é   Údeltac                 óf   — | j                              |                      ¦   «         › |› �|¬¦  «        S ©N)rC   Úamount©r   Úincrr&   ©r    r,   rn   s      r"   ÚinczRedisCache.inc›   s6   € ØÔ!×&Ò&¨t×/?Ò/?Ñ/AÔ/AÐ,HÀ3Ð,HÐ,HÐQVÐ&ÑWÔWÐWr'   c                 óh   — | j                              |                      ¦   «         › |› �| ¬¦  «        S rp   rr   rt   s      r"   ÚdeczRedisCache.decž   s9   € ØÔ!×&Ò&¨t×/?Ò/?Ñ/AÔ/AÐ,HÀ3Ð,HÐ,HÐRWÐQWÐ&ÑXÔXÐXr'   )r	   r
   Nr   r   Nr%   )rm   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú_tÚAnyÚ__annotations__r   r   r.   ÚintÚOptionalr   ÚUnionÚCallabler   r&   r+   r   ÚListr?   rG   rO   ÚDictr\   r^   r_   re   rd   rl   ru   rw   r   r'   r"   r   r      sl  € € € € € € ðð ð*  €L�"”&ÐÐÑØ €M�2”6Ð Ð Ñ Ø �Ñ"Ô"€Jð #ØØ%)ØØ"ØGKð+ð +àŒfð+ð ð+ð ”+˜cÔ"ð	+ð
 ð+ð ð+ð ”K ¤¨¨b¬k¸"¸c¸'Ô.BÐ)BÔ CÔDð+ð ”&ð+ð +ð +ð +ð6
˜Sð 
ð 
ð 
ð 
ð
	¨"¬+°cÔ*:ð 	¸sð 	ð 	ð 	ð 	ð
�sð 
˜rœvð 
ð 
ð 
ð 
ð
Y˜cð Y b¤g¨b¬f¤oð Yð Yð Yð Yðð �sð  2¤6ð °B´KÀÔ4Dð ÐPRÔPVð ð ð ð ð	ð 	�sð 	 2¤6ð 	°B´KÀÔ4Dð 	ÐPRÔPVð 	ð 	ð 	ð 	ð JNðMð MØ”w˜s B¤F˜{Ô+ðMØ68´kÀ#Ô6FðMà	Œ�”ŒðMð Mð Mð Mð"M˜#ð M $ð Mð Mð Mð Mð= ð =¨¬°´¬ð =ð =ð =ð =ðL�sð L˜tð Lð Lð Lð Lð�tð ð ð ð ðXð X�sð X 3ð X¨r¬vð Xð Xð Xð XðYð Y�sð Y 3ð Y¨r¬vð Yð Yð Yð Yð Yð Yr'   r   )Útypingr|   Úcachelib.baser   Úcachelib.serializersr   r   r   r'   r"   ú<module>rˆ      s}   ðØ Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðXYð XYð XYð XYð XY�ñ XYô XYð XYð XYð XYr'   