o
    ;h:
                     @   s   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 deZG dd deZdS )    N)	timedelta)Optional)FileSystemCache)Flask   )total_seconds)ServerSideSessionServerSideSessionInterface)Defaultsc                   @   s   e Zd ZdS )CacheLibSessionN)__name__
__module____qualname__ r   r   R/var/www/html/venv/lib/python3.10/site-packages/flask_session/cachelib/cachelib.pyr      s    r   c                       s   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dZdedee fddZdeddfddZdedededdfddZ  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                    sD   |d u rt jdtdd tddd}|| _t d ||||| d S )NzlNo valid cachelib instance provided, attempting to create a new instance on localhost with default settings.   )
stacklevelZflask_sessioni  )	threshold)warningswarnRuntimeWarningr   cachesuper__init__)selfr   r   r   r   r   r   r   	__class__r   r   r!      s   z!CacheLibSessionInterface.__init__store_idreturnc                 C   s   | j |S N)r   getr"   r%   r   r   r   _retrieve_session_data8   s   z/CacheLibSessionInterface._retrieve_session_datac                 C   s   | j | d S r'   )r   deleter)   r   r   r   _delete_session<   s   z(CacheLibSessionInterface._delete_sessionsession_lifetimesessionc                 C   s&   t |}t|}| jj|||d d S )N)keyvaluetimeout)r   dictr   set)r"   r-   r.   r%   Zstorage_time_to_liveZsession_datar   r   r   _upsert_session?   s   
z(CacheLibSessionInterface._upsert_session)r   r   r   __doc__r   Zsession_classttlr
   ZSESSION_CACHELIBZSESSION_KEY_PREFIXZSESSION_USE_SIGNERZSESSION_PERMANENTZSESSION_ID_LENGTHZSESSION_SERIALIZATION_FORMATr   r   r   strboolintr!   r2   r*   r,   	TimeDeltar   r4   __classcell__r   r   r#   r   r      sJ    
r   )r   datetimer   r:   typingr   Zcachelib.filer   Zflaskr   Z_utilsr   baser   r	   defaultsr
   r   r   r   r   r   r   <module>   s    