Ë
    õ�DjR€  ã                   ó&  — 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 d dlmZ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 d dlmZ d d	lmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl
m<Z< e<rhd dl
m=Z= d dl
m>Z> d dl
m?Z? d dl
m@Z@ d dl
mAZA d dl
mBZB d dl
mCZC d dl
mDZD d dlEmFZFmGZGmHZH d dl)mIZI d dlJmKZK d d lLmMZM d d!lNmOZO d d"l:mPZP d d#l mQZQ  eDd$eI¬%«      ZR ed&«      ZSd'e'd(e'd)œgd*œZTd+„ ZU	 eVZW G d,„ d-«      ZZ G d.„ d/eZ«      Z[ G d0„ d1eZ«      Z\d dl
m<Z< e<r G d2„ d3e(e?e]e=f   «      Z^ G d4„ d5e(e\«      Z_y d6„ «       Z^ d7„ «       Z_y# eX$ r eYZWY Œ`w xY w)8é    N)ÚMapping)ÚdatetimeÚtimezone)Úimport_module)ÚcastÚoverload)ÚPY37Úcheck_uwsgi_thread_support)Ú
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)Ú	serialize)Útrace)ÚBaseHttpTransportÚmake_transport)ÚDEFAULT_MAX_VALUE_LENGTHÚDEFAULT_OPTIONSÚINSTRUMENTERÚVERSIONÚClientConstructor)Ú_DEFAULT_INTEGRATIONSÚsetup_integrations)ÚSessionFlusher)ÚEnvelope)Úsetup_continuous_profiler)Úhas_profiling_enabledÚProfileÚsetup_profiler)ÚEventScrubber)ÚMonitor)Úsetup_spotlight)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚDict)ÚOptional)ÚSequence)ÚType)ÚUnion)ÚTypeVar)ÚEventÚHintÚSDKInfo)ÚIntegration©ÚMetricsAggregator)ÚScope)ÚSession)ÚSpotlightClient)Ú	TransportÚI)ÚboundÚclient_init_debugzsentry.pythonzpypi:sentry-sdk)ÚnameÚversion)r@   rA   Úpackagesc                  ó,  — | r)t        | d   t        t        f«      s| d   €| d   }| dd  } nd }t        | «      dkD  rt	        d«      ‚t        t        «      }t        | i |¤Ž}|�|j                  d«      €||d<   |j                  «       D ]  \  }}||vrt	        d|›�«      ‚|||<   Œ |d   €"t        j                  j                  d«      |d<   |d   €t        «       |d<   |d   €&t        j                  j                  d	«      xs d
|d<   |d   €.t        t        j                  j                  dd«      d¬«      |d<   |d   €'t        t        d«      rt        j                  «       |d<   |d   €t         j"                  |d<   |d   €	 t        j$                  «       }||d<   |d   du r
|d   €d|d<   |d   €t)        |d   €dn|d   ¬«      |d<   |d   r-t        |d   t*        «      st-        j.                  d«       d |d<   |S # t&        $ r d }Y Œuw xY w)Nr   é   z+Only single positional argument is expectedÚdsnzUnknown option Ú
SENTRY_DSNÚreleaseÚenvironmentÚSENTRY_ENVIRONMENTÚ
productionÚdebugÚSENTRY_DEBUGÚFalseT©ÚstrictÚserver_nameÚgethostnameÚinstrumenterÚproject_rootÚenable_tracingÚtraces_sample_rateç      ð?Úevent_scrubberÚsend_default_piiF)rX   Úsocket_optionszxIgnoring socket_options because of unexpected format. See urllib3.HTTPConnection.socket_options for the expected format.)Ú
isinstanceÚbytesÚstrÚlenÚ	TypeErrorÚdictr   ÚgetÚitemsÚosÚenvironr   r   ÚhasattrÚsocketrQ   r   ÚSENTRYÚgetcwdÚ	Exceptionr'   Úlistr   Úwarning)ÚargsÚkwargsrE   ÚrvÚoptionsÚkeyÚvaluerS   s           úUC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/client.pyÚ_get_optionsrr   O   sW  € á”˜D ™G¤e¬S \Ô2°d¸1±g°oØ�1‰gˆØ�A�Bˆx‰àˆä
ˆ4ƒy�1‚}ÜÐEÓFÐFä	ŒoÓ	€BÜ�DÐ#˜FÑ#€GØ
€˜7Ÿ;™; uÓ-Ð5Øˆ�‰à—m‘m“oò ‰
ˆˆUØ�b‰=Ý±3Ð8Ó9Ð9àˆˆ3Šð	ð 
ˆ%�yÐÜ—J‘J—N‘N <Ó0ˆˆ5‰	à	ˆ)�}ÐÜ+Ó-ˆˆ9‰à	ˆ-ÑÐ ÜŸJ™JŸN™NÐ+?Ó@ÒPÀLˆˆ=Ñà	ˆ'�{ÐÜ!¤"§*¡*§.¡.°ÀÓ"IÐRVÔWˆˆ7‰à	ˆ-ÑÐ ¤W¬V°]Ô%CÜ"×.Ñ.Ó0ˆˆ=Ñà	ˆ.ÑÐ!Ü)×0Ñ0ˆˆ>Ñà	ˆ.ÑÐ!ð	 ÜŸ9™9›;ˆLð *ˆˆ>Ñà	Ð
Ñ˜tÑ#¨Ð+?Ñ(@Ð(HØ#&ˆÐÑ à	Ð
ÑÐ#Ü,àÐ.Ñ/Ð7‘¸RÐ@RÑ=Sô 
ˆÐÑð 
Ð
Ò¤J¨rÐ2BÑ/CÄTÔ$JÜ�‰ð Gô	
ð  $ˆÐÑà€Iøô+ ò 	 ØŠLð	 ús   Æ	H ÈHÈHc                   ó’   — e Zd ZdZdZdd„Zd„ Zd„ Zed„ «       Z	d„ Z
d„ Zd	„ Zd
„ Zered„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
BaseClientzp
    .. versionadded:: 2.0.0

    The basic definition of a client that is used for sending data to Sentry.
    Nc                 óL   — |�|nt         | _        d | _        d | _        d | _        y ©N)r   rn   Ú	transportÚmonitorÚmetrics_aggregator)Úselfrn   s     rq   Ú__init__zBaseClient.__init__£   s-   € ð Ð*‰G´ð 	Œð ˆŒØˆŒØ"&ˆÕó    c                 ó
   — di iS ©Nrn   © ©rz   rk   rl   s      rq   Ú__getstate__zBaseClient.__getstate__­   s   € à˜2ˆÐr|   c                  ó   — y rv   r   r€   s      rq   Ú__setstate__zBaseClient.__setstate__±   s   € àr|   c                  ó   — y rv   r   ©rz   s    rq   rE   zBaseClient.dsnµ   s   € ð r|   c                  ó   — y)NFr   r…   s    rq   Úshould_send_default_piiz"BaseClient.should_send_default_piiº   s   € àr|   c                  ó   — y)úu
        .. versionadded:: 2.0.0

        Returns whether the client is active (able to send data to Sentry)
        Fr   r…   s    rq   Ú	is_activezBaseClient.is_active¾   s   € ð r|   c                  ó   — y rv   r   r€   s      rq   Úcapture_eventzBaseClient.capture_eventÇ   ó   € àr|   c                  ó   — y rv   r   r€   s      rq   Úcapture_sessionzBaseClient.capture_sessionË   r�   r|   c                  ó   — y rv   r   ©rz   Úname_or_classs     rq   Úget_integrationzBaseClient.get_integrationÑ   ó   € ð r|   c                  ó   — y rv   r   r‘   s     rq   r“   zBaseClient.get_integrationÖ   r”   r|   c                  ó   — y rv   r   r‘   s     rq   r“   zBaseClient.get_integrationÛ   r�   r|   c                  ó   — y rv   r   r€   s      rq   ÚclosezBaseClient.closeß   r�   r|   c                  ó   — y rv   r   r€   s      rq   ÚflushzBaseClient.flushã   r�   r|   c                 ó   — | S rv   r   r…   s    rq   Ú	__enter__zBaseClient.__enter__ç   ó   € àˆr|   c                  ó   — y rv   r   ©rz   Úexc_typeÚ	exc_valueÚtbs       rq   Ú__exit__zBaseClient.__exit__ë   r�   r|   rv   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	spotlightr{   r�   rƒ   ÚpropertyrE   r‡   rŠ   rŒ   r�   r*   r   r“   r˜   rš   rœ   r£   r   r|   rq   rt   rt   š   s‰   „ ñð €Ió'òòð ñó ðòòòòñ à	ñ	ó 
ð	ð 
ñ	ó 
ð	òòòòór|   rt   c                   ó   — e Zd ZdZy)Ú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|   rq   r«   r«   ð   s   „ ñð 	r|   r«   c                   óØ   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ed	„ «       Zd
„ Zd„ Z	 dd„Zd„ Zd„ Z	 	 dd„Zd„ Zered„ «       Zed„ «       Zd„ Z	 	 dd„Z	 	 dd„Zd„ Zd„ 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)
    c                 ó`   •— t         t        | �  t        |i |¤Ž¬«       | j	                  «        y )N©rn   )Úsuperr­   r{   Úget_optionsÚ
_init_impl)rz   rk   rl   Ú	__class__s      €rq   r{   z_Client.__init__  s)   ø€ äŒg�tÑ%¬k¸4Ð.JÀ6Ñ.JÐ%ÔKØ�‰Õr|   c                 ó   — d| j                   iS r~   r¯   r…   s    rq   r�   z_Client.__getstate__	  s   € à˜4Ÿ<™<Ð(Ð(r|   c                 ó8   — |d   | _         | j                  «        y r~   )rn   r²   )rz   Ústates     rq   rƒ   z_Client.__setstate__  s   € à˜YÑ'ˆŒØ�‰Õr|   c                 óê  — |D ]b  }d}|d   }|j                  dd«      \  }}	 t        |«      }t        ||«      }t        ||t	        |«      «       t        j                  d|«       Œd y# t        $ r× 	 |j                  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 �ŒEt        $ r"}t        j                  d||«       Y d}~�Œjd}~ww xY w)z‚
        Instruments the functions given in the list `functions_to_trace` with the `@sentry_sdk.tracing.trace` decorator.
        NÚqualified_nameú.rD   zEnabled tracing for %szWCan not enable tracing for '%s'. (%s) Please check your `functions_to_trace` parameter.)Úrsplitr   ÚgetattrÚsetattrr   r   rK   Úmodule_not_found_errorÚtypeÚ__dict__ÚstaticmethodÚclassmethodrh   rj   )rz   Úfunctions_to_traceÚfunctionÚ
class_nameÚfunction_qualnameÚmodule_nameÚfunction_nameÚ
module_objÚfunction_objÚ	class_objÚfunction_typeÚtraced_functionÚes                rq   Ú_setup_instrumentationz_Client._setup_instrumentation  sw  € ð
 +ò ,	ˆHØˆJØ (Ð)9Ñ :ÐØ):×)AÑ)AÀ#ÀqÓ)IÑ&ˆK˜ð'ô +¨;Ó7�
Ü& z°=ÓA�Ü˜
 M´5¸Ó3FÔGÜ—‘Ð5Ð7HÕIñ,	øô *ò ðð /:×.@Ñ.@ÀÀaÓ.HÑ+�K Ü!.¨{Ó!;�JÜ '¨
°JÓ ?�IÜ#*¨9°mÓ#D�LÜ$(¨×);Ñ);¸MÑ)JÓ$K�MÜ&+¨LÓ&9�Oà$¬´{Ð(CÑCÜ*6°Ó*G˜ä˜I }°oÔFÜ˜J¨
°IÔ>Ü—L‘LÐ!9Ð;LÕMøä ò Ü—N‘NØqØ)Ø÷ñ ûðýô ò Ü—‘ØmØ%Ø÷ò ûðúsI   £AA)Á)	E2Á3B$DÄE2Ä	EÄ!D=Ä8E2Ä=EÅE2ÅE2ÅE-Å-E2c           	      óŽ  ‡ — t         j                  d«      }ˆ fd„}	 t         j                  ‰ j                  d   «       t	        ‰ j                  «      ‰ _        d ‰ _        ‰ j
                  r)‰ j                  d   rt        ‰ j
                  «      ‰ _        t        |¬«      ‰ _	        d ‰ _
        ‰ j                  j                  di «      }|j                  dd«      rYt        «        xs t        }|r/d	d
lm}  ||t        |j                  dd«      «      ¬«      ‰ _
        nt!        j"                  d«       d}‰ j                  d   |vrt%        dj'                  |«      «      ‚‰ j                  d   j                  dd«      rOt!        j(                  d«       t*        j,                  ‰ j                  d<   dt.        vrt/        j0                  d«       t3        ‰ j                  d   ‰ j                  d   ‰ j                  d   ‰ j                  d   ¬«      ‰ _        ‰ j                  j                  d«      }|€Edt6        j8                  v r3t6        j8                  d   }t;        |d¬«      }|�|n|‰ j                  d<   ‰ j                  j                  d«      rt=        ‰ j                  «      ‰ _        tA        tC        ‰ j4                  jE                  «       «      «      }	|	tF        d<   t!        j(                  d|	«       tI        ‰ j                  «      r	 tK        ‰ j                  «       n	 tO        ‰ j                  tF        |¬ «       t         j                  |«       ‰ jQ                  ‰ j                  j                  d"g «      «       ‰ j                  s;‰ j                  s/tI        ‰ j                  «      stS        ‰ j
                  tT        «      rtW        «        y y # tL        $ r }
t!        j(                  d|
«       Y d }
~
Œ·d }
~
ww xY w# tL        $ r }
t!        j(                  d!|
«       Y d }
~
Œãd }
~
ww xY w# t         j                  |«       w xY w)#NFc                 óV   •— ‰j                   �‰j                   j                  | «       y y rv   )rw   Úcapture_envelope)Úenveloperz   s    €rq   Ú_capture_envelopez-_Client._init_impl.<locals>._capture_envelopeI  s$   ø€ à�~‰~Ð)Ø—‘×/Ñ/°Õ9ð *r|   rK   Úenable_backpressure_handling)Úcapture_funcÚ_experimentsÚenable_metricsTr   r7   Úmetric_code_locations)rÕ   Úenable_code_locationsz:Metrics not supported on Python 3.6 and lower with gevent.)ÚalwaysÚneverÚsmallÚmediumÚmax_request_body_sizez:Invalid value for max_request_body_size. Must be one of {}Úotel_powered_performancezA[OTel] Enabling experimental OTel-powered performance monitoring.rR   zJsentry_sdk.integrations.opentelemetry.integration.OpenTelemetryIntegrationÚintegrationsÚdefault_integrationsÚauto_enabling_integrationsÚdisabled_integrations)Úwith_defaultsÚwith_auto_enabling_integrationsrã   r¨   ÚSENTRY_SPOTLIGHTrN   r@   zSetting SDK name to '%s'zCan not set up profiler. (%s))Úsdk_inforÕ   z(Can not set up continuous profiler. (%s)rÂ   ),Ú_client_init_debugr`   Úsetrn   r   rw   rx   r(   r!   Úsession_flusherry   r   r	   Úsentry_sdk.metricsr8   Úboolr   ÚinfoÚ
ValueErrorÚformatrK   r   ÚOTELr   Úappendr    rà   rb   rc   r   r)   r¨   r   ri   ÚkeysÚSDK_INFOr$   r&   rh   r#   rÎ   rZ   r   r
   )rz   Ú	old_debugrÓ   ÚexperimentsÚmetrics_supportedr8   rÞ   Úspotlight_configÚspotlight_env_valueÚsdk_namerÍ   s   `          rq   r²   z_Client._init_implE  s˜  ø€ ä&×*Ñ*¨5Ó1ˆ	ô	:ð
^	.Ü×"Ñ" 4§<¡<°Ñ#8Ô9Ü+¨D¯L©LÓ9ˆDŒNàˆDŒLØ�~Š~Ø—<‘<Ð >Ò?Ü#*¨4¯>©>Ó#:�D”Lä#1Ð?PÔ#QˆDÔ à&*ˆDÔ#ØŸ,™,×*Ñ*¨>¸2Ó>ˆKØ�‰Ð/°Ô6ô )2« OÒ$;´tÐ!Ù$ÝDá.?Ø%6Ü.2Ø'ŸO™OÐ,CÀTÓJó/ô/�DÕ+ô —K‘KØTôð %KÐ!Ø�|‰|Ð3Ñ4Ð<QÑQÜ ØP×WÑWØ-óóð ð �|‰|˜NÑ+×/Ñ/Ð0JÈEÔRÜ—‘ØWôô 0<×/@Ñ/@�—‘˜^Ñ,à`Ü0ñ1ô *×0Ñ0Ødôô !3Ø—‘˜^Ñ,Ø"Ÿl™lÐ+AÑBØ04·±Ø0ñ1ð '+§l¡lÐ3JÑ&Kô!ˆDÔð  $Ÿ|™|×/Ñ/°Ó<ÐØÐ'Ð,>Ä"Ç*Á*Ñ,LÜ&(§j¡jÐ1CÑ&DÐ#Ü#.Ð/BÈ4Ô#PÐ ð (Ð3ñ %à,ð —‘˜[Ñ)ð �|‰|×Ñ Ô,Ü!0°·±Ó!>�”ä#¤D¨×):Ñ):×)?Ñ)?Ó)AÓ$BÓCˆHØ'ŒH�VÑÜ�L‰LÐ3°XÔ>ä$ T§\¡\Ô2ðEÜ" 4§<¡<Õ0ðPÜ-ØŸ™Ü!)Ø%6õô ×"Ñ" 9Ô-à×#Ñ# D§L¡L×$4Ñ$4Ð5IÈ2Ó$NÔOð �LŠLØ×&Ò&Ü$ T§\¡\Ô2Ü˜$Ÿ.™.Ô*;Ô<ô 'Õ(ð	 =øô+ !ò EÜ—L‘LÐ!@À!×DÑDûðEûô !ò PÜ—L‘LÐ!KÈQ×OÑOûðPûô ×"Ñ" 9Õ-úsZ   �K1P- ÌO Ì$P- Ì&P Ï	O>ÏO9Ï4P- Ï9O>Ï>P- Ð	P*Ð
P%Ð P- Ð%P*Ð*P- Ð-Qc                  ó   — y)r‰   Tr   r…   s    rq   rŠ   z_Client.is_activeº  s   € ð r|   c                 ó€   — | j                   j                  d«      }|€ | j                   d    xr | j                  du}|S )z›
        .. versionadded:: 2.0.0

        Returns whether the client should send default PII (Personally Identifiable Information) data to Sentry.
        rX   NrE   )rn   r`   r¨   )rz   Úresults     rq   r‡   z_Client.should_send_default_piiÃ  sB   € ð —‘×!Ñ!Ð"4Ó5ˆØˆ>ØŸ™ eÑ,Ð,ÒK°·±ÀtÐ1KˆFàˆr|   c                 ó    — | j                   d   S )z%Returns the configured DSN as string.rE   r¯   r…   s    rq   rE   z_Client.dsnÐ  s   € ð �|‰|˜EÑ"Ð"r|   c                 óÚ	  — |j                  d«      €&t        j                  t        j                  «      |d<   |�ð|j                  d«      dk(  }t        |j                  dg «      «      }|j                  ||| j                  «      }|€Q| j                  rD| j                  j                  d|rdnd¬«       |r!| j                  j                  dd|d	z   ¬
«       y |}|t        |j                  dg «      «      z
  }|r/|dkD  r*| j                  �| j                  j                  dd|¬
«       | j                  d   rnd|vrjd|vrfd|vrbt        «       5  dt        | j                  j                  dd«      | j                  j                  dt        «      ¬«      dddœgi|d<   d d d «       dD ]M  }|j                  |«      �Œ| j                  |   €Œ%t        | j                  |   «      j                  «       ||<   ŒO |j                  d«      €:t        t         «      }	t#        | j$                  j'                  «       «      |	d<   |	|d<   |j                  d«      €d|d<   t)        || j                  d   | j                  d   | j                  d   «      }|�"| j                  d   }
|
r|
j+                  |«       |�nt-        d t/        t-        d!|«      | j                  j                  d"«      | j                  j                  d«      | j                  j                  d#«      ¬$«      «      }| j                  d%   }|�z|�x|j                  d«      dk7  rdd }t        «       5   |||xs i «      }d d d «       |€>t1        j2                  d&«       | j                  r| j                  j                  d%d¬«       |}| j                  d'   }|��|��|j                  d«      dk(  rîd }t        |j                  dg «      «      }t        «       5   |||xs i «      }d d d «       |€`t1        j2                  d(«       | j                  rŒ| j                  j                  d%d¬)«       | j                  j                  d%d|d	z   ¬*«       nM|t        |j                  dg «      «      z
  }|dkD  r*| j                  �| j                  j                  d%d|¬*«       |}|S # 1 sw Y   �Œ*xY w# 1 sw Y   �ŒrxY w# 1 sw Y   ŒÖxY w)+NÚ	timestampr¾   ÚtransactionÚspansÚevent_processorÚerror©Údata_categoryÚspanrD   )r  Úquantityr   Úattach_stacktraceÚ	exceptionÚ
