
    `i                         d dl Z d dlmZmZ d dlmZ d dlmZ er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
Z	 	 	 	 ddZ G d d      Zy)    N)datetimetimezone)format_timestamp)TYPE_CHECKING)Optional)Union)Any)Dict)SessionStatusc                 (    | j                  dd      S )Nr   )secondmicrosecond)replace)tss    P/opt/aeropuerto/back/api/venv/lib/python3.12/site-packages/sentry_sdk/session.py_minute_truncr      s    ::QA:..    c                 d    t        | t        j                        r| S t        j                  |       S N)
isinstanceuuidUUID)vals    r   
_make_uuidr      s%     #tyy!
99S>r   c                       e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 dddddddddd	d
dddddddddddddddeddfdZedd       Z	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dZ	 d!	 	 	 d"dZ	 d#	 	 	 d$dZ	d%dZ
y)&SessionNsidOptional[Union[str, uuid.UUID]]didOptional[str]	timestampOptional[datetime]starteddurationOptional[float]statusOptional[SessionStatus]releaseenvironment
user_agent
ip_addresserrorsOptional[int]userOptional[Any]session_modereturnc                 D   |t        j                         }|#t        j                  t        j
                        }|d}|| _        d | _        || _        d | _	        d | _
        d | _        d | _        d | _        || _        d| _        | j!                  |||||||	|
||
       y )Nokr   )
r   r   r!   r$   r(   r)   r*   r+   r,   r.   )r   uuid4r   nowr   utcr&   r   r#   r(   r)   r$   r*   r+   r0   r,   update)selfr   r   r!   r#   r$   r&   r(   r)   r*   r+   r,   r.   r0   s                 r   __init__zSession.__init__   s      ;**,C?ll8<<0G>F$((,,0+/+/+/!-#!! 	 	
r   c                 ,    t        | j                        S r   )r   r#   )r8   s    r   truncated_startedzSession.truncated_startedL   s    T\\**r   c                    |rL|
|j                  d      }
|7|j                  d      xs$ |j                  d      xs |j                  d      }|t        |      | _        |t        |      | _        |#t        j                  t        j                        }|| _	        ||| _
        ||| _        ||| _        ||| _        |
|
| _        |	|	| _        ||| _        ||| _        y y )Nr+   idemailusername)getr   r   strr   r   r5   r   r6   r!   r#   r$   r(   r)   r+   r*   r,   r&   )r8   r   r   r!   r#   r$   r&   r(   r)   r*   r+   r,   r.   s                r   r7   zSession.updateP   s      !!XXl3
{hhtnQ(9QTXXj=Q?!#DH?3xDH X\\2I""DL$DM"DL"*D!(DO!(DO DK DK r   c                 T    || j                   dk(  rd}|| j                  |       y y )Nr3   exited)r&   )r&   r7   )r8   r&   s     r   closezSession.close   s2     >dkkT1FKKvK& r   c                     i }| j                   | j                   |d<   | j                  | j                  |d<   |r6| j                  | j                  |d<   | j                  | j                  |d<   |S )Nr(   r)   r+   r*   )r(   r)   r+   r*   )r8   with_user_infoattrss      r   get_json_attrszSession.get_json_attrs   su     <<##||E)'#'#3#3E- *&*ool#*&*ool#r   c                 l   t        | j                        dt        | j                        t        | j                        | j
                  d}| j                  r| j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j                         }|r||d<   |S )NT)r   initr#   r!   r&   r,   r   r$   rG   )
rA   r   r   r#   r!   r&   r,   r   r$   rH   )r8   rvrG   s      r   to_jsonzSession.to_json   s    txx='5)$..9kk 
 ;;;;BxL88BuI==$!]]BzN##%BwK	r   )NNNNNNNNNNNNapplication)r1   r   )NNNNNNNNNNNN)r   r   r   r    r!   r"   r#   r"   r$   r%   r&   r'   r(   r    r)   r    r*   r    r+   r    r,   r-   r.   r/   r1   Nr   )r&   r'   r1   r	   )T)rF   zOptional[bool]r1   r	   )r1   r	   )__name__
__module____qualname__rA   r9   propertyr;   r7   rD   rH   rL    r   r   r   r      s    26#*.(,&*,0#''+&*&*"& $),
.,
 ,
 (	,

 &,
 $,
 *,
 !,
 %,
 $,
 $,
  ,
 ,
 ,
 
,
\ + +
 26#*.(,&*,0#''+&*&*"& $-!.-! -! (	-!
 &-! $-! *-! !-! %-! $-! $-!  -! -! 
-!b -1')' 
' ,0( 
 r   r   )r   r   r1   r   )r   zUnion[str, uuid.UUID]r1   z	uuid.UUID)r   r   r   sentry_sdk.utilsr   typingr   r   r   r	   r
   sentry_sdk._typesr   r   r   r   rR   r   r   <module>rV      sI     ' -  //	 L Lr   