o
    Zh                     @   s   d dl Z d dl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
lmZ dd Zdd ZG dd deZdS )    N)datetime_utcnow)TYPE_CHECKING)format_timestamp)datetime)Optional)Union)Any)Dict)SessionStatusc                 C   s   | j dddS )Nr   )secondmicrosecond)replace)ts r   I/var/www/html/lang_env/lib/python3.10/site-packages/sentry_sdk/session.py_minute_trunc   s   r   c                 C   s   t | tjr| S t| S N)
isinstanceuuidUUID)valr   r   r   
_make_uuid   s   
r   c                   @   s~   e Zd Z													dddZedd Z												dddZ	dd	d
Z	dddZdd Z	dS )SessionNapplicationc                 C   s   |d u rt  }|d u rt }|d u rd}|| _d | _|| _d | _d | _d | _d | _	d | _
|| _d| _| j|||||||	|
||d
 d S )Nokr   )
siddid	timestampdurationreleaseenvironment
user_agent
ip_addresserrorsuser)r   uuid4r   statusr   startedr   r    r   r!   r"   session_moder#   update)selfr   r   r   r'   r   r&   r   r    r!   r"   r#   r$   r(   r   r   r   __init__    s8   
zSession.__init__c                 C   s
   t | jS r   )r   r'   )r*   r   r   r   truncated_startedO   s   
zSession.truncated_startedc                 C   s   |r|
d u r| d}
|d u r| dp| dp| d}|d ur't|| _|d ur0t|| _|d u r7t }|| _|d urA|| _|d urH|| _|d urO|| _	|d urV|| _
|
d ur]|
| _|	d urd|	| _|d urk|| _|d urt|| _d S d S )Nr"   idemailusername)getr   r   strr   r   r   r'   r   r   r    r"   r!   r#   r&   )r*   r   r   r   r'   r   r&   r   r    r!   r"   r#   r$   r   r   r   r)   T   s:   



zSession.updatec                 C   s2   |d u r| j dkrd}|d ur| j|d d S d S )Nr   Zexited)r&   )r&   r)   )r*   r&   r   r   r   close   s
   zSession.closeTc                 C   s\   i }| j d ur| j |d< | jd ur| j|d< |r,| jd ur"| j|d< | jd ur,| j|d< |S )Nr   r    r"   r!   )r   r    r"   r!   )r*   Zwith_user_infoattrsr   r   r   get_json_attrs   s   







zSession.get_json_attrsc                 C   st   t | jdt| jt| j| jd}| jr| j|d< | jd ur$| j|d< | jd ur.| j|d< | 	 }|r8||d< |S )NT)r   initr'   r   r&   r#   r   r   r3   )
r1   r   r   r'   r   r&   r#   r   r   r4   )r*   rvr3   r   r   r   to_json   s    




zSession.to_json)NNNNNNNNNNNNr   )NNNNNNNNNNNNr   )T)
__name__
__module____qualname__r+   propertyr,   r)   r2   r4   r7   r   r   r   r   r      sF    
/

1


r   )r   Zsentry_sdk._compatr   Zsentry_sdk._typesr   Zsentry_sdk.utilsr   r   typingr   r   r   r	   r
   r   r   objectr   r   r   r   r   <module>   s    	