
    `iӗ                        U d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZmZ d dlZd dlZd dlmZmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d d
l*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZL erd dl
mMZM d dl
mNZN d dl
mOZO d dl
mPZP d dl
mQZQ d dl
mRZR d dl
mSZS d dlTmUZUmVZVmWZWmXZXmYZYmZZZ d dl:m[Z[ d d l\m]Z] d d!l^m_Z_ d d"l`maZa d d#lbmcZc d d$l0mdZdmeZe d d%lfmgZg d dlmZ d d&lmhZh  eSd'e[(          Zi ed)          Zjd*e8d+e8d,gd-Zkd.eld/<   dDd6Zm	 enZon# ep$ r eqZoY nw xY w G d7 d8          Zr G d9 d:er          Zs G d; d<er          Ztd d=l
mZ er( G d> d?e9eeueMf                   Zv G d@ dAe9et          ZwdS  dB             Zv dC             ZwdS )E    N)Mapping)datetimetimezone)import_module)TYPE_CHECKINGListDictcastoverload)PY37check_uwsgi_thread_support)MetricsBatcher)SpanBatcher)AnnotatedValue
ContextVarcapture_internal_exceptionscurrent_stacktraceenv_to_boolformat_timestampget_sdk_nameget_type_nameget_default_releasehandle_in_app	is_geventloggerget_before_send_logget_before_send_metrichas_logs_enabledhas_metrics_enabled)	serialize)trace)has_span_streaming_enabled)BaseHttpTransportmake_transport)SPANDATADEFAULT_MAX_VALUE_LENGTHDEFAULT_OPTIONSINSTRUMENTERVERSIONClientConstructor)_DEFAULT_INTEGRATIONSsetup_integrations)DedupeIntegration)SessionFlusher)Envelope)setup_continuous_profiler)has_profiling_enabledProfilesetup_profiler)EventScrubber)Monitor)Any)Callable)Optional)Sequence)Type)Union)TypeVar)EventHintSDKInfoLogMetricEventDataCategory)Integration)Scope)Session)SpotlightClient)StreamedSpan)	TransportItem
LogBatcher)DsnI)boundclient_init_debugzsentry.pythonzpypi:sentry-sdk)nameversion)rP   rQ   packagesr?   SDK_INFOargsOptional[str]kwargsr6   returnDict[str, Any]c                     | r=t          | d         t          t          f          s| d         | d         }| dd          } nd }t          |           dk    rt	          d          t          t                    }t          | i |}||                    d          ||d<   |                                D ] \  }}||vrt	          d|          |||<   !|d         "t          j
                            d          |d<   |d         t                      |d<   |d         $t          j
                            d	          pd
|d<   |d         3t          t          j
                            d          d          pd|d<   |d         +t          t          d          rt          j                    |d<   |d         t           j        |d<   |d         ,	 t          j                    }n# t&          $ r d }Y nw xY w||d<   |d         du r|d         d|d<   |d         #t)          |d         dn|d                   |d<   |d         r4t          |d         t*                    st-          j        d           d |d<   |d         3t          t          j
                            d          d          pd|d<   |d         t1          j        dt4          d            |S )!Nr      z+Only single positional argument is expecteddsnzUnknown option 
SENTRY_DSNreleaseenvironmentSENTRY_ENVIRONMENT
productiondebugSENTRY_DEBUGT)strictFserver_namegethostnameinstrumenterproject_rootenable_tracingtraces_sample_rate      ?event_scrubbersend_default_pii)rl   socket_optionszxIgnoring socket_options because of unexpected format. See urllib3.HTTPConnection.socket_options for the expected format.
keep_aliveSENTRY_KEEP_ALIVEzVThe `enable_tracing` parameter is deprecated. Please use `traces_sample_rate` instead.   )
stacklevel)
isinstancebytesstrlen	TypeErrordictr'   getitemsosenvironr   r   hasattrsocketre   r(   SENTRYgetcwd	Exceptionr4   listr   warningwarningswarnDeprecationWarning)rT   rV   r[   rvoptionskeyvaluerg   s           e/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sentry_sdk/client.py_get_optionsr   Z   s4    DGeS\22 d1go#AwABBx
4yy1}}EFFF	o		BD#F##G
7;;u--5mmoo  
Ub==)3389993	%yJNN<005		)}+--9	- JNN+?@@PL=	'{!"*.."@"@NNNWRW7	- WV]%C%C ".00=	.!)0>	.!	 9;;LL 	  	  	 LLL	  *>	
t##+?(@(H#& 	
#,./7R@R=S 
  
  
 

 $Jr2B/CT$J$J $ G	
 	
 	
  $	,
