§
    X˜¶f^  ã                   óN   — d dl Zd dlmZ d dlmZ d dlmZ  G d„ de¦  «        ZdS )é    N)Útime)Ú	BaseCache)ÚSimpleSerializerc            
       ó`  — e Zd ZdZ e¦   «         Z	 	 ddedefd„Zdefd„Z	d	e
dd
fd„Zdd„Zdd„Zdej        e         defd„Zdedej        fd„Z	 ddedej        dej        e         dej        e         fd„Zddedej        dej        e         defd„Zdedefd„Zdedefd„Zdefd„Zd
S )ÚSimpleCachea�  Simple memory cache for single process environments.  This class exists
    mainly for the development server and is not 100% thread safe.  It tries
    to use as many atomic operations as possible and no locks for simplicity
    but it could happen under heavy load that keys are added multiple times.

    :param threshold: the maximum number of items the cache stores before
                      it starts deleting some.
    :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.
    éô  é,  Ú	thresholdÚdefault_timeoutc                 óP   — t          j        | |¦  «         i | _        |pd| _        d S )Nr   )r   Ú__init__Ú_cacheÚ
_threshold)Úselfr
   r   s      úC/var/www/piapp/venv/lib/python3.11/site-packages/cachelib/simple.pyr   zSimpleCache.__init__   s.   € õ
 	Ô˜4 Ñ1Ô1Ð1Ø,.ˆŒØ#Ð* sˆŒˆˆó    Úreturnc                 ó<   — t          | j        ¦  «        | j        k    S ©N)Úlenr   r   ©r   s    r   Ú_over_thresholdzSimpleCache._over_threshold    s   € Ý�4”;ÑÔ $¤/Ò1Ð1r   ÚnowNc                 ó’   ‡— ˆfd„| j                              ¦   «         D ¦   «         }|D ]}| j                              |d ¦  «         Œd S )Nc                 ó,   •— g | ]\  }\  }}|‰k     ¯|‘ŒS © r   )Ú.0ÚkÚexpiresÚ_r   s       €r   ú
<listcomp>z/SimpleCache._remove_expired.<locals>.<listcomp>$   s&   ø€ ÐRÐRÐR™/˜!™\˜g qÀGÈcÂMÀM�AÀMÀMÀMr   )r   ÚitemsÚpop)r   r   Útoremover   s    `  r   Ú_remove_expiredzSimpleCache._remove_expired#   s\   ø€ ØRÐRÐRÐR¨T¬[×->Ò->Ñ-@Ô-@ÐRÑRÔRˆØð 	%ð 	%ˆAØŒK�OŠO˜A˜tÑ$Ô$Ð$Ð$ð	%ð 	%r   c                 óÚ   — d„ t          | j                             ¦   «         d„ ¬¦  «        D ¦   «         }|D ]4}| j                             |d ¦  «         |                      ¦   «         s d S Œ5d S )Nc              3   ó    K  — | ]	\  }}|V — Œ
d S r   r   )r   r   Úvs      r   ú	<genexpr>z,SimpleCache._remove_older.<locals>.<genexpr>)   s7   è è € ð 
ð 
Ù�!�QˆAð
ð 
ð 
ð 
ð 
ð 
r   c                 ó   — | d         d         S )Né   r   r   )Úitems    r   ú<lambda>z+SimpleCache._remove_older.<locals>.<lambda>*   s   € ÀtÈAÄwÈqÄz€ r   )Úkey)Úsortedr   r"   r#   r   )r   Ú	k_orderedr   s      r   Ú_remove_olderzSimpleCache._remove_older(   s�   € ð
ð 
Ý  ¤×!2Ò!2Ñ!4Ô!4Ð:QÐ:QÐRÑRÔRð
ñ 
ô 
ˆ	ð ð 	ð 	ˆAØŒK�OŠO˜A˜tÑ$Ô$Ð$Ø×'Ò'Ñ)Ô)ð Ø��ðð	ð 	r   c                 óÈ   — |                       ¦   «         r#t          ¦   «         }|                      |¦  «         |                       ¦   «         r|                      ¦   «          d S d S r   )r   r   r%   r1   )r   r   s     r   Ú_prunezSimpleCache._prune1   si   € Ø×ÒÑ!Ô!ð 	&Ý‘&”&ˆCØ× Ò  Ñ%Ô%Ð%à×ÒÑ!Ô!ð 	!Ø×ÒÑ Ô Ð Ð Ð ð	!ð 	!r   Útimeoutc                 óx   — t          j        | |¦  «        }|dk    rt          t          ¦   «         ¦  «        |z   }|S ©Nr   )r   Ú_normalize_timeoutÚintr   )r   r4   s     r   r7   zSimpleCache._normalize_timeout9   s6   € ÝÔ.¨t°WÑ=Ô=ˆØ�QŠ;ˆ;Ý�$™&œ&‘k”k GÑ+ˆGØˆr   r.   c                 ó®   — 	 | j         |         \  }}|dk    s|t          ¦   «         k    r| j                             |¦  «        S d S # t          $ r Y d S w xY wr6   )r   r   Ú
serializerÚloadsÚKeyError©r   r.   r   Úvalues       r   ÚgetzSimpleCache.get?   sn   € ð	Ø!œ[¨Ô-‰NˆG�UØ˜!Š|ˆ|˜w­©¬Ò/Ð/Ø”×,Ò,¨UÑ3Ô3Ð3ð  0Ð/øåð 	ð 	ð 	Ø�4�4ð	øøøs   ‚AA Á
AÁAr>   c                 ó    — |                       |¦  «        }|                      ¦   «          || j                             |¦  «        f| j        |<   dS )NT)r7   r3   r:   Údumpsr   )r   r.   r>   r4   r   s        r   ÚsetzSimpleCache.setG   sJ   € ð ×)Ò)¨'Ñ2Ô2ˆØ�Š‰ŒˆØ# T¤_×%:Ò%:¸5Ñ%AÔ%AÐBˆŒ�CÑØˆtr   c                 óÜ   — |                       |¦  «        }|                      ¦   «          || j                             |¦  «        f}|| j        v rdS | j                             ||¦  «         dS )NFT)r7   r3   r:   rA   r   Ú
setdefault)r   r.   r>   r4   r   r,   s         r   ÚaddzSimpleCache.addO   sk   € Ø×)Ò)¨'Ñ2Ô2ˆØ�Š‰ŒˆØ˜œ×.Ò.¨uÑ5Ô5Ð6ˆØ�$”+ÐÐØ�5ØŒ×Ò˜s DÑ)Ô)Ð)Øˆtr   c                 ó<   — | j                              |d ¦  «        d uS r   )r   r#   )r   r.   s     r   ÚdeletezSimpleCache.deleteX   s   € ØŒ{�Š˜s DÑ)Ô)°Ð5Ð5r   c                 ó�   — 	 | j         |         \  }}t          |dk    p|t          ¦   «         k    ¦  «        S # t          $ r Y dS w xY w)Nr   F)r   Úboolr   r<   r=   s       r   ÚhaszSimpleCache.has[   sY   € ð	Ø!œ[¨Ô-‰NˆG�UÝ˜ 1šÐ8¨µ$±&´&Ò(8Ñ9Ô9Ð9øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚47 ·
AÁAc                 ó^   — | j                              ¦   «          t          | j         ¦  «         S r   )r   ÚclearrI   r   s    r   rL   zSimpleCache.clearb   s)   € ØŒ×ÒÑÔÐÝ˜œÑ$Ô$Ð$Ð$r   )r   r	   )r   Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r:   r8   r   rI   r   Úfloatr%   r1   r3   Ú_tÚOptionalr7   ÚstrÚAnyr?   rB   rE   rG   rJ   rL   r   r   r   r   r      s  € € € € € ð
ð 
ð "Ð!Ñ#Ô#€Jð Ø"ð+ð +àð+ð ð+ð +ð +ð +ð2 ð 2ð 2ð 2ð 2ð% 5ð %¨Tð %ð %ð %ð %ð
ð ð ð ð!ð !ð !ð !ð¨"¬+°cÔ*:ð ¸sð ð ð ð ð�sð ˜rœvð ð ð ð ð DHðð ØðØ!œvðØ02´¸CÔ0@ðà	Œ�TÔ	ðð ð ð ðð �sð  2¤6ð °B´KÀÔ4Dð ÐPTð ð ð ð ð6˜#ð 6 $ð 6ð 6ð 6ð 6ð�sð ˜tð ð ð ð ð%�tð %ð %ð %ð %ð %ð %r   r   )ÚtypingrR   r   Úcachelib.baser   Úcachelib.serializersr   r   r   r   r   ú<module>rY      s…   ðØ Ð Ð Ð Ø Ð Ð Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ð\%ð \%ð \%ð \%ð \%�)ñ \%ô \%ð \%ð \%ð \%r   