stacktraceÚthreadsÚvaluesÚinclude_local_variablesTÚmax_value_length)r  r  F)r
  ÚcrashedÚcurrent)rG   rH   rP   ÚdistÚsdkrà   ÚplatformÚpythonÚin_app_excludeÚin_app_includerS   rW   r3   zDict[str, Any]rÞ   Úcustom_repr)rÞ   r  r  Úbefore_sendzbefore send dropped eventÚbefore_send_transactionz%before send transaction dropped event)Úreasonr  )r  r  r  )r`   r   Únowr   Úutcr]   Úapply_to_eventrn   rw   Úrecord_lost_eventr   r   r   r\   Ústripr_   ró   Úsortedrà   rò   r   Úscrub_eventr   r   r   rí   )rz   ÚeventÚhintÚscopeÚis_transactionÚspans_beforeÚevent_Úspans_deltaro   rç   rW   r  Ú	new_eventr  s                 rq   Ú_prepare_eventz_Client._prepare_eventÖ  sá  € ð �9‰9�[Ó!Ð)Ü!)§¡¬h¯l©lÓ!;ˆE�+ÑàÐØ"ŸY™Y vÓ.°-Ñ?ˆNÜ˜uŸy™y¨°"Ó5Ó6ˆLØ×)Ñ)¨%°°t·|±|ÓDˆFð ˆ~Ø—>’>Ø—N‘N×4Ñ4Ø)Ù8F¡}ÈGð 5ô ñ &ØŸ™×8Ñ8Ø-Ø*0Ø%1°AÑ%5ð 9ô ð
 àˆEà&¬¨U¯Y©Y°wÀÓ-CÓ)DÑDˆKÙ +°¢/°d·n±nÐ6PØ—‘×0Ñ0Ø%°VÀkð 1ô ð
 �L‰LÐ,Ò-Ø 5Ñ(Ø EÑ)Ø Ñ&ä,Ó.ñ àä*<Ø8<¿¹×8HÑ8HØ$=¸tó9"ð 26·±×1AÑ1AØ$6Ô8Pó2"ô	+ð (-Ø'+ñðð$��iÑ ÷ð$ Cò 	<ˆCØ�y‰y˜‹~Ñ%¨$¯,©,°sÑ*;Ñ*GÜ  §¡¨cÑ!2Ó3×9Ñ9Ó;��c’
ð	<ð �9‰9�UÓÐ#ÜœH“~ˆHÜ'-¨d×.?Ñ.?×.DÑ.DÓ.FÓ'GˆH�^Ñ$Ø#ˆE�%‰Là�9‰9�ZÓ Ð(Ø (ˆE�*ÑäØØ�L‰LÐ)Ñ*Ø�L‰LÐ)Ñ*Ø�L‰L˜Ñ(ó	
ˆð ÐØ!Ÿ\™\Ð*:Ñ;ˆNÙØ×*Ñ*¨5Ô1ð ÐÜØÜÜÐ)¨5Ó1Ø*.¯,©,×*:Ñ*:Ð;RÓ*SØ%)§\¡\×%5Ñ%5Ð6HÓ%IØ $§¡× 0Ñ 0°Ó ?ô	óˆEð —l‘l =Ñ1ˆàÐ#ØÐ!Ø—	‘	˜&Ó! ]Ò2àˆIÜ,Ó.ñ ;Ù'¨¨tªz°rÓ:�	÷;àÐ Ü—‘Ð7Ô8Ø—>’>Ø—N‘N×4Ñ4Ø%°Wð 5ô ð ˆEà"&§,¡,Ð/HÑ"IÐà#Ñ/ØÑ!Ø—	‘	˜&Ó! ]Ò2àˆIÜ˜uŸy™y¨°"Ó5Ó6ˆLÜ,Ó.ñ GÙ3°E¸4º:À2ÓF�	÷GàÐ Ü—‘ÐCÔDØ—>’>Ø—N‘N×4Ñ4Ø,¸Mð 5ô ð —N‘N×4Ñ4Ø,Ø&,Ø!-°Ñ!1ð 5õ ð +¬S°·±¸wÈÓ1KÓ-LÑL�Ø ’? t§~¡~Ð'AØ—N‘N×4Ñ4Ø,¸FÈ[ð 5ô ð ˆEàˆ÷Kñ ú÷z;ñ ;ú÷$Gð Gús%   ÅASÍSÏ>S!ÓSÓSÓ!S*c                 óø   — |j                  d«      }|€y|d   }t        |d   «      }|d   j                  ›d|›�}| j                  d   D ]-  }t	        |t
        «      r||k(  s||k(  sŒ yt        ||«      sŒ- y y)NÚexc_infoFr   r¹   Úignore_errorsT)r`   r   r¥   rn   rZ   r\   Ú
