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 )FileSystemSessionN)__name__
__module____qualname__ r   r   V/var/www/html/venv/lib/python3.10/site-packages/flask_session/filesystem/filesystem.pyr      s    r   c                       s   e Zd ZdZeZdZejej	ej
ejejejejejfdededed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 )FileSystemSessionInterfacea{  Uses the :class:`cachelib.file.FileSystemCache` as a session storage.

    :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.
    :param cache_dir: the directory where session files are stored.
    :param threshold: the maximum number of items the session stores before it
    :param mode: the file mode wanted for the session files, default 0600

    .. 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
key_prefix
use_signer	permanent
sid_lengthserialization_format	cache_dir	thresholdmodec
           
         s   |t jkrtjdtdd |t jkrtjdtdd |	t jkr'tjdtdd tjdtdd t|||	d| _t	 
|||||| d S )Nz'SESSION_FILE_DIR' is deprecated and will be removed in a future release. Instead pass FileSystemCache(directory, threshold, mode) instance as SESSION_CACHELIB.   )
stacklevelz'SESSION_FILE_THRESHOLD' is deprecated and will be removed in a future release. Instead pass FileSystemCache(directory, threshold, mode) instance as SESSION_CLIENT.z'SESSION_FILE_MODE' is deprecated and will be removed in a future release. Instead pass FileSystemCache(directory, threshold, mode) instance as SESSION_CLIENT.z|FileSystemSessionInterface is deprecated and will be removed in a future release. Instead use the CacheLib backend directly.)r   r   r   )r
   SESSION_FILE_DIRwarningswarnDeprecationWarningSESSION_FILE_THRESHOLDSESSION_FILE_MODEr   cachesuper__init__)
selfr   r   r   r   r   r   r   r   r   	__class__r   r   r%   *   s:   


z#FileSystemSessionInterface.__init__store_idreturnc                 C   s   | j |S N)r#   getr&   r)   r   r   r   _retrieve_session_dataY   s   z1FileSystemSessionInterface._retrieve_session_dataNc                 C   s   | j | d S r+   )r#   deleter-   r   r   r   _delete_session]   s   z*FileSystemSessionInterface._delete_sessionsession_lifetimesessionc                 C   s&   t |}t|}| jj|||d d S )N)keyvaluetimeout)r   dictr#   set)r&   r1   r2   r)   Zstorage_time_to_liveZsession_datar   r   r   _upsert_session`   s   
z*FileSystemSessionInterface._upsert_session)r   r   r   __doc__r   Zsession_classttlr
   ZSESSION_KEY_PREFIXZSESSION_USE_SIGNERZSESSION_PERMANENTZSESSION_ID_LENGTHZSESSION_SERIALIZATION_FORMATr   r!   r"   r   strboolintr%   r   r6   r.   r0   	TimeDeltar   r8   __classcell__r   r   r'   r   r      sT    	
/r   )r   datetimer   r>   typingr   Zcachelib.filer   Zflaskr   Z_utilsr   baser   r	   defaultsr
   r   r   r   r   r   r   <module>   s    