':;;DIIIRU 	< 

'd	
 	
 	
 	
 Is   G& &G54G5c                      e Zd ZU dZdZded<   d0d1dZd2dZd3dZe	d4d            Z
e	d5d            ZdefdZdefdZd6dZd7dZd8dZd9dZd3d Zered!edd"fd#            Zed:d&            Z	 	 	 	 d;d(Zd3d)Zd3d*Zd<d+Zd=d/ZdS )>
BaseClientzp
    .. versionadded:: 2.0.0

    The basic definition of a client that is used for sending data to Sentry.
    NzOptional[SpotlightClient]	spotlightr   Optional[Dict[str, Any]]rW   c                 z    ||nt           | _        d | _        d | _        d | _        d | _        d | _        i | _        d S N)r'   r   	transportmonitorlog_batchermetrics_batcherspan_batcherintegrations)selfr   s     r   __init__zBaseClient.__init__   sK    *GG 	 15,037;?5968    rT   r6   rV   c                 
    di iS Nr    r   rT   rV   s      r   __getstate__zBaseClient.__getstate__   s    2r   c                     d S r   r   r   s      r   __setstate__zBaseClient.__setstate__       r   rU   c                     d S r   r   r   s    r   r[   zBaseClient.dsn       tr   Optional[Dsn]c                     d S r   r   r   s    r   
parsed_dsnzBaseClient.parsed_dsn   r   r   c                     dS )NFr   r   s    r   should_send_default_piiz"BaseClient.should_send_default_pii   s    ur   c                     dS )u
        .. versionadded:: 2.0.0

        Returns whether the client is active (able to send data to Sentry)
        Fr   r   s    r   	is_activezBaseClient.is_active   s	     ur   c                     d S r   r   r   s      r   capture_eventzBaseClient.capture_event       tr   logr@   scoperD   c                     d S r   r   r   r   r   s      r   _capture_logzBaseClient._capture_log   r   r   metricrA   c                     d S r   r   r   r   r   s      r   _capture_metriczBaseClient._capture_metric   r   r   spanrG   c                     d S r   r   r   r   r   s      r   _capture_spanzBaseClient._capture_span   r   r   c                     d S r   r   r   s      r   capture_sessionzBaseClient.capture_session   r   r   name_or_classOptional[Integration]c                     d S r   r   r   r   s     r   get_integrationzBaseClient.get_integration       RURUr   type[I]Optional[I]c                     d S r   r   r   s     r   r   zBaseClient.get_integration       NQcr   Union[str, type[Integration]]c                     d S r   r   r   s     r   r   zBaseClient.get_integration   s	     tr   c                     d S r   r   r   s      r   closezBaseClient.close   r   r   c                     d S r   r   r   s      r   flushzBaseClient.flush   r   r   c                     | S r   r   r   s    r   	__enter__zBaseClient.__enter__       r   exc_type	exc_valuetbc                     d S r   r   r   r   r   r   s       r   __exit__zBaseClient.__exit__  r   r   r   )r   r   rW   N)rT   r6   rV   r6   rW   r6   rT   r6   rV   r6   rW   NrW   rU   rW   r   )rT   r6   rV   r6   rW   rU   )r   r@   r   rD   rW   N)r   rA   r   rD   rW   N)r   rG   r   rD   rW   Nr   r   rW   r   )r   r   rW   r   )rW   r   r   r6   r   r6   r   r6   rW   N)__name__
__module____qualname____doc__r   __annotations__r   r   r   propertyr[   r   boolr   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r   r   r   r      s          .2I*111
9 
9 
9 
9 
9          X    X    4                     R	UU9PUUU 
U	QQQ 
Q<	    
              r   r   c                       e Zd ZdZdS )NonRecordingClientz
    .. versionadded:: 2.0.0

    A client that does not send any events to Sentry. This is used as a fallback when the Sentry SDK is not yet initialized.
    N)r   r   r   r   r   r   r   r   r     s          	Dr   r   c            	           e Zd ZdZdG fdZdHdZdId
