§
    X˜¶f4  ã                   ó¾   — d dl Z d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 ddlmZ ddlmZmZ ddlmZ  G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Ú	timedelta)ÚAnyÚOptionalÚProtocol)ÚFlaské   )Útotal_seconds)ÚServerSideSessionÚServerSideSessionInterface)ÚDefaultsc                   óR   — e Zd Zdedee         fd„Zdedededefd„Z	dedefd„Z
dS )	ÚMemcacheClientProtocolÚkeyÚreturnc                 ó   — d S ©N© ©Úselfr   s     úU/var/www/piapp/venv/lib/python3.11/site-packages/flask_session/memcached/memcached.pyÚgetzMemcacheClientProtocol.get   ó   € € € ó    ÚvalueÚtimeoutc                 ó   — d S r   r   )r   r   r   r   s       r   ÚsetzMemcacheClientProtocol.set   r   r   c                 ó   — d S r   r   r   s     r   ÚdeletezMemcacheClientProtocol.delete   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   r   ÚintÚboolr   r   r   r   r   r   r      s`   € € € € € Ø1�sÐ1˜x¨œ}Ð1Ð1Ð1Ð1ØB�sÐB 3ÐB°ÐB¸ÐBÐBÐBÐBØ+˜#Ð+ $Ð+Ð+Ð+Ð+Ð+Ð+r   r   c                   ó   — e Zd ZdS )ÚMemcachedSessionN)r    r!   r"   r   r   r   r'   r'      s   € € € € € Ø€Dr   r'   c                   ó  ‡ — e Zd ZdZej        ZeZdZe	j
        e	j        e	j        e	j        e	j        e	j        fdedee         dedededed	efˆ fd
„Zd„ Zdedefd„Zdedee         fd„Zdeddfd„Zdedededdfd„Zˆ xZS )ÚMemcachedSessionInterfacea  A Session interface that uses memcached as session storage. (`pylibmc`, `libmc`, `python-memcached` or `pymemcache` required)

    :param client: A ``memcache.Client`` instance.
    :param key_prefix: A prefix that is added to all storage keys.
    :param use_signer: Whether to sign the session id cookie or not.
    :param permanent: Whether to use permanent session or not.
    :param sid_length: The length of the generated session id in bytes.
    :param serialization_format: The serialization format to use for the session data.

    .. versionadded:: 0.7
        The `serialization_format` and `app` parameters were added.

    .. versionadded:: 0.6
        The `sid_length` parameter was added.

    .. versionadded:: 0.2
        The `use_signer` parameter was added.
    TÚappÚclientÚ
key_prefixÚ
use_signerÚ	permanentÚ
sid_lengthÚserialization_formatc                 óþ   •‡— ‰�t          ˆfd„dD ¦   «         ¦  «        s0t          j        dt          d¬¦  «         |                      ¦   «         Š‰| _        t          ¦   «                              ||||||¦  «         d S )Nc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r   )Úhasattr)Ú.0Úmethodr+   s     €r   ú	<genexpr>z5MemcachedSessionInterface.__init__.<locals>.<genexpr>9   s>   øè è € ð %
ð %
Ø(.�G�F˜FÑ#Ô#ð%
ð %
ð %
ð %
ð %
ð %
r   )r   r   r   zsNo valid memcache.Client instance provided, attempting to create a new instance on localhost with default settings.é   )Ú
stacklevel)ÚallÚwarningsÚwarnÚRuntimeWarningÚ_get_preferred_memcache_clientr+   ÚsuperÚ__init__)	r   r*   r+   r,   r-   r.   r/   r0   Ú	__class__s	     `     €r   r?   z"MemcachedSessionInterface.__init__/   s´   øø€ ð ˆ>¥ð %
ð %
ð %
ð %
Ø2Jð%
ñ %
ô %
ñ "
ô "
ˆ>õ ŒMð FÝØðñ ô ð ð
 ×8Ò8Ñ:Ô:ˆFØˆŒÝ‰Œ×ÒØ�˜Z¨°JÐ@Tñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó´   — ddgfddgfdddgfg}|D ]8\  }}	 t          |¦  «        }|j        } ||¦  «        c S # t          $ r Y Œ5w xY wt          d¦  «        ‚)NÚpylibmcú127.0.0.1:11211Úmemcache)zpymemcache.client.baserC   Úlibmczlocalhost:11211zNo memcache module found)Ú