issubclass)rz   r"  r#  r,  r  Úerror_type_nameÚerror_full_nameÚignored_errors           rq   Ú_is_ignored_errorz_Client._is_ignored_errorj  sŒ   € à—8‘8˜JÓ'ˆØÐØà˜‘ˆÜ'¨°©Ó4ˆØ%-¨a¡[×%;Ó%;¹_ÐMˆà!Ÿ\™\¨/Ñ:ò 	 ˆMô ˜-¬Ô-Ø  OÒ3°}ÈÓ7WÙä˜e ]Õ3Ùð	 ð r|   c                 óˆ   — |j                  d«      dk(  }|ry|d uxr |j                   }|ry| j                  ||«      }|ryy)Nr¾   r   TF)r`   Ú_should_capturer2  )rz   r"  r#  r$  r%  Úignoring_prevents_recursionÚignored_by_config_options          rq   r4  z_Client._should_capture€  sX   € ð Ÿ™ 6Ó*¨mÑ;ˆÙØà&+°4Ð&7Ò&UÀ×@UÑ@UÐ<UÐ#Ù&Øà#'×#9Ñ#9¸%ÀÓ#FÐ Ù#Øàr|   c                 ó0  — | j                   j                  dd «      }t        |«      rt        «       5   |||«      }d d d «       n| j                   d   }	 dk  xr t	        j                  «       |k\  }|r*| j                  r| j                  j                  dd¬«       yy# 1 sw Y   ŒUxY w# t
        $ r t        j                  d«       d}Y Œ[t        $ r? t        |«      rdnd\  }}t        j                  d|›d	|›d
