
    di                         S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SKrS SK	J
r
  S SKJr  S SKJr  S	S
KJrJr  S	SKJr   " S S\5      r " S S\5      rg)    N)datetime)	timedelta)Decimal)Optional)DynamoDBServiceResource)Flask)
want_bytes   )ServerSideSessionServerSideSessionInterface)Defaultsc                       \ rS rSrSrg)DynamoDBSession    N)__name__
__module____qualname____firstlineno____static_attributes__r       i/var/www/fortnox.synktek.com/backend/venv/lib/python3.13/site-packages/flask_session/dynamodb/dynamodb.pyr   r      s    r   r   c                   <  ^  \ rS rSrSr\r\R                  \R                  \R                  \R                  \R                  \R                  \R                  4S\S\\   S\S\S\S\S	\S
\4U 4S jjjrS\S\\   4S jrS\SS4S jrS\S\S\SS4S jrSrU =r$ )DynamoDBSessionInterface   aC  A Session interface that uses dynamodb as backend. (`boto3` required)

:param client: A ``DynamoDBServiceResource`` instance.
:param key_prefix: A prefix that is added to all DynamoDB store 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 table_name: DynamoDB table name to store the session.

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

.. versionadded:: 0.2
    The `use_signer` parameter was added.
appclient
key_prefix
use_signer	permanent
sid_lengthserialization_format
table_namec	                 @  > Uc2  [         R                  " S[        SS9  [        R                  " SSSSSS9n UR                  S	S
S./US	SS./SS9  UR                  R                  R                  S5      R                  US9  UR                  R                  R                  U R                  SSS.S9  X l        UR                  U5      U l        ["        T	U ]I  UUUUUU5        g ! [        UR                  R                  R                  R                  4 a     Ngf = f)NzjNo valid DynamoDBServiceResource instance provided, attempting to create a new instance on localhost:8000.   )
stackleveldynamodbzhttp://localhost:8000z	us-west-2dummy)endpoint_urlregion_nameaws_access_key_idaws_secret_access_keyidS)AttributeNameAttributeTypeHASH)r/   KeyTypePAY_PER_REQUEST)AttributeDefinitions	TableName	KeySchemaBillingModetable_exists)r5   T
expiration)Enabledr/   )r5   TimeToLiveSpecification)warningswarnRuntimeWarningboto3resourcecreate_tablemetar   
get_waiterwaitupdate_time_to_liver#   AttributeError
exceptionsResourceInUseExceptionTablestoresuper__init__)
selfr   r   r   r   r    r!   r"   r#   	__class__s
            r   rL   !DynamoDBSessionInterface.__init__'   s6    >MM|
 ^^4'")&-F	&*SA& %&*v> .   	 KK)).9>>>TKK22//#%1) 3  \\*-
 	
  2 2 = = T TU 		s   A=C& &4DDstore_idreturnc                     U R                   R                  SU0S9R                  S5      nU(       a?  [        UR                  S5      R                  5      nU R
                  R                  U5      $ g )Nr-   KeyItemval)rJ   get_itemgetr	   value
serializerdecode)rM   rP   documentserialized_session_datas       r   _retrieve_session_data/DynamoDBSessionInterface._retrieve_session_datac   s_    ::&&D(+;&<@@H&0e1D1J1J&K#??))*ABBr   Nc                 :    U R                   R                  SU0S9  g )Nr-   rS   )rJ   delete_item)rM   rP   s     r   _delete_session(DynamoDBSessionInterface._delete_sessionk   s    

D(#34r   session_lifetimesessionc           	          [         R                  " 5       U-   nU R                  R                  U5      nU R                  R                  SU0SU[        UR                  5       5      S.S9  g )Nr-   z#SET val = :value, expiration = :exp)z:valuez:exp)rT   UpdateExpressionExpressionAttributeValues)r   utcnowrZ   encoderJ   update_itemr   	timestamp)rM   rd   re   rP   storage_expiration_datetimer]   s         r   _upsert_session(DynamoDBSessionInterface._upsert_sessionn   sm     '/oo&7:J&J#"&//"8"8"A

h C1 ; E E GH' 	 		
r   )r   rJ   )r   r   r   r   __doc__r   session_classr   SESSION_DYNAMODBSESSION_KEY_PREFIXSESSION_USE_SIGNERSESSION_PERMANENTSESSION_ID_LENGTHSESSION_SERIALIZATION_FORMATSESSION_DYNAMODB_TABLEr   r   r   strboolintrL   dictr^   rb   	TimeDeltar   rn   r   __classcell__)rN   s   @r   r   r      s     $M
 5=4M4M"55#66"44"44$,$I$I"99:
:
 01:
 	:

 :
 :
 :
 ":
 :
 :
xs x~ 5 5 5
 )
4E
QT
	
 
r   r   )r<   r   r   r}   decimalr   typingr   r?   $mypy_boto3_dynamodb.service_resourcer   flaskr   itsdangerousr	   baser   r   defaultsr   r   r   r   r   r   <module>r      sB      +    H  # @ 	' 	j
9 j
r   