
    ՟f:
                         d dl Z d dlmZ d dlmZ d dl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y)    N)	timedelta)Optional)FileSystemCache)Flask   )total_seconds)ServerSideSessionServerSideSessionInterface)Defaultsc                       e Zd Zy)CacheLibSessionN)__name__
__module____qualname__     Z/var/www/cvtools/html/venv/lib/python3.12/site-packages/flask_session/cachelib/cachelib.pyr   r      s    r   r   c                       e Zd ZdZeZdZd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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 )CacheLibSessionInterfacea  Uses any :class:`cachelib` backend as a session storage.

    :param client: A :class:`cachelib` backend instance.
    :param key_prefix: A prefix that is added to 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.
    TNappclient
key_prefix
use_signer	permanent
sid_lengthserialization_formatc                     |)t        j                  dt        d       t        dd      }|| _        t
        |   d |||||       y )NzlNo valid cachelib instance provided, attempting to create a new instance on localhost with default settings.   )
stacklevelflask_sessioni  )	threshold)warningswarnRuntimeWarningr   cachesuper__init__)	selfr   r   r   r   r   r   r   	__class__s	           r   r'   z!CacheLibSessionInterface.__init__   sO     >MM~
 %_DF
*j)ZAU	
r   store_idreturnc                 8    | j                   j                  |      S N)r%   getr(   r*   s     r   _retrieve_session_dataz/CacheLibSessionInterface._retrieve_session_data8   s    zz~~h''r   c                 :    | j                   j                  |       y r-   )r%   deleter/   s     r   _delete_sessionz(CacheLibSessionInterface._delete_session<   s    

(#r   session_lifetimesessionc                 l    t        |      }t        |      }| j                  j                  |||       y )N)keyvaluetimeout)r   dictr%   set)r(   r4   r5   r*   storage_time_to_livesession_datas         r   _upsert_sessionz(CacheLibSessionInterface._upsert_session?   s;      --=> G} 	

( 	 	
r   )r   r   r   __doc__r   session_classttlr   SESSION_CACHELIBSESSION_KEY_PREFIXSESSION_USE_SIGNERSESSION_PERMANENTSESSION_ID_LENGTHSESSION_SERIALIZATION_FORMATr   r   r   strboolintr'   r:   r0   r3   	TimeDeltar	   r>   __classcell__)r)   s   @r   r   r      s     $M
C ,4,E,E"55#66"44"44$,$I$I

 )
 	

 
 
 
 "
2(s (x~ ($ $ $
 )
4E
QT
	
r   r   )r"   datetimer   rK   typingr   cachelib.filer   flaskr   _utilsr   baser	   r
   defaultsr   r   r   r   r   r   <module>rT      s7     +  )  " @ 	' 	;
9 ;
r   