t        «      ›d�«       d}Y Œ¡w xY w)NÚerror_samplerÚsample_raterV   zMThe provided error_sampler raised an error. Defaulting to sampling the event.F)r8  Úreturned)r9  ÚcontainszThe provided ú z an invalid value of zJ. The value should be a float or a bool. Defaulting to sampling the event.r  r  T)rn   r`   Úcallabler   ÚrandomÚ	NameErrorr   rj   r^   Úreprrw   r  )rz   r"  r#  r8  r9  Únot_in_sample_rateÚ	parameterÚverbs           rq   Ú_should_sample_errorz_Client._should_sample_error–  s  € ð Ÿ™×(Ñ(¨¸$Ó?ˆä�MÔ"Ü,Ó.ñ 9Ù+¨E°4Ó8�÷9ð 9ð Ÿ,™, }Ñ5ˆKð	'Ø!,¨sÑ!2Ò!U´v·}±}³È+Ñ7UÐñ0 à�~Š~Ø—‘×0Ñ0°ÈgÐ0ÔVàà÷K9ð 9ûô ò 	'Ü�N‰NØ_ôð "'ÒÜò 	'ô ˜MÔ*ñ .à0ñ ˆI�tô
 �NŠNâšd¤D¨Õ$5ð7ôð "'Òð	'ús$   ²
B ÁB, Â B)Â, DÃADÄDc                 ó<  — d}d}d }|j                  d«      xs i j                  d«      }|rBd}|D ];  }|j                  d«      }t        |t        «      sŒ%|j                  d«      du sŒ9d} n |j                  d«      }	|j                  €g|j                  d«      xs i j                  d	«      }
t        |
t        «      r|
ni }|j                  «       D ]  \  }}|j                  «       d
k(  sŒ|} n |j                  |rdnd |	||j                  |xs |z   ¬«       y )NFr	  r  TÚ	mechanismÚhandledÚuserÚrequestÚheadersz
user-agentr  )ÚstatusrH  Ú
user_agentÚerrors)	r`   rZ   r   rL  r_   ra   ÚlowerÚupdaterM  )rz   Úsessionr"  r  ÚerroredrL  Ú
exceptionsr  rF  rH  rJ  Úheaders_dictÚkÚvs                 rq   Ú_update_session_from_eventz"_Client._update_session_from_eventÆ  s&  € ð ˆØˆØˆ
à—i‘i Ó,Ò2°×7Ñ7¸ÓAˆ
ÙØˆGØ#ò �Ø!ŸI™I kÓ2�	Ü˜i¬Õ1°i·m±mÀIÓ6NÐRWÒ6WØ"�GÙð	ð �y‰y˜Ó ˆà×ÑÐ%Ø—y‘y Ó+Ò1¨r×6Ñ6°yÓAˆGÜ&0°¼$Ô&?™7ÀRˆLØ$×*Ñ*Ó,ò ‘��1Ø—7‘7“9 Ó,Ø!"�JÙðð
 	�‰Ù '‘9¨TØØ!Ø—>‘> WÒ%7°Ñ8ð	 	õ 	
r|   c                 óÌ  — t        |xs d«      }| j                  |||«      sy|j                  dd«      }|j                  d«      }|€#t	        j
                  «       j                  x|d<   }| j                  |||«      }|€y|r|j                  nd}|r| j                  ||«       |j                  d«      dk(  }|j                  d«      dk(  }	|s|	s| j                  ||«      sy|j                  d«      }
|j                  d	i «      j                  d
«      xs i }|j                  di «      }|d   t        t        j                  t        j                  «      «      dœ}|r||d
<   t!        |¬«      }|rMt#        |t$        «      r+|j'                  |j)                  || j*                  «      «       |j-                  |«       n%|	r|j/                  |«       n|j1                  |«       |
xs dD ]!  }|j3                  |j5                  «       «       Œ# d}| j6                  r| j6                  j9                  |«       |}| j:                  �| j:                  j9                  |«       |}|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¾   r   Úcheck_inÚattachmentsÚcontextsr   Údynamic_sampling_context)rY  Úsent_at)rJ  )r_   r4  Úpopr`   ÚuuidÚuuid4Úhexr*  Ú_sessionrV  rD  r   r   r  r   r  r"   rZ   r%   Úadd_profileÚto_jsonrn   Úadd_transactionÚadd_checkinÚ	add_eventÚadd_itemÚto_envelope_itemr¨   rÑ   rw   )rz   r"  r#  r$  rX  rY  Ú	event_optrP  r%  Ú
is_checkinr[  Útrace_contextr]  rJ  rÒ   Ú
attachmentÚreturn_values                    rq   rŒ   z_Client.capture_eventë  s6  € ô" �D’J˜BÓˆà×#Ñ# E¨4°Ô7Øà—)‘)˜I tÓ,ˆà—9‘9˜ZÓ(ˆØÐÜ+/¯:©:«<×+;Ñ+;Ð;ˆE�*Ñ Ø×'Ñ'¨¨t°UÓ;ˆ	ØÐØñ %*�%—.’.¨tˆÙØ×+Ñ+¨G°UÔ;à"Ÿ™ vÓ.°-Ñ?ˆØ—]‘] 6Ó*¨jÑ8ˆ
ñ ÙØ×-Ñ-¨e°TÔ:àà—h‘h˜}Ó-ˆà!Ÿ™ j°"Ó5×9Ñ9¸'ÓBÒHÀbˆØ#0×#4Ñ#4Ð5OÐQSÓ#TÐ ð " *Ñ-Ü'¬¯©´X·\±\Ó(BÓCñ
ˆñ
 $Ø7ˆG�GÑä GÔ,ˆáÜ˜'¤7Ô+Ø×$Ñ$ W§_¡_°YÀÇÁÓ%MÔNØ×$Ñ$ YÕ/ÙØ× Ñ  Õ+à×Ñ˜yÔ)à%Ò+¨ò 	=ˆJØ×Ñ˜j×9Ñ9Ó;Õ<ð	=ð ˆØ�>Š>Ø�N‰N×+Ñ+¨HÔ5Ø#ˆLà�>‰>Ð%Ø�N‰N×+Ñ+¨HÔ5Ø#ˆLàÐr|   c                 ó~   — |j                   st        j                  d«       y | j                  j	                  |«       y )Nz3Discarded session update because of missing release)rG   r   rí   rê   Úadd_session)rz   rP  s     rq   r�   z_Client.capture_session@  s,   € ð �ŠÜ�K‰KÐMÕNà× Ñ ×,Ñ,¨WÕ5r|   c                  ó   — y rv   r   r‘   s     rq   r“   z_Client.get_integrationK  r”   r|   c                  ó   — y rv   r   r‘   s     rq   r“   z_Client.get_integrationP  r”   r|   c                 ó¦   — t        |t        «      r|}n$|j                  �|j                  }nt        d«      ‚| j                  j                  |«      S )z�Returns the integration for this client by name or class.
        If the client does not have that integration then `None` is returned.
        zIntegration has no name)rZ   r\   Ú
identifierrî   rà   r`   )rz   r’   Úintegration_names      rq   r“   z_Client.get_integrationU  sP   € ô �m¤SÔ)Ø,ÑØ×%Ñ%Ð1Ø,×7Ñ7ÑäÐ6Ó7Ð7à× Ñ ×$Ñ$Ð%5Ó6Ð6r|   c                 óR  — | j                   �›| j                  ||¬«       | j                  j                  «        | j                  �| j                  j                  «        | j
                  r| j
                  j                  «        | j                   j                  «        d| _         yy)z…
        Close the client and shut down the transport. Arguments have the same
        semantics as :py:meth:`Client.flush`.
        N©ÚtimeoutÚcallback)rw   rš   rê   Úkillry   rx   ©rz   ry  rz  s      rq   r˜   z_Client.closee  s�   € ð �>‰>Ð%Ø�J‰J˜w°ˆJÔ:Ø× Ñ ×%Ñ%Ô'Ø×&Ñ&Ð2Ø×'Ñ'×,Ñ,Ô.Ø�|Š|Ø—‘×!Ñ!Ô#Ø�N‰N×ÑÔ!Ø!ˆD�Nð &r|   c                 óú   — | j                   �o|€| j                  d   }| j                  j                  «        | j                  �| j                  j                  «        | j                   j                  ||¬«       yy)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_timeoutrx  )rw   rn   rê   rš   ry   r|  s      rq   rš   z_Client.flushy  sn   € ð �>‰>Ð%ØˆØŸ,™,Ð'9Ñ:�Ø× Ñ ×&Ñ&Ô(Ø×&Ñ&Ð2Ø×'Ñ'×-Ñ-Ô/Ø�N‰N× Ñ ¨¸8Ð ÕDð &r|   c                 ó   — | S rv   r   r…   s    rq   rœ   z_Client.__enter__Ž  r�   r|   c                 ó$   — | j                  «        y rv   )r˜   rŸ   s       rq   r£   z_Client.__exit__’  s   € à�
‰
�r|   rv   )NN)r¤   r¥   r¦   r§   r{   r�   rƒ   rÎ   r²   rŠ   r‡   r©   rE   r*  r2  r4  rD  rV  rŒ   r�   r*   r   r“   r˜   rš   rœ   r£   Ú__classcell__)r³   s   @rq   r­   r­   ú   sÍ   ø„ ñôò
)òò
1òfs)òjòð ñ#ó ð#ò
Ròhð4 ó	ò,.ò`#
ðP Øó	Sòj6ñ à	ñ	ó 
ð	ð 
ñ	ó 
ð	ò7ð$ Øó"ð, ØóEò*ör|   r­   c                   ó   — e Zd Zy)r±   N©r¤   r¥   r¦   r   r|   rq   r±   r±      ó   „ Ør|   r±   c                   ó   — e Zd Zy)ÚClientNrƒ  r   r|   rq   r†  r†  £  r„  r|   r†  c                  ó   — t         S rv   )rr   r   r|   rq   ú<lambda>rˆ  ¬  s   € œ<€ r|   c                  ó   — t         S rv   )r­   r   r|   rq   rˆ  rˆ  ­  s   € ”g€ r|   )`rb   r`  r>  re   Úcollections.abcr   r   r   Ú	importlibr   Útypingr   r   Úsentry_sdk._compatr	   r
   Úsentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r   Úsentry_sdk.serializerr   Úsentry_sdk.tracingr   Úsentry_sdk.transportr   r   Úsentry_sdk.constsr   r   r   r   r   Úsentry_sdk.integrationsr   r    Úsentry_sdk.sessionsr!   Úsentry_sdk.enveloper"   Ú'sentry_sdk.profiler.continuous_profilerr#   Ú(sentry_sdk.profiler.transaction_profilerr$   r%   r&   Úsentry_sdk.scrubberr'   Úsentry_sdk.monitorr(   Úsentry_sdk.spotlightr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   Úsentry_sdk._typesr3   r4   r5   r6   rë   r8   Úsentry_sdk.scoper9   Úsentry_sdk.sessionr:   r;   r<   r=   rè   ró   rr   ÚModuleNotFoundErrorr½   rh   ÚImportErrorrt   r«   r­   r\   r±   r†  r   r|   rq   ú<module>r      sg  ðÛ 	Û Û Û Ý #ß 'Ý #ß !ç ?÷÷ ÷ ñ õ ,Ý $ß B÷õ ÷ NÝ .Ý (Ý M÷ñ õ
 .Ý &Ý 0å  áÝÝÝÝÝÝÝÝç6Ñ6Ý3Ý4Ý&Ý*Ý4Ý.á�˜;Ô'€AáÐ 3Ó4Ð ð ØØ+¸Ñ@ÐAñ€ò@ðF)à0Ð÷Sñ Sôl	˜ô 	ôZ
ˆjô Z
õz !áôÐ'¨¨c°3¨h©ô ôÐ" Gõ ò (Ó*€KÚÓ �Føðq ò )à(Òð)ús   Ä-F ÆFÆF