o
    #if                     @   s   d dl Z d dlmZmZ d dlmZ d dlmZ er8d 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ZdS )    N)datetimetimezone)TYPE_CHECKING)format_timestamp)Optional)Union)Any)Dict)SessionStatusc                 C   s   | j dddS )Nr   )secondmicrosecond)replace)ts r   K/var/www/html/corbot_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tj}|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   nowr   utc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_startedN   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 r:ttj}|| _	|d urD|| _
|d urK|| _|d urR|| _|d urY|| _|
d ur`|
| _|	d urg|	| _|d urn|| _|d urw|| _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   r   r   r+   S   s:   



zSession.updatec                 C   s2   |d u r| j dkrd}|d ur| j|d d S d S )Nr   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,   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   r7   )
r3   r   r   r)   r   r(   r#   r   r   r8   )r,   rvr7   r   r   r   to_json   s    




zSession.to_json)NNNNNNNNNNNNr   )NNNNNNNNNNNNr   )T)
__name__
__module____qualname__r-   propertyr.   r+   r5   r8   r;   r   r   r   r   r      sF    
/

1


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