Z	 	 	 	 dJdZdKdZde	fdZ
de	fdZedLd            ZedMd            Z	 	 	 	 	 	 	 	 dNdZddddde	fdZ	 dOddddddde	fdZddddde	fdZ	 	 	 	 	 	 dPd"Z	 	 dQ	 	 	 	 	 	 	 dRd$Zd%d&d'edd(ddfd)ZdSd,ZdTd/ZdUd2Z	 	 	 	 dVd3Zered4edd5fd6            ZedWd9            Z	 	 	 	 dXd;Z	 	 dQ	 	 	 	 	 dYd@Z	 	 dQ	 	 	 	 	 dYdAZdZdBZ d[dFZ! xZ"S )\_ClientaI  
    The client is internally responsible for capturing the events and
    forwarding them to sentry through the configured transport.  It takes
    the client options as keyword arguments and optionally the DSN as first
    argument.

    Alias of :py:class:`sentry_sdk.Client`. (Was created for better intelisense support)
    rT   r6   rV   rW   Nc                     t          t          |                               t          |i |           |                                  d S )Nr   )superr   r   get_options
_init_impl)r   rT   rV   	__class__s      r   r   z_Client.__init__  sG    gt%%k4.J6.J.J%KKKr   c                     d| j         iS r   r   r   s    r   r   z_Client.__getstate__  s    4<((r   statec                 H    |d         | _         |                                  d S r   )r   r   )r   r   s     r   r   z_Client.__setstate__"  s$    Y'r   functions_to_traceSequence[Dict[str, str]]c                 ^   |D ]}d}|d         }|                     dd          \  }}	 t          |          }t          ||          }t          ||t	          |                     t          j        d|           z# t          $ r 	 |                     dd          \  }}t          |          }t          ||          }	t          |	|          }t          |	j	        |                   }
t	          |          }|
t          t          fv rt          |          }t          |	||           t          |||	           t          j        d|           n-# t          $ r }t          j        d||           Y d}~nd}~ww xY wY }t          $ r!}t          j        d||           Y d}~d}~ww xY wdS )z
        Instruments the functions given in the list `functions_to_trace` with the `@sentry_sdk.tracing.trace` decorator.
        Nqualified_name.rZ   zEnabled tracing for %szWCan not enable tracing for '%s'. (%s) Please check your `functions_to_trace` parameter.)rsplitr   getattrsetattrr!   r   ra   module_not_found_errortype__dict__staticmethodclassmethodr   r   )r   r   function
class_namefunction_qualnamemodule_namefunction_name
module_objfunction_obj	class_objfunction_typetraced_functiones                r   _setup_instrumentationz_Client._setup_instrumentation&  s#    + ,	 ,	HJ ()9 :):)A)A#q)I)I&K' +;77
&z=AA
M53F3FGGG57HIIII)    /:.@.@a.H.H+K!.{!;!;J '
J ? ?I#*9m#D#DL$();M)J$K$KM&+L&9&9O${(CCC*6*G*GI}oFFFJ
I>>>L!9;LMMMM    Nq)           m%       O,	 ,	sI   AA==
F*CEF*
E:E50F*5E::F* 	F*	F%%F*c                     t                               d          }d/ fd}	 	 d0dt          dd	d
ddt          dd f
 fd}	 t                                j        d                    t           j                   _        d  _         j        r& j        d         rt           j                   _        ddl
