
    Xf                         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dS )    N)	timedelta)Optional)Flask)Redis   )total_seconds)ServerSideSessionServerSideSessionInterface)Defaultsc                       e Zd ZdS )RedisSessionN)__name__
__module____qualname__     M/var/www/piapp/venv/lib/python3.11/site-packages/flask_session/redis/redis.pyr   r      s        Dr   r   c                        e Zd Zd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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 )RedisSessionInterfacea  Uses the Redis key-value store as a session storage. (`redis-py` required)

    :param client: A ``redis.Redis`` 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          |t                    s*t          j        dt          d           t                      }|| _        t                                          ||||||           d S )NziNo valid Redis instance provided, attempting to create a new instance on localhost with default settings.   )
stacklevel)
isinstancer   warningswarnRuntimeWarningr   super__init__)	selfr   r   r   r   r   r   r   	__class__s	           r   r%   zRedisSessionInterface.__init__(   s     >FE!:!:>M{   
 WWFZJ@T	
 	
 	
 	
 	
r   store_idreturnc                 r    | j                             |          }|r| j                            |          S d S N)r   get
serializerdecode)r&   r(   serialized_session_datas      r   _retrieve_session_dataz,RedisSessionInterface._retrieve_session_data>   s;    "&+//(";";" 	C?))*ABBBtr   Nc                 :    | j                             |           d S r+   )r   delete)r&   r(   s     r   _delete_sessionz%RedisSessionInterface._delete_sessionE   s    8$$$$$r   session_lifetimesessionc                     t          |          }| j                            |          }| j                            |||           d S )N)namevalueex)r   r-   encoder   set)r&   r4   r5   r(   storage_time_to_liver/   s         r   _upsert_sessionz%RedisSessionInterface._upsert_sessionH   s]      --=>> #'/"8"8"A"A 	)# 	 	
 	
 	
 	
 	
r   )r   r   r   __doc__r   session_classttlr   SESSION_REDISSESSION_KEY_PREFIXSESSION_USE_SIGNERSESSION_PERMANENTSESSION_ID_LENGTHSESSION_SERIALIZATION_FORMATr   r   r   strboolintr%   dictr0   r3   	TimeDeltar	   r=   __classcell__)r'   s   @r   r   r      sB        & !M
C
 #+"8"5#6"4"4$,$I
 

 
 	

 
 
 
 "
 
 
 
 
 
,s x~    % % % % % %
 )
4E
QT
	
 
 
 
 
 
 
 
r   r   )r!   datetimer   rK   typingr   flaskr   redisr   _utilsr   baser	   r
   defaultsr   r   r   r   r   r   <module>rT      s     + + + + + +                   " " " " " " @ @ @ @ @ @ @ @      	 	 	 	 	$ 	 	 	D
 D
 D
 D
 D
6 D
 D
 D
 D
 D
r   