
    lh#                     0   d dl Z d dlZd dlmZmZmZ d dlmZ d dlZd dl	m
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lmZ ddZedd       Zd Zd Zedd       Zedd       ZdZdZd Z  G d d      Z!y)    N)ThreadLockEvent)contextmanager)Envelope)Session)format_timestamp)TYPE_CHECKING)Any)Callable)Dict)	Generator)List)Optional)Unionc                    t        j                  dt        d       | t        j                  j
                  } | j                  j                  }|6| j                  r| j                  j                  ni }|j                  dd      }|S )zHDEPRECATED: Utility function to find out if session tracking is enabled.nThis function is deprecated and will be removed in the next major release. There is no public API replacement.   
stacklevelauto_session_trackingF)warningswarnDeprecationWarning
sentry_sdkHubcurrentscope_force_auto_session_trackingclientoptionsget)hubshould_trackclient_optionss      e/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/sessions.py is_auto_session_tracking_enabledr'      sv    
 MM	.	 {nn$$9999L/2zz++r%))*A5I    c              #     K   t        j                  dt        d       | t        j                  j
                  } t        j                         5  t        j                  dt               t        |       }ddd       r| j                  |       	 d |r| j                          yy# 1 sw Y   6xY w# |r| j                          w w xY ww)zgDEPRECATED: Use track_session instead
    Starts and stops a session automatically around a block.
    zeThis function is deprecated and will be removed in the next major release. Use track_session instead.r   r   Nignoresession_mode)r   r   r   r   r   r   catch_warningssimplefilterr'   start_sessionend_session)r#   r,   r$   s      r&   r   r   /   s      MM	%	 {nn$$		 	 	" =h(:;7<= |4OO = = OO s6   AC&B*5CB6 C*B3/C6CCc                 P    t        j                  dt        d       t        |       S )zR
    DEPRECATED: Utility function to find out if session tracking is enabled.
    r   r   r   )r   r   r   !_is_auto_session_tracking_enabled)r   s    r&   &is_auto_session_tracking_enabled_scoper3   J   s(     MM	.	 -U33r(   c                     | j                   }|0t        j                         j                  }|j	                  dd      }|S )zF
    Utility function to find out if session tracking is enabled.
    r   F)r   r   
get_clientr!   r"   )r   r$   r%   s      r&   r2   r2   [   sB     55L#..088%))*A5Ir(   c              #      K   t        j                  dt        d       t        | |      5  d ddd       y# 1 sw Y   yxY ww)zDEPRECATED: This function is a deprecated alias for track_session.
    Starts and stops a session automatically around a block.
    zdThis function is a deprecated alias for track_session and will be removed in the next major release.r   r   r+   N)r   r   r   track_session)r   r,   s     r&   auto_session_tracking_scoper8   i   s@      MMn 
u<	8   s   *A:	AAAc              #      K   t        |       }|r| j                  |       	 d |r| j                          yy# |r| j                          w w xY ww)z
    Start a new session in the provided scope, assuming session tracking is enabled.
    This is a no-op context manager if session tracking is not enabled.
    r+   N)r2   r/   r0   )r   r,   r$   s      r&   r7   r7   z   sV      5U;L6  < s    A; AAA)exitedabnormalcrashedd   c                 L    t        |      t        | j                               dS )N)attrs
aggregates)dictlistvalues)aggregate_statesr?   s     r&   make_aggregate_enveloperE      s     %[5E5L5L5N0OPPr(   c                   4    e Zd Z	 ddZd Zd Zd Zd Zd Zy)	SessionFlusherc                     || _         || _        g | _        i | _        d | _        t               | _        t               | _        d | _        t               | _
        y N)capture_funcflush_intervalpending_sessionspending_aggregates_threadr   _thread_lock_aggregate_lock_thread_for_pidr   #_SessionFlusher__shutdown_requested)selfrJ   rK   s      r&   __init__zSessionFlusher.__init__   sQ     ), ""$ F#v#$)G!r(   c                 l   | j                   }g | _         | j                  5  | j                  }i | _        d d d        t               }|D ]J  }t	        |j
                        t        k(  r| j                  |       t               }|j                  |       L j                         D ]W  \  }}t	        |j
                        t        k(  r| j                  |       t               }|j                  t        ||             Y t	        |j
                        dkD  r| j                  |       y y # 1 sw Y   xY w)Nr   )rL   rP   rM   r   lenitemsMAX_ENVELOPE_ITEMSrJ   add_sessionadd_sessionsrE   )rS   rL   rM   envelopesessionr?   statess          r&   flushzSessionFlusher.flush   s   00 "!! 	)!%!8!8&(D#	) :' 	*G8>>"&88!!(+#:  )	* 0557 	JME68>>"&88!!(+#:!!"9&%"HI	J x~~"h' #'	) 	)s   D**D3c                      j                   t        j                         k(  r j                  y j                  5   j                   t        j                         k(  r j                  
	 ddd       y fd}t        |      }d|_        	 |j                          | _        t        j                          _         ddd       y# t        $ r%  j                  j                          Y ddd       yw xY w# 1 sw Y   yxY w)a%  
        Check that we have an active thread to run in, or create one if not.

        Note that this might fail (e.g. in Python 3.12 it's not possible to
        spawn new threads at interpreter shutdown). In that case self._running
        will be False after running this function.
        Nc                      d} | r:j                   j                  j                         } j                          | r9y y )NT)rR   waitrK   r^   )runningrS   s    r&   rN   z/SessionFlusher._ensure_running.<locals>._thread   s8    "&";";"@"@ATAT"UUGJJL r(   )targetT)rQ   osgetpidrN   rO   r   daemonstartRuntimeErrorrR   set)rS   rN   threads   `  r&   _ensure_runningzSessionFlusher._ensure_running   s     299;.4<<3K 	/##ryy{2t||7O	/ 	/! 7+F FM "DL#%99;D -	/0     ))--/'	/ 	/	/0 s5   /C74C7C C7#C4)C73C44C77D c                 z   | j                   5  |j                  d      }t        t        |j	                                     }|j
                  }| j                  j                  |i       }|j                  |i       }d|vrt        |j
                        |d<   |j                  dk(  r|j                  dd      dz   |d<   nh|j                  dk(  r|j                  dd      dz   |d<   n@|j                  dkD  r|j                  dd      dz   |d<   n|j                  d	d      dz   |d	<   d d d        y # 1 sw Y   y xY w)
NF)with_user_infostartedr<   r      r;   erroredr:   )rP   get_json_attrstuplesortedrW   truncated_startedrM   
setdefaultr	   statusr"   errors)rS   r\   r?   primary_keysecondary_keyr]   states          r&   add_aggregate_sessionz$SessionFlusher.add_aggregate_session   s)    !! 	=**%*@Eu{{} 56K#55M,,77RHF%%mR8E%#3G4M4M#Ni  ~~*#(99Y#:Q#>i :-$)IIj!$<q$@j!!##(99Y#:Q#>i "'))Ha"81"<h%	= 	= 	=s   DD11D:c                     |j                   dk(  r| j                  |       n)| j                  j                  |j	                                | j                          y )Nrequest)r,   r{   rL   appendto_jsonrk   )rS   r\   s     r&   rY   zSessionFlusher.add_session  sG     9,&&w/!!(():;r(   c                 8    | j                   j                          y rI   )rR   ri   )rS   s    r&   killzSessionFlusher.kill  s    !!%%'r(   N)<   )	__name__
__module____qualname__rT   r^   rk   r{   rY   r    r(   r&   rG   rG      s&     , (6#J=>(r(   rG   rI   )Napplication)r   )"rd   r   	threadingr   r   r   
contextlibr   r   sentry_sdk.enveloper   sentry_sdk.sessionr   sentry_sdk.utilsr	   typingr
   r   r   r   r   r   r   r   r'   r   r3   r2   r8   r7   TERMINAL_SESSION_STATESrX   rE   rG   r   r(   r&   <module>r      s    	  ) ) %  ( & -   0  44"       " <  Q
|( |(r(   