m}  | j                   _         j        8 j        d         s+d }d j        d<   | j        d<   | j        d<   | j        d<   t          |           _        d  _        t!           j                  rddlm}  |||           _        d  _        t)           j                  rt+          ||           _        d  _        t/           j                  rt1          ||           _        d} j        d         |vr"t3          d                    |                     j        d                             d d          rEt7          j        d!           t:          j         j        d"<   d#t>          vrt?          j         d#           tC           j        d$          j        d%          j        d&          j        d'          j        (           _"        tG          tI           j"        %                                                    }|tL          d)<   t7          j        d*|           tO           j                  rB	 tQ           j                   nv# tR          $ r}	t7          j        d+|	           Y d }	~	nRd }	~	ww xY w	 tU           j        tL          |,           n,# tR          $ r}	t7          j        d-|	           Y d }	~	nd }	~	ww xY wt                               |           n# t                               |           w xY w +                     j                            d.g                       j        sC j        s< j        s5 j        s.tO           j                  stY           j        tZ                    rt]                       d S d S )1NFenveloper/   rW   c                     j         j                             |            j        j                            |            d S d S r   )r   capture_enveloper   )r  r   s    r   _capture_envelopez-_Client._init_impl.<locals>._capture_envelope]  sM    ~)//999~)//99999 *)r   rZ   reasondata_categoryrB   itemzOptional[Item]quantityc                 V    j          j                             | |||           d S d S )N)r  r  r  r  )r   record_lost_event)r  r  r  r  r   s       r   _record_lost_eventz._Client._init_impl.<locals>._record_lost_eventc  sJ     ~)00!"/%	 1      *)r   ra   enable_backpressure_handlingr   )setup_spotlightr[   c                      dS )Nrj   r   )_args_kwargss     r   <lambda>z$_Client._init_impl.<locals>.<lambda>  s    s r   Trl   error_samplertraces_samplerprofiles_sampler)capture_funcrJ   )r   record_lost_func)alwaysneversmallmediummax_request_body_sizez:Invalid value for max_request_body_size. Must be one of {}_experimentsotel_powered_performancezA[OTel] Enabling experimental OTel-powered performance monitoring.rf   zJsentry_sdk.integrations.opentelemetry.integration.OpenTelemetryIntegrationr   default_integrationsauto_enabling_integrationsdisabled_integrations)with_defaultswith_auto_enabling_integrationsr+  r   rP   zSetting SDK name to '%s'zCan not set up profiler. (%s))sdk_infor   z(Can not set up continuous profiler. (%s)r   )r  r/   rW   N)NrZ   )/_client_init_debugrx   rt   intsetr   r$   r   r   r5   sentry_sdk.spotlightr  r   r.   session_flusherr   r   sentry_sdk._log_batcherrK   r   r   r   r   r"   r   
ValueErrorformatr   ra   r(   OTELr+   appendr,   r   r   r   keysrS   r1   r3   r   r0   r
  rr   r#   r   )
r   	old_debugr  r  r  
sample_allrK   r&  sdk_namer	  s
   `         r   r   z_Client._init_implZ  s;   &**511		: 	: 	: 	: 	: 	: &*		 		.	 #	 		
 	 	 	 	 	 	b	.""4<#8999+DL99DNDL~ ;< >? ;#*4>#:#:DL =<<<<<,_T\::DN~)$,u2E)::
37/00:_-1;-.3=/0#1?P#Q#Q#QD #D-- >>>>>>#-:!2%7$ $ $ 
 $(D "4<00 '5!2%7( ( ($
 !%D)$,77 $/!2%7% % %!
 %K!|34<QQQ PWW-    |N+//0JERR W   0</@^,`01 1 *0d   !3^,"l+AB0401 '+l3J&K! ! !D $D):)?)?)A)A$B$BCCH'HVL3X>>>$T\22 PE"4<0000  E E EL!@!DDDDDDDDEP-!)%6    
 ! P P PL!KQOOOOOOOOP ""9----""9----##DL$4$45I2$N$NOOO L
	)
	) #
	)  	
	)
 %T\22
	) $.*;<<
	) '(((((
	) 
	)sa    J?N&  L N& 
L>L94N& 9L>>N& M N& 
N)N>N& NN& &Oc                     dS )r   Tr   r   s    r   r   z_Client.is_active  s	     tr   c                 :    | j                             d          pdS )z
        .. versionadded:: 2.0.0

        Returns whether the client should send default PII (Personally Identifiable Information) data to Sentry.
        rl   F)r   rx   r   s    r   r   z_Client.should_send_default_pii  s      | 233<u<r   rU   c                     | j         d         S )z%Returns the configured DSN as string.r[   r   r   s    r   r[   z_Client.dsn  s     |E""r   r   c                 ,    | j         r| j         j        ndS )z)Returns the configured parsed DSN object.N)r   r   r   s    r   r   z_Client.parsed_dsn  s     -1NDt~((Dr   eventr=   hintr>   r   Optional[Scope]Optional[Event]c                 P   d }d }|                     d          !t          j        t          j                  |d<   |                     d          dk    }|t          t          t          t          t          t          f                  |                     dg                               }|                    ||| j                  }|K| j        rB| j                            d|rdnd           |r | j                            dd|d	z   
           d S |}|t          t          t          t          t          t          f                  |                     dg                               z
  }	|                    dd          }
