o
    Á¿i½  ã                   @   s    d dl mZ d dlmZ d dlmZ d dlZd dlmZ	 d dl
mZ eZdZded	ejd
 fdd„Zdejd d	efdd„ZeG dd„ dƒƒZG dd„ dƒZdS )é    )ÚCounter)Ú	dataclass)ÚfieldN)ÚWeakKeyDictionary)Útraceré   Ú	debug_tagÚreturn)ÚSessionNNc                 c   s<    |   d¡D ]}| d¡\}}}t|t|ptƒdV  qd S )NÚ.ú:)ÚidentÚlevel)ÚsplitÚ	partitionr
   ÚintÚDEFAULT_SESSION_LEVEL)r   Úsessionr   Ú_r   © r   úN/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/debugging/_session.pyÚ_sessions_from_debug_tag   s
   €þr   Úsessionsr
   c                 C   s   d  dd„ | D ƒ¡S )Nr   c                 s   s2    | ]}|j tkr|j› d |j › n|jV  qdS )r   N)r   r   r   )Ú.0r   r   r   r   Ú	<genexpr>   s
   €  ÿ
ÿz)_sessions_to_debug_tag.<locals>.<genexpr>)Újoin)r   r   r   r   Ú_sessions_to_debug_tag   s   
þr   c                   @   s(  e Zd ZU eed< eed< eedZe	je
 ed< dZe	je	j ed< ede	jddfd	d
„ƒZde	jddfdd„Zdde	je	j ddfdd„Zdde	je	j ddfdd„Zde
ddfdd„Zde
defdd„Zedde	je	j ded  fdd„ƒZedede	jd  fdd„ƒZededefdd„ƒZdS )r
   r   r   )Údefault_factoryÚ_countsNÚ_trace_contextÚcontextr	   c                 C   s4   |j  d¡}|d u rd S t|ƒD ]}| |¡ qd S ©Nz_dd.p.debug)Ú_metaÚgetr   Úlink_to_trace)Úclsr    r   r   r   r   r   Úactivate_distributed$   s   ÿzSession.activate_distributedc                 C   sn   |j  d¡}|d urtt|ƒƒng }|D ]}| j|jkr(| j|jkr&| j|_ nq| | ¡ t|ƒ|j d< d S r!   )r"   r#   Úlistr   r   r   Úappendr   )Úselfr    r   r   r   r   r   r   Ú	propagate-   s   û
zSession.propagateÚtrace_contextc                 C   ó   t  | |¡ d S ©N)ÚSessionManagerÚlink_session_to_trace©r)   r+   r   r   r   r$   =   ó   zSession.link_to_tracec                 C   r,   r-   )r.   Úunlink_session_from_tracer0   r   r   r   Úunlink_from_trace@   r1   zSession.unlink_from_traceÚprobe_idc                 C   s:   | j  |g¡ | j}|d ur| j | |jd|› < d S d S )Nz_dd.ld.probe_id.)r   Úupdater   Ú_metrics)r)   r4   r+   r   r   r   Úcount_probeC   s
   ÿzSession.count_probec                 C   s   | j  |d¡S )Nr   )r   r#   )r)   r4   r   r   r   Úget_probe_countJ   s   zSession.get_probe_countc                 C   ó
   t  |¡S r-   )r.   Úget_sessions_for_trace)r%   r+   r   r   r   Ú
from_traceM   ó   
zSession.from_tracec                 C   r9   r-   )r.   Úlookup_session©r%   r   r   r   r   ÚlookupQ   r<   zSession.lookupc                 C   r9   r-   )r.   Úis_session_activer>   r   r   r   Ú	is_activeU   r<   zSession.is_activer-   )Ú__name__Ú
__module__Ú__qualname__Ú	SessionIdÚ__annotations__r   r   r   r   ÚtÚstrr   ÚOptionalÚAnyÚclassmethodr&   r*   r$   r3   r7   r8   r'   r;   r?   ÚboolrA   r   r   r   r   r
      s$   
 "c                   @   sÎ   e Zd ZU eƒ Zejejee	e
f f ed< edde
dejej ddfdd„ƒZedde
dejej ddfdd	„ƒZeddejej dee
 fd
d„ƒZede	deje
 fdd„ƒZede	defdd„ƒZdS )r.   Ú_sessions_trace_mapNr   r+   r	   c                 C   s6   |pt  ¡ }|d u rd S ||_|| j |i ¡|j< d S r-   )r   Úcurrent_trace_contextr   rM   Ú
setdefaultr   ©r%   r   r+   r    r   r   r   r/   _   s
   z$SessionManager.link_session_to_tracec                 C   s4   |pt  ¡ }|d u rd S | j |i ¡ |jd ¡ d S r-   )r   rN   rM   r#   Úpopr   rP   r   r   r   r2   i   s   z(SessionManager.unlink_session_from_tracec                 C   s4   | j r|pt ¡  }d urt| j  |i ¡ ¡ ƒS g S r-   )rM   r   rN   r'   r#   Úvalues)r%   r+   r    r   r   r   r:   r   s   ÿÿÿýz%SessionManager.get_sessions_for_tracer   c                 C   s(   t  ¡ }|d u r
d S | j |i ¡ |¡S r-   ©r   rN   rM   r#   ©r%   r   r    r   r   r   r=   z   s   zSessionManager.lookup_sessionc                 C   s&   t  ¡ }|d u r
dS || j |i ¡v S )NFrS   rT   r   r   r   r@   ‚   s   z SessionManager.is_session_activer-   )rB   rC   rD   ÚwkdictrM   rG   ÚMutableMappingrJ   ÚdictrE   r
   rF   rK   rI   r/   r2   r'   r:   r=   rL   r@   r   r   r   r   r.   Z   s   
 ÿ"	""r.   )Úcollectionsr   Údataclassesr   r   ÚtypingrG   Úweakrefr   rU   Úddtracer   rH   rE   r   Ú	Generatorr   ÚIterabler   r
   r.   r   r   r   r   Ú<module>   s    <