o
    i                     @   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dZ				dddZG dd dZdS )    N)datetimetimezone)format_timestamp)TYPE_CHECKING)Optional)Union)Any)Dict)SessionStatustsr   returnc                 C   s   | j dddS )Nr   )secondmicrosecond)replace)r    r   O/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/session.py_minute_trunc   s   r   valUnion[str, uuid.UUID]	uuid.UUIDc                 C   s   t | tjr| S t| S N)
isinstanceuuidUUID)r   r   r   r   
_make_uuid   s   
r   c                   @   s   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dZed*ddZ												d+									
																	d,ddZ	d-			d.d d!Z	"d/	$		d0d%d&Z	d1d'd(Z
dS )2SessionNapplication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_moder   c                 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   )
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   r   r   r   __init__   s8   
zSession.__init__r   c                 C   s
   t | jS r   )r   r#   )r6   r   r   r   truncated_startedL   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   r3   r   r4   r!   r#   r$   r(   r)   r+   r*   r,   r&   )r6   r   r   r!   r#   r$   r&   r(   r)   r*   r+   r,   r.   r   r   r   r5   P   s:   



zSession.updater   c                 C   s2   |d u r| j dkrd}|d ur| j|d d S d S )Nr1   exited)r&   )r&   r5   )r6   r&   r   r   r   close   s
   zSession.closeTwith_user_infoOptional[bool]c                 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*   )r6   r@   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$   rB   )
r=   r   r   r#   r!   r&   r,   r   r$   rC   )r6   rvrB   r   r   r   to_json   s    




zSession.to_json)NNNNNNNNNNNNr   )r   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/   r   Nr   )r&   r'   r   r   )T)r@   rA   r   r   )r   r   )__name__
__module____qualname__r=   r7   propertyr8   r5   r?   rC   rF   r   r   r   r   r      s    	

.	

1

r   )r   r   r   r   )r   r   r   r   )r   r   r   sentry_sdk.utilsr   typingr   r   r   r   r	   sentry_sdk._typesr
   r   r   r   r   r   r   r   <module>   s"    