__import__ÚClientÚImportError)r   ÚclientsÚmodule_nameÚserverÚmoduleÚClientClasss         r   r=   z8MemcachedSessionInterface._get_preferred_memcache_clientG   s¦   € àÐ*Ð+Ð,ØÐ+Ð,Ð-Ø9ØÐ(Ð)Ð*ð	
ˆð $+ð 	ð 	ÑˆK˜ðÝ# KÑ0Ô0�Ø$œm�Ø"�{ 6Ñ*Ô*Ð*Ð*Ð*øÝð ð ð Ø�ðøøøõ Ð4Ñ5Ô5Ð5s   ˜ ;»
AÁAr   r   c                 óX   — |dk    r#|t          t          j        ¦   «         ¦  «        z  }|S )z–
        Memcached deals with long (> 30 days) timeouts in a special
        way. Call this function to obtain a safe value for your timeout.
        i �' )r$   Útime)r   r   s     r   Ú_get_memcache_timeoutz/MemcachedSessionInterface._get_memcache_timeoutY   s,   € ð
 �WÒÐà•s�4œ9™;œ;Ñ'Ô'Ñ'ˆGØˆr   Ústore_idc                 ór   — | j                              |¦  «        }|r| j                             |¦  «        S d S r   )r+   r   Ú
serializerÚdecode)r   rQ   Úserialized_session_datas      r   Ú_retrieve_session_dataz0MemcachedSessionInterface._retrieve_session_datac   s;   € à"&¤+§/¢/°(Ñ";Ô";ÐØ"ð 	CØ”?×)Ò)Ð*AÑBÔBÐBØˆtr   Nc                 ó:   — | j                              |¦  «         d S r   )r+   r   )r   rQ   s     r   Ú_delete_sessionz)MemcachedSessionInterface._delete_sessionj   s   € ØŒ×Ò˜8Ñ$Ô$Ð$Ð$Ð$r   Úsession_lifetimeÚsessionc                 ó¶   — t          |¦  «        }| j                             |¦  «        }| j                             |||                      |¦  «        ¦  «         d S r   )r	   rS   Úencoder+   r   rP   )r   rY   rZ   rQ   Ústorage_time_to_liverU   s         r   Ú_upsert_sessionz)MemcachedSessionInterface._upsert_sessionm   sg   € õ  -Ð-=Ñ>Ô>Ðð #'¤/×"8Ò"8¸Ñ"AÔ"AÐð 	Œ�ŠØØ#Ø×&Ò&Ð';Ñ<Ô<ñ	
ô 	
ð 	
ð 	
ð 	
r   ) r    r!   r"   Ú__doc__r   rS   r'   Úsession_classÚttlr   ÚSESSION_MEMCACHEDÚSESSION_KEY_PREFIXÚSESSION_USE_SIGNERÚSESSION_PERMANENTÚSESSION_ID_LENGTHÚSESSION_SERIALIZATION_FORMATr   r   r   r#   r%   r$   r?   r=   rP   ÚdictrV   rX   Ú	TimeDeltar
   r^   Ú__classcell__)r@   s   @r   r)   r)      s}  ø€ € € € € ðð ð& ,Ô6€JØ$€MØ
€Cð
 4<Ô3MØ"Ô5Ø#Ô6Ø"Ô4Ø"Ô4Ø$,Ô$Ið
ð 
àð
ð Ð/Ô0ð
ð ð	
ð
 ð
ð ð
ð ð
ð "ð
ð 
ð 
ð 
ð 
ð 
ð06ð 6ð 6ð$¨Sð °Sð ð ð ð ð¨sð °xÀ´~ð ð ð ð ð%¨ð %°ð %ð %ð %ð %ð
Ø )ð
Ø4Eð
ØQTð
à	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   r)   )rO   r:   Údatetimer   ri   Útypingr   r   r   Úflaskr   Ú_utilsr	   Úbaser
   r   Údefaultsr   r   r'   r)   r   r   r   ú<module>rq      s)  ðØ €€€Ø €€€Ø +Ð +Ð +Ð +Ð +Ð +Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð Ð Ð ð,ð ,ð ,ð ,ð ,˜Xñ ,ô ,ð ,ð	ð 	ð 	ð 	ð 	Ð(ñ 	ô 	ð 	ðc
ð c
ð c
ð c
ð c
Ð :ñ c
ô c
ð c
ð c
ð c
r   