|rM| j        F|	dk    r| j                            dd|	
           |
dk    r| j                            dd|

           |
|	z   }|dk    r||z   }|j        dk    rZ|                     di           }t#          |t$                    s|                     dg           ng }t          |          |j        z   }|s| j        d         rd|vrd|vr|d|vrxt'                      5  dt)          | j                             dd          | j                             dt*                              dddgi|d<   d d d            n# 1 swxY w Y   dD ]S}|                     |          <| j        |         /t          | j        |                                                   ||<   T|                     d          Bt/          t0                    }t3          | j                                                  |d<   ||d<   |                     d          d|d<   t9          || j        d         | j        d          | j        d!                   }|$| j        d"         }|r|                    |           ||j        r|                     dg           }t#          |t>                    r|D ]}|                     d#d           }|                     d$i           }|rQ||j        v rHt@          j!        |v r:t%          |t@          j!                 d%|j        |         i          |t@          j!        <   |)t%          |                     dg           d%|i          |d<   |+t%          |                     ddg i          d%|i          |d<   |wt          d&tE          t          d'|          | j                             d(          | j                             d          | j                             d)          *                    }| j        d+         }|||                     d          dk    rd }t'                      5   |||pi           }d d d            n# 1 swxY w Y   |_tG          j$        d,           | j        r| j                            d+d           |                     d          rtK          j&                     |}| j        d-         }|R|O|                     d          dk    r5d }t          t          t          t          t          t          f                  |                     dg                               }t'                      5   |||pi           }d d d            n# 1 swxY w Y   |XtG          j$        d.           | j        r<| j                            d+d/           | j                            d+d|d	z   0           nP|t          |                     dg                     z
  }	|	dk    r$| j        | j                            d+d|	0           |}|S )1N	timestampr   transactionspansevent_processorerrorr  r   rZ   )r  r  _dropped_spansr   buffer_overflowbreadcrumbsvaluesattach_stacktrace	exception
stacktracethreadsinclude_local_variablesTmax_value_length)rT  rU  F)rR  crashedcurrent)r]   r^   rd   distsdkr   platformpythonin_app_excludein_app_includerg   rk   span_iddataru   r=   rX   r&  custom_repr)r&  rU  r`  before_sendzbefore send dropped eventbefore_send_transactionz%before send transaction dropped event)r  r  )r  r  r  )'rx   r   nowr   utcru   r
   r   r	   rt   objectapply_to_eventr   r   r  pop_n_breadcrumbs_truncatedrr   r   r   r   r&   striprw   rS   sortedr   r9  r   scrub_event_gen_ai_original_message_countr   r%   GEN_AI_REQUEST_MESSAGESr    r   infor-   reset_last_seen)r   rA  rB  r   previous_total_spansprevious_total_breadcrumbsis_transactionspans_beforeevent_spans_deltaspan_recorder_dropped_spansdropped_spansrN  rO  r   r.  rk   rH  r   r^  	span_datara  	new_eventrb  s                           r   _prepare_eventz_Client._prepare_event  s'	    156:"99[!!)!)hl!;!;E+6**m;tDc6k):$;UYYwPR=S=STTUUL))%t|DDF ~> 
N44)8F'S}}G 5    & 88-*0%1A%5 9   
 tE&T$sF{+,eii.D.DEE* * K 05yy9I1/M/M' 
$."<??N44)+ 5    /22N44)&,!< 5    "={!JMq  '3m'C$-11#iir:: &k>BBKOOHb111  KK%"@@ +
 	01	 5((E))&&,..  *<8<8H8H$=t9" 9" 261A1A$68P2" 2"	+ + + (-'+ $i               $ C 	< 	<Cyy~~%$,s*;*G c!23399;;c
99U#H~~H'-d.?.D.D.F.F'G'GH^$#E%L99Z  ( (E*L)*L)*L(	
 
 !\*:;N 2**5111!E=BYYwPR=S=SE%&& !  D"hhy$77G $ 4 4I#u'KKK$<	IIFT%h&FG"E$H$QRG G	("BC  ++		'2&&0D(E E'N &1#1		-(B8823$ $E-  )511*.,*:*:;R*S*S%)\%5%56H%I%I $ 0 0 ? ?	   E l=1#!		&!!]22I,.. ; ;'Ktzr::	; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 7888> N44%W 5    99[)) 8%5777E"&,/H"I#/!		&!!]22ItDc6k):$;UYYwPR=S=STTUUL,.. G G33E4:2FF	G G G G G G G G G G G G G G G CDDD> N44,M 5    N44,&,!-!1 5    +Sw1K1K-L-LL??t~'AN44,F[ 5    Es7   .AKKK;WWW[//[36[3c                 &   |                     d          }|dS |d         }t          |d                   }|d         j        d|}| j        d         D ]:}t	          |t
                    r||k    s||k    r dS 't          ||          r dS ;dS )Nexc_infoFr   r   ignore_errorsT)rx   r   r   r   rr   rt   
issubclass)r   rA  rB  r|  rJ  error_type_nameerror_full_nameignored_errors           r   _is_ignored_errorz_Client._is_ignored_error  s    88J''5'44%-a[%;%;%;__M!\/: 	  	 M ---   O33}7W7W44 8X e]33  44  ur   c                     |                     d          dk    }|rdS |d uo|j         }|rdS |                     ||          }|rdS dS )Nr   rG  TF)rx   _should_capturer  )r   rA  rB  r   rr  ignoring_prevents_recursionignored_by_config_options          r   r  z_Client._should_capture  sr     6**m; 	4&+4&7&U@U<U#& 	5#'#9#9%#F#F # 	5tr   c                 N   | j                             dd           }t          |          r3t                      5   |||          }d d d            n# 1 swxY w Y   n| j         d         }	 |dk     ot	          j                    |k    }nt# t
          $ r t          j        d           d}Y nRt          $ rF t          |          rdnd\  }}t          j        d|d	|d
t          |          d           d}Y nw xY w|r%| j
        r| j
                            dd           dS dS )Nr  sample_raterj   zMThe provided error_sampler raised an error. Defaulting to sampling the event.F)r  returned)r  containszThe provided  z an invalid value of zJ. The value should be a float or a bool. Defaulting to sampling the event.rJ  rK  T)r   rx   callabler   random	NameErrorr   r   rv   reprr   r  )r   rA  rB  r  r  not_in_sample_rate	parameterverbs           r   _should_sample_errorz_Client._should_sample_error  s   
 (($??M"" 	6,.. 9 9+mE4889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ,}5K	'!,s!2!Uv}+7U 	' 	' 	'N_   "' 	' 	' 	' M**1--0 It
 NN99dddD$5$5$5$57   "'	'  	~ W00g0VVV5ts*   AAA,B
 
 C;,AC;:C;sessionrE   c                    d}d}d }|                     d          pi                      d          }|rjd}|D ]e}t          |t                    r	|j        pi }|                     d          }t          |t                    r|                     d          du rd} nf|                     d          }	|j        y|                     d          pi                      d	          }
t          |
t                    r|
ni }|                                D ]!\  }}|                                d
k    r|} n"|	                    |rdnd |	||j
        |p|z              d S )NFrQ  rO  T	mechanismhandleduserrequestheadersz
user-agentrV  )statusr  
user_agenterrors)rx   rr   r   r   r   r  rw   ry   lowerupdater  )r   r  rA  rV  erroredr  
exceptionsrJ  r  r  r  headers_dictkvs                 r   _update_session_from_eventz"_Client._update_session_from_event&  s   
 
ii,,277AA
 	G#  e^44 .!K-2E!IIk22	i11 immI6N6NRW6W6W"GEyy  %yy++1r66yAAG&0$&?&?G77RL$**,,  17799,,!"JE - 	 '199T!>W%78	 	 	
 	
 	
 	
 	
r   Optional[Hint]c                 D   t          |pd          }|                     |||          sdS |                    dd          }|                    d          }|t	          j                    j        x|d<   }|                     |||          }|dS |r|j        nd}|r| 	                    ||           |                    d          dk    }|                    d          dk    }	|s|	s| 
                    ||          sdS |                    d          }
|                    d	i                               d
          pi }|                    di           }|d         t          t          j        t          j                            d}|r||d
<   t!          |          }|rYt#          |t$                    r.|                    |                    || j                             |                    |           n-|	r|                    |           n|                    |           |
pdD ])}|                    |                                           *d}| j        r| j                            |           |}| j        | j                            |           |}|S )a  Captures an event.

        :param event: A ready-made event that can be directly sent to Sentry.

        :param hint: Contains metadata about the event that can be read from `before_send`, such as the original exception object or a HTTP request object.

        :param scope: An optional :py:class:`sentry_sdk.Scope` to apply to events.

        :returns: An event ID. May be `None` if there is no DSN set or of if the SDK decided to discard the event for other reasons. In such situations setting `debug=True` on `init()` may help.
        r   Nprofileevent_idr   rG  check_inattachmentscontextsr!   dynamic_sampling_context)r  sent_at)r  )rw   r  rg  rx   uuiduuid4hexrz  _sessionr  r  r   r   rc  r   rd  r/   rr   r2   add_profileto_jsonr   add_transactionadd_checkin	add_eventadd_itemto_envelope_itemr   r  r   )r   rA  rB  r   r  r  	event_optr  rr  
is_checkinr  trace_contextr  r  r  
attachmentreturn_values                    r   r   z_Client.capture_eventK  s     DJB''##E477 	4))It,,99Z((+/:<<+;;E*''tU;;	4 %*3%..t 	<++GU;;;"v..-?]]6**j8
 		 --eT::	
 4hh}--!j"5599'BBHb#0#4#45OQS#T#T  "*-'X\(B(BCC(
 (

 $ 	87GGG,,, 	*'7++ O$$W__Y%M%MNNN$$Y//// 	*  ++++y)))%+ 	= 	=Jj99;;<<<<> 	$N++H555#L>%N++H555#Lr   	telemetryz*Optional[Union[Log, Metric, StreamedSpan]]tyrD   c                 R   |d S |                     |           d }|dk    rt          | j                  }n|dk    rt          | j                  }| ||i           }|d S d }|dk    r| j        }n|dk    r| j        }n|dk    r| j        }||                    |           d S d S )Nr   r   r   )apply_to_telemetryr   r   r   r   r   r   add)r   r  r  r   ra  batchers         r   _capture_telemetryz_Client._capture_telemetry  s     F  +++;;-dl;;KK8^^0>>K"#Ir22IF;;&GG8^^*GG6\\'GKK	""""" r   r   Optional[Log]c                 4    |                      |d|           d S )Nr   r  r   s      r   r   z_Client._capture_log  s     UE22222r   r   Optional[Metric]c                 4    |                      |d|           d S )Nr   r  r   s      r   r   z_Client._capture_metric  s     %88888r   r   Optional[StreamedSpan]c                 4    |                      |d|           d S )Nr   r  r   s      r   r   z_Client._capture_span  s     fe44444r   c                 t    |j         st          j        d           d S | j                            |           d S )Nz3Discarded session update because of missing release)r]   r   rn  r3  add_session)r   r  s     r   r   z_Client.capture_session  sB      	6KMNNNNN ,,W55555r   r   r   c                     d S r   r   r   s     r   r   z_Client.get_integration  r   r   r   r   c                     d S r   r   r   s     r   r   z_Client.get_integration  r   r   Union[str, Type[Integration]]c                     t          |t                    r|}n|j        |j        }nt          d          | j                            |          S )zReturns the integration for this client by name or class.
        If the client does not have that integration then `None` is returned.
        NzIntegration has no name)rr   rt   
identifierr5  r   rx   )r   r   integration_names      r   r   z_Client.get_integration  s[     mS)) 	8,%1,76777 $$%5666r   timeoutOptional[float]callback&Optional[Callable[[int, float], None]]c                    | j         |                     ||           | j                                         | j        | j                                         | j        | j                                         | j        | j                                         | j        r| j                                         | j                                          d| _         dS dS )z
        Close the client and shut down the transport. Arguments have the same
        semantics as :py:meth:`Client.flush`.
        Nr  r  )r   r   r3  killr   r   r   r   r   r  r  s      r   r   z_Client.close  s     >%JJwJ::: %%'''+ %%'''#/$))+++ ,!&&(((| $!!###N!!!!DNNN &%r   c                 `   | j         || j        d         }| j                                         | j        | j                                         | j        | j                                         | j        | j                                         | j                             ||           dS dS )a#  
        Wait for the current events to be sent.

        :param timeout: Wait for at most `timeout` seconds. If no `timeout` is provided, the `shutdown_timeout` option value is used.

        :param callback: Is invoked with the number of pending events and the configured timeout.
        Nshutdown_timeoutr  )r   r   r3  r   r   r   r   r  s      r   r   z_Client.flush  s     >%,'9: &&(((+ &&(((#/$**,,, ,!'')))N  8 DDDDD &%r   c                     | S r   r   r   s    r   r   z_Client.__enter__  r   r   r   r   r   c                 .    |                                   d S r   )r   r   s       r   r   z_Client.__exit__  s    

r   r   )rW   r6   )r   r6   rW   N)r   r   rW   N)rW   Nr   r   )rA  r=   rB  r>   r   rC  rW   rD  r   )r  rE   rA  r=   rW   N)NN)rA  r=   rB  r  r   rC  rW   rU   )r   r  r   rD   rW   N)r   r  r   rD   rW   N)r   r  r   rD   rW   N)r  rE   rW   Nr   )r   r  rW   r   )r  r  r  r  rW   N)rW   r   r   )#r   r   r   r   r   r   r   r
  r   r   r   r   r   r[   r   rz  r  r  r  r  r   rt   r  r   r   r   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r     s(             ) ) ) )   2"<2	2 2 2 2hG) G) G) G)R4    = = = = = # # # X# E E E XENN N !	N
 
N N N N`w f     2 $(	   !	
 
   *-- - 
	- - - -^#
#
 #
 
	#
 #
 #
 #
P "&#'	RR R !	R
 
R R R Rh!#?!# !# 	!#
 
!# !# !# !#F3 3 3 39 9 9 95 5 5 566 
6 6 6 6  R	UU9PUUU 
U	QQQ 
Q767 
!7 7 7 7$ &*=A""" ;" 
	" " " "2 &*=AE"E ;E 
	E E E E0          r   r   )r   c                       e Zd ZdS )r   Nr   r   r   r   r   r   r   r   +          r   r   c                       e Zd ZdS )ClientNr  r   r   r   r  r  .  r  r   r  c                      t           S r   )r   r   r   r   r  r  7  s    < r   c                      t           S r   )r   r   r   r   r  r  8  s    g r   )rT   rU   rV   r6   rW   rX   )xrz   r  r  r}   collections.abcr   r   r   	importlibr   typingr   r   r	   r
   r   r   
sentry_sdksentry_sdk._compatr   r   sentry_sdk._metrics_batcherr   sentry_sdk._span_batcherr   sentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sentry_sdk.serializerr    sentry_sdk.tracingr!   sentry_sdk.tracing_utilsr"   sentry_sdk.transportr#   r$   sentry_sdk.constsr%   r&   r'   r(   r)   r*   sentry_sdk.integrationsr+   r,   sentry_sdk.integrations.deduper-   sentry_sdk.sessionsr.   sentry_sdk.enveloper/   'sentry_sdk.profiler.continuous_profilerr0   (sentry_sdk.profiler.transaction_profilerr1   r2   r3   sentry_sdk.scrubberr4   sentry_sdk.monitorr5   r6   r7   r8   r9   r:   r;   r<   sentry_sdk._typesr=   r>   r?   r@   rA   rB   rC   sentry_sdk.scoperD   sentry_sdk.sessionrE   r2  rF   sentry_sdk.tracesrG   rH   rI   r4  rK   rL   rM   r/  rS   r   r   ModuleNotFoundErrorr   r   ImportErrorr   r   r   rt   r   r  r   r   r   <module>r     s1   					    # # # # # # ' ' ' ' ' ' ' ' # # # # # # < < < < < < < < < < < < < <      ? ? ? ? ? ? ? ? 6 6 6 6 6 6 0 0 0 0 0 0                                   $ , + + + + + $ $ $ $ $ $ ? ? ? ? ? ? B B B B B B B B                N M M M M M M M < < < < < < . . . . . . ( ( ( ( ( ( M M M M M M         
 . - - - - - & & & & & & (VVVVVVVVVVVVVVVV333333&&&&&&******444444......44444444222222::::::$$$$$$;'''AZ 344  +@@A )   K K K K\)0 ) ) )()
T T T T T T T Tn	 	 	 	 	 	 	 	N N N N Nj N N Nb !           !    'c3h       "G      (''**Koo  FFFs   4E7 7F F