Ë
    õ�Dj¸}  ã                   ó^  — d dl mZmZ d dlZd dlZd dlZd dlZd dlZ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mZ 	 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mZ d dlmZ d d	lmZm Z 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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l0m1Z1 d dl0m2Z2 d dl3m4Z4m5Z5 g Z6ejn                  d„ dfejp                  d„ dfejp                  d„ dfejp                  d „ d!ffD ]%  Z9	 e6ju                  e9d     e9d   «       e9d"   f«       Œ'  G d#„ d$e«      Z<d0d%„Z= G d&„ d'e<«      Z> G d(„ d)e>«      Z?	 d dl@Z@d dlAZA G d*„ d+e>«      ZB G d-„ d.e<«      ZCd/„ ZDy# e$ r dZY �ŒJw xY w# e;$ r Y Œ…w xY w# e$ r  G d,„ d+e?«      ZBY Œ:w xY w)1é    )ÚABCÚabstractmethodN)ÚdatetimeÚ	timedeltaÚtimezone)Údefaultdict)Ú
getproxies)ÚEndpointType)ÚDsnÚloggerÚcapture_internal_exceptions)ÚBackgroundWorker)ÚEnvelopeÚItemÚ
PayloadRef)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚDict)ÚDefaultDict)ÚIterable)ÚList)ÚMapping)ÚOptional)ÚSelf)ÚTuple)ÚType)ÚUnion)ÚPoolManager)ÚProxyManager)ÚEventÚEventDataCategoryc                  ó"   — t        t        d«      S )NÚSO_KEEPALIVE©ÚgetattrÚsocket© ó    úXC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/transport.pyú<lambda>r+   2   s   € ¤¬°Ó ?€ r)   é   c                  ó"   — t        t        d«      S )NÚTCP_KEEPIDLEr%   r(   r)   r*   r+   r+   3   s   € œW¤V¨^Ó<€ r)   é-   c                  ó"   — t        t        d«      S )NÚTCP_KEEPINTVLr%   r(   r)   r*   r+   r+   4   s   € œW¤V¨_Ó=€ r)   é
   c                  ó"   — t        t        d«      S )NÚTCP_KEEPCNTr%   r(   r)   r*   r+   r+   5   s   € œW¤V¨]Ó;€ r)   é   é   c                   ó`   — e Zd ZdZdZdd„Zd„ Zed„ «       Z	 dd„Z	d„ Z
	 	 ddd	œd
„Zd„ Zd„ Zy)Ú	TransportzWBaseclass for all transports.

    A transport is used to send an event to sentry.
    Nc                 ó`   — || _         |r|d   �|d   rt        |d   «      | _        y d | _        y )NÚdsn)Úoptionsr   Ú
parsed_dsn)Úselfr;   s     r*   Ú__init__zTransport.__init__G   s2   € àˆŒÙ�w˜u‘~Ð1°g¸e²nÜ! '¨%¡.Ó1ˆD�Oà"ˆD�Or)   c                 ó”   — t        j                  dt        d¬«       t        «       }|j	                  |«       | j                  |«       y)z§
        DEPRECATED: Please use capture_envelope instead.

        This gets invoked with the event dictionary when an event should
        be sent to sentry.
        zAcapture_event is deprecated, please use capture_envelope instead!r6   ©Ú
stacklevelN)ÚwarningsÚwarnÚDeprecationWarningr   Ú	add_eventÚcapture_envelope)r=   ÚeventÚenvelopes      r*   Úcapture_eventzTransport.capture_eventO   s>   € ô 	�‰ØOÜØõ	
ô “:ˆØ×Ñ˜5Ô!Ø×Ñ˜hÕ'r)   c                  ó   — y)a  
        Send an envelope to Sentry.

        Envelopes are a data container format that can hold any type of data
        submitted to Sentry. We use it to send all event data (including errors,
        transactions, crons check-ins, etc.) to Sentry.
        Nr(   )r=   rH   s     r*   rF   zTransport.capture_envelopeb   s   € ð 	r)   c                  ó   — y)z÷
        Wait `timeout` seconds for the current events to be sent out.

        The default implementation is a no-op, since this method may only be relevant to some transports.
        Subclasses should override this method if necessary.
        Nr(   ©r=   ÚtimeoutÚcallbacks      r*   ÚflushzTransport.flushn   s   € ð r)   c                  ó   — y)zÙ
        Forcefully kills the transport.

        The default implementation is a no-op, since this method may only be relevant to some transports.
        Subclasses should override this method if necessary.
        Nr(   ©r=   s    r*   ÚkillzTransport.kill|   s   € ð r)   r,   ©Úquantityc                 ó   — y)aá  This increments a counter for event loss by reason and
        data category by the given positive-int quantity (default 1).

        If an item is provided, the data category and quantity are
        extracted from the item, and the values passed for
        data_category and quantity are ignored.

        When recording a lost transaction via data_category="transaction",
        the calling code should also record the lost spans via this method.
        When recording lost spans, `quantity` should be set to the number
        of contained spans, plus one for the transaction itself. When
        passing an Item containing a transaction via the `item` parameter,
        this method automatically records the lost spans.
        Nr(   )r=   ÚreasonÚdata_categoryÚitemrT   s        r*   Úrecord_lost_eventzTransport.record_lost_event†   s   € ð. r)   c                  ó   — y)NTr(   rQ   s    r*   Ú
is_healthyzTransport.is_healthyŸ   ó   € àr)   c                 óD   — 	 | j                  «        y # t        $ r Y y w xY w©N)rR   Ú	ExceptionrQ   s    r*   Ú__del__zTransport.__del__£   s"   € ð	Ø�I‰I�KøÜò 	Ùð	ús   ‚ “	žr^   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   r>   rI   r   rF   rO   rR   rY   r[   r`   r(   r)   r*   r8   r8   ?   s\   „ ñð
 €Jó#ò(ð& ñ	ó ð	ð óòð Øð	ð ôò2ór)   r8   c              #   óæ  K  — |€#t        j                  t        j                  «      }| j	                  d«      D ]Ž  }	 |j                  «       j	                  d«      }|d d \  }}|t        t        |«      ¬«      z   }|xr |j	                  d«      xs dD ]0  }|dk(  r#	 |d   j	                  d«      }|rd	|v sŒ$||f–— Œ+||f–— Œ2 Œ� y # t        $ r g }Y Œ&w xY w# t        t        f$ r Y Œ´w xY w­w)
Nú,ú:r6   ©Úsecondsú;r^   Úmetric_bucketé   Úcustom)r   Únowr   ÚutcÚsplitÚstripr   ÚintÚ
IndexErrorÚLookupErrorÚ
ValueError)	Úheaderro   ÚlimitÚ
parametersÚretry_after_valÚ
categoriesÚretry_afterÚcategoryÚ
namespacess	            r*   Ú_parse_rate_limitsr   «   s
  è ø€ à
€{Ü�l‰lœ8Ÿ<™<Ó(ˆà—‘˜cÓ"ò ˆð	ØŸ™›×,Ñ,¨SÓ1ˆJØ*4°R°a¨.Ñ'ˆO˜Zà¤	´#°oÓ2FÔ GÑGˆKØ&Ò@¨:×+;Ñ+;¸CÓ+@ÒKÀGò 0�Ø˜Ò.ð(Ø%/°¡]×%8Ñ%8¸Ó%=˜
ñ &¨°ZÒ)?Ø&¨Ð3Ó3ð # KÐ/Ó/ñ0ñøô &ò (Ø%'š
ð(ûô œZÐ(ò 	Ùð	üsS   ‚:C1½A CÂCÂ2CÂ9CÃC1ÃCÃCÃCÃCÃC.Ã+C1Ã-C.Ã.C1c                   ó   — e Zd ZdZd„ Z	 	 dddœd„Zd„ Zd„ Zej                  dfd	„Z
d
„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 d d„Zd„ Zed„ «       Zed„ «       Zej>                  d„ «       Zy)!ÚBaseHttpTransportzThe base HTTP transport.c                 óŒ  — ddl m} t        j                  | |«       | j                  €J ‚|| _        t        |d   ¬«      | _        | j                  j                  d|z  «      | _	        i | _
        t        j                  j                  «       | _        t        t         «      | _        t%        j$                  «       | _        | j)                  «       | _        t,        j.                  | _        |j3                  di «      }|j3                  d|j3                  d«      «      }|j3                  d	|€t4        €d
nd«      }|dk(  rt4        €t7        j8                  d«       d
}d }|dvr%t7        j8                  d|«       d| _        d | _        n|| _        |�|| _        y | j<                  d
k(  rd| _        y | j<                  dk(  rd| _        y y )Nr   )ÚVERSIONÚtransport_queue_size)Ú
queue_sizezsentry.python/%sÚ_experimentsÚtransport_compression_levelÚ transport_zlib_compression_levelÚtransport_compression_algoÚgzipÚbrzSYou asked for brotli compression without the Brotli module, falling back to gzip -9)r‹   rŠ   z2Unknown compression algo %s, disabling compressioné	   rm   )Úsentry_sdk.constsrƒ   r8   r>   r<   r;   r   Ú_workerÚto_authÚ_authÚ_disabled_untilÚurllib3ÚutilÚRetryÚ_retryr   rs   Ú_discarded_eventsÚtimeÚ_last_client_report_sentÚ
_make_poolÚ_poolÚ
sentry_sdkÚHubÚ_hub_clsÚgetÚbrotlir   ÚwarningÚ_compression_levelÚ_compression_algo)r=   r;   rƒ   ÚexperimentsÚcompression_levelÚcompression_algos         r*   r>   zBaseHttpTransport.__init__É   s¥  € å-ä×Ñ˜4 Ô)Ø�‰Ð*Ñ*ØˆŒÜ'°7Ð;QÑ3RÔSˆŒØ—_‘_×,Ñ,Ð-?À'Ñ-IÓJˆŒ
Ø!ˆÔä—l‘l×(Ñ(Ó*ˆŒÜ!,Üó"
ˆÔô )-¯	©	«ˆÔ%à—_‘_Ó&ˆŒ
ô #Ÿ™ˆŒà—k‘k .°"Ó5ˆØ'ŸO™OØ)Ø�O‰OÐ>Ó?ó
Ðð 'Ÿ?™?Ø(ð
 %Ð0´F°Nñ ð ó	
Ðð ˜tÒ#¬¨Ü�N‰NØeôð  &ÐØ $Ðà >Ñ1Ü�N‰NØDÐFVôð '(ˆDÔ#Ø%)ˆDÕ"à%5ˆDÔ"àÐ(Ø&7ˆDÕ#Ø×#Ñ# vÒ-Ø&'ˆDÕ#Ø×#Ñ# tÒ+Ø&'ˆDÕ#ð ,r)   Nr,   rS   c                ót  — | j                   d   sy |�€|j                  }d}|dk(  rJ|j                  «       xs i }t        |j	                  d«      xs g «      dz   }| j                  |d|¬«       n0|dk(  r+t        |j                  «       «      xs d}n|€t        d«      ‚| j                  ||fxx   |z  cc<   y )	NÚsend_client_reportsr,   ÚtransactionÚspansÚspanrS   Ú
attachmentzdata category not provided)	r;   rW   Úget_transaction_eventÚlenrž   rY   Ú	get_bytesÚ	TypeErrorr–   )r=   rV   rW   rX   rT   rG   Ú
span_counts          r*   rY   z#BaseHttpTransport.record_lost_event  sÆ   € ð �|‰|Ð1Ò2ØàÐØ ×.Ñ.ˆMØˆHà Ò-à×2Ñ2Ó4Ò:¸�ô ! §¡¨7Ó!3Ò!9°rÓ:¸QÑ>�
Ø×&Ñ& v¨vÀ
Ð&ÕKà ,Ò.ô ˜tŸ~™~Ó/Ó0Ò5°A‘àÐ"ÜÐ8Ó9Ð9à×Ñ˜}¨fÐ4Ó5¸ÑAÔ5r)   c                 ó8   — |j                   j                  |«      S r^   )Úheadersrž   ©r=   Úresponserw   s      r*   Ú_get_header_valuez#BaseHttpTransport._get_header_value(  s   € à×Ñ×#Ñ# FÓ+Ð+r)   c                 óÎ  — | j                  |d«      }|r:t        j                  d«       | j                  j	                  t        |«      «       y |j                  dk(  rˆt        j                  d«       | j                  |d«      }|�| j                  j                  |«      nd xs d}t        j                  t        j                  «      t        |¬«      z   | j                  d <   y y )Nzx-sentry-rate-limitsz%Rate-limited via x-sentry-rate-limitsé­  zRate-limited via 429zRetry-Afteré<   ri   )rµ   r   r    r‘   Úupdater   Ústatusr•   Úparse_retry_afterr   ro   r   rp   r   )r=   r´   rw   Úretry_after_valuer|   s        r*   Ú_update_rate_limitsz%BaseHttpTransport._update_rate_limits,  sÒ   € ð
 ×'Ñ'¨Ð2HÓIˆÙÜ�N‰NÐBÔCØ× Ñ ×'Ñ'Ô(:¸6Ó(BÕCð
 �_‰_ Ò#Ü�N‰NÐ1Ô2Ø $× 6Ñ 6°xÀÓ OÐð %Ð0ð —‘×-Ñ-Ð.?Ô@àòð ð	 ô
 *2¯©´h·l±lÓ)CÄiØ#ôGñ *ˆD× Ñ  Ò&ð $r)   c                 óî  ‡ ‡— ˆˆ fd„}|j                  t        ‰ j                  j                  «      t        ‰ j                  j	                  «       «      dœ«       	 ‰ j                  d|||«      }	 ‰ j                  |«       |j                  dk(  r‰ j                  d«       n‡|j                  dk\  s|j                  d	k  rit        j                  d
|j                  t        |dt        |dd «      «      «       ‰ j                  dj                  |j                  «      «        |d«       |j                  «        y # t        $ r ‰ j                  d«        |d«       ‚ w xY w# |j                  «        w xY w)Nc                 óz   •— ‰€‰j                  | d¬«       y ‰j                  D ]  }‰j                  | |¬«       Œ y )NÚerror)rW   ©rX   )rY   Úitems)rV   rX   rH   r=   s     €€r*   Úrecord_lossz4BaseHttpTransport._send_request.<locals>.record_lossN  sB   ø€ àÐØ×&Ñ& v¸WÐ&ÕEà$ŸN™Nò >�DØ×*Ñ*¨6¸Ð*Õ=ñ>r)   )z
User-AgentzX-Sentry-AuthÚPOSTÚnetworkÚnetwork_errorr·   Ú
status_429i,  éÈ   z%Unexpected status code: %s (body: %s)ÚdataÚcontentz	status_{})r¹   Ústrr�   ÚclientÚ	to_headerÚ_requestr_   Úon_dropped_eventr½   rº   r   rÀ   r&   ÚformatÚclose)r=   Úbodyr²   Úendpoint_typerH   rÃ   r´   s   `   `  r*   Ú_send_requestzBaseHttpTransport._send_requestE  s=  ù€ õ	>ð 	�‰ä! $§*¡*×"3Ñ"3Ó4Ü!$ T§Z¡Z×%9Ñ%9Ó%;Ó!<ñô	
ð
	Ø—}‘}ØØØØó	ˆHð	Ø×$Ñ$ XÔ.à�‰ #Ò%ð
 ×%Ñ% lÔ3Øà—‘ CÒ'¨8¯?©?¸SÒ+@Ü—‘Ø;Ø—O‘OÜ˜H f¬g°hÀ	È4Ó.PÓQôð
 ×%Ñ% k×&8Ñ&8¸¿¹Ó&IÔJÙ˜OÔ,à�N‰NÕøô3 ò 	Ø×!Ñ! )Ô,Ù˜Ô(Øð	ûð2 �N‰NÕús   ÁD; Á1B9E" Ä;$EÅ"E4c                  ó   — y r^   r(   )r=   Ú_reasons     r*   rÏ   z"BaseHttpTransport.on_dropped_event~  r\   r)   c                 ó¢  — | j                   d   sy |s%| j                  t        j                  «       |z
  k  sy | j                  }t	        t
        «      | _        t        j                  «       | _        |sy t        t        t        j                  «       |j                  «       D ���cg c]  \  \  }}}|||dœ‘Œ c}}}dœ¬«      d¬«      S c c}}}w )Nr§   )rV   r}   rT   )Ú	timestampÚdiscarded_events)ÚjsonÚclient_report)Útype)	r;   r˜   r—   r–   r   rs   r   r   rÂ   )r=   ÚforceÚintervalrÙ   r}   rV   rT   s          r*   Ú_fetch_pending_client_reportz.BaseHttpTransport._fetch_pending_client_report‚  sÃ   € à�|‰|Ð1Ò2Øá˜×6Ñ6¼¿¹»ÀxÑ9OÒOØà×1Ñ1ÐÜ!,¬SÓ!1ˆÔÜ(,¯	©	«ˆÔ%áØäÜä!%§¡£ð .×3Ñ3Ó5÷)ð )ñÙ.˜X vØ$ð $*°xÈXÓVô)ñ	ôð !ô
ð 	
ùô)s   Â%C
c                 óh   — | j                  |d¬«      }|�| j                  t        |g¬«      «       y y )Nr¸   )rÝ   rÞ   )rÂ   )rß   rF   r   )r=   rÝ   rÛ   s      r*   Ú_flush_client_reportsz'BaseHttpTransport._flush_client_reports¡  s8   € à×9Ñ9ÀÐPRÐ9ÓSˆØÐ$Ø×!Ñ!¤(°-°Ô"AÕBð %r)   c                 ó2   ‡ — ˆ fd„} ||«      xs  |d «      S )Nc                 ó    •— | dk(  rd} ‰j                   j                  | «      }|d uxr& |t        j                  t        j
                  «      kD  S )NÚstatsdrl   )r‘   rž   r   ro   r   rp   )ÚbucketÚtsr=   s     €r*   Ú	_disabledz4BaseHttpTransport._check_disabled.<locals>._disabled©  sI   ø€ ð
 ˜Ò!Ø(�à×%Ñ%×)Ñ)¨&Ó1ˆBØ˜T�>ÒE b¬8¯<©<¼¿¹Ó+EÑ&EÐEr)   r(   )r=   r}   rç   s   `  r*   Ú_check_disabledz!BaseHttpTransport._check_disabled§  s   ø€ ô		Fñ ˜Ó"Ò5¡i°£oÐ5r)   c                 óV   — t        d„ | j                  j                  «       D «       «      S )Nc              3   óh   K  — | ]*  }|t        j                  t        j                  «      kD  –— Œ, y ­wr^   )r   ro   r   rp   )Ú.0ræ   s     r*   ú	<genexpr>z5BaseHttpTransport._is_rate_limited.<locals>.<genexpr>¸  s'   è ø€ ò 
Ø02ˆB”—‘œhŸl™lÓ+Õ+ñ
ùs   ‚02)Úanyr‘   ÚvaluesrQ   s    r*   Ú_is_rate_limitedz"BaseHttpTransport._is_rate_limited¶  s+   € äñ 
Ø6:×6JÑ6J×6QÑ6QÓ6Sô
ó 
ð 	
r)   c                 ó6   — | j                   j                  «       S r^   )rŽ   ÚfullrQ   s    r*   Ú_is_worker_fullz!BaseHttpTransport._is_worker_full¼  s   € à�|‰|× Ñ Ó"Ð"r)   c                 óH   — | j                  «       xs | j                  «        S r^   )rò   rï   rQ   s    r*   r[   zBaseHttpTransport.is_healthyÀ  s"   € à×(Ñ(Ó*ÒE¨d×.CÑ.CÓ.EÐFÐFr)   c                 óÞ  — g }|j                   D ]a  }| j                  |j                  «      r3|j                  dv r| j                  d«       | j	                  d|¬«       ŒQ|j                  |«       Œc t        |j                  |¬«      }|j                   sy | j                  d¬«      }|�|j                   j                  |«       | j                  |«      \  }}| j                  €J ‚t        j                  d|j                  | j                  j                  | j                  j                  «       d	d
i}|r||d<   | j!                  |j#                  «       |t$        j&                  |¬«       y )N)r¨   rÀ   Údefaulträ   Úself_rate_limitsÚratelimit_backoffrÁ   )r²   rÂ   é   )rÞ   z(Sending envelope [%s] project:%s host:%szContent-Typezapplication/x-sentry-envelopezContent-Encoding)r²   rÓ   rH   )rÂ   rè   rW   rÏ   rY   Úappendr   r²   rß   Ú_serialize_enveloper<   r   ÚdebugÚdescriptionÚ
project_idÚhostrÔ   Úgetvaluer
   ÚENVELOPE)r=   rH   Ú	new_itemsrX   Úclient_report_itemÚcontent_encodingrÒ   r²   s           r*   Ú_send_envelopez BaseHttpTransport._send_envelopeÄ  sa  € ð ˆ	Ø—N‘Nò 	'ˆDØ×#Ñ# D×$6Ñ$6Ô7Ø×%Ñ%Ð)VÑVØ×)Ñ)Ð*<Ô=Ø×&Ñ&Ð':ÀÐ&ÕFà× Ñ  Õ&ð	'ô  H×$4Ñ$4¸IÔFˆà�~Š~Øð "×>Ñ>ÈÐ>ÓKÐØÐ)Ø�N‰N×!Ñ!Ð"4Ô5à!%×!9Ñ!9¸(Ó!CÑÐ˜$à�‰Ð*Ñ*Ü�‰Ø6Ø× Ñ Ø�O‰O×&Ñ&Ø�O‰O× Ñ ô		
ð Ð;ð
ˆñ Ø*:ˆGÐ&Ñ'à×ÑØ�M‰M‹OØÜ&×/Ñ/Øð	 	ô 	
ð r)   c                 óò  — d }t        j                  «       }| j                  dk(  s| j                  €|j	                  |«       ||fS | j                  }| j                  dk(  rHt
        �B|j                  t        j                  |j                  «       | j                  ¬«      «       ||fS t        j                  |d| j                  ¬«      5 }|j	                  |«       d d d «       ||fS # 1 sw Y   ||fS xY w)Nr   r‹   )ÚqualityÚw)ÚfileobjÚmodeÚcompresslevel)ÚioÚBytesIOr¡   r¢   Úserialize_intorŸ   ÚwriteÚcompressÚ	serializerŠ   ÚGzipFile)r=   rH   r  rÒ   Úfs        r*   rú   z%BaseHttpTransport._serialize_envelopeù  s÷   € àÐÜ�z‰z‹|ˆØ×"Ñ" aÒ'¨4×+AÑ+AÐ+IØ×#Ñ# DÔ)ð   Ð%Ð%ð  $×5Ñ5ÐØ×%Ñ%¨Ò-´&Ð2DØ—
‘
Ü—O‘OØ ×*Ñ*Ó,°d×6MÑ6Môôð   Ð%Ð%ô —]‘]Ø  s¸$×:QÑ:Qôð /àØ×+Ñ+¨AÔ.÷/ð
   Ð%Ð%÷/ð
   Ð%Ð%ús   ÃC*Ã*C6c                 ó   — t        «       ‚r^   ©ÚNotImplementedErrorrQ   s    r*   Ú_get_pool_optionsz#BaseHttpTransport._get_pool_options  ó   € ä!Ó#Ð#r)   c                 óø   — t        «       j                  d«      }|sy|j                  d«      D ]J  }|j                  «       }|j                  j                  |«      s|j                  j                  |«      sŒJ y y)NÚnoFrg   T)r	   rž   rq   rr   rþ   ÚendswithÚnetloc)r=   r<   Úno_proxyrþ   s       r*   Ú_in_no_proxyzBaseHttpTransport._in_no_proxy  sj   € ä“<×#Ñ# DÓ)ˆÙØØ—N‘N 3Ó'ò 	ˆDØ—:‘:“<ˆDØ�‰×'Ñ'¨Ô-°×1BÑ1B×1KÑ1KÈDÕ1QÙð	ð r)   c                 ó   — t        «       ‚r^   r  rQ   s    r*   r™   zBaseHttpTransport._make_pool  r  r)   c                 ó   — t        «       ‚r^   r  ©r=   ÚmethodrÓ   rÒ   r²   s        r*   rÎ   zBaseHttpTransport._request"  s   € ô "Ó#Ð#r)   c                 ó¶   ‡ ‡— ˆˆ fd„}‰ j                   j                  |«      s6‰ j                  d«       ‰j                  D ]  }‰ j	                  d|¬«       Œ y y )Nc                  ó†   •— t        «       5  ‰j                  ‰ «       ‰j                  «        d d d «       y # 1 sw Y   y xY wr^   )r   r  rá   )rH   r=   s   €€r*   Úsend_envelope_wrapperzABaseHttpTransport.capture_envelope.<locals>.send_envelope_wrapper0  s8   ø€ ä,Ó.ñ -Ø×#Ñ# HÔ-Ø×*Ñ*Ô,÷-÷ -ñ -ús	   Œ"7·A Ú
full_queueÚqueue_overflowrÁ   )rŽ   ÚsubmitrÏ   rÂ   rY   )r=   rH   r$  rX   s   ``  r*   rF   z"BaseHttpTransport.capture_envelope,  sY   ù€ õ	-ð �|‰|×"Ñ"Ð#8Ô9Ø×!Ñ! ,Ô/Ø Ÿ™ò D�Ø×&Ñ&Ð'7¸dÐ&ÕCñDð :r)   c                 ó°   ‡ — t        j                  d«       |dkD  r;‰ j                  j                  ˆ fd„«       ‰ j                  j	                  ||«       y y )NzFlushing HTTP transportr   c                  ó(   •— ‰ j                  d¬«      S )NT)rÝ   )rá   rQ   s   €r*   r+   z)BaseHttpTransport.flush.<locals>.<lambda>D  s   ø€ ¨×(BÑ(BÈÐ(BÓ(N€ r)   )r   rû   rŽ   r'  rO   rL   s   `  r*   rO   zBaseHttpTransport.flush;  sE   ø€ ô 	�‰Ð.Ô/à�QŠ;Ø�L‰L×ÑÓ NÔOØ�L‰L×Ñ˜w¨Õ1ð r)   c                 ób   — t        j                  d«       | j                  j                  «        y )NzKilling HTTP transport)r   rû   rŽ   rR   rQ   s    r*   rR   zBaseHttpTransport.killG  s   € ä�‰Ð-Ô.Ø�‰×ÑÕr)   c                  ó<   — t        j                  dt        d¬«       y)zRConvenience method to warn users about the deprecation of the `hub_cls` attribute.zNThe `hub_cls` attribute is deprecated and will be removed in a future release.é   r@   N)rB   rC   rD   r(   r)   r*   Ú_warn_hub_clszBaseHttpTransport._warn_hub_clsL  s   € ô 	�‰Ø\ÜØö	
r)   c                 óB   — t         j                  «        | j                  S )úQDEPRECATED: This attribute is deprecated and will be removed in a future release.©ÚHttpTransportr-  r�   rQ   s    r*   Úhub_clszBaseHttpTransport.hub_clsV  s   € ô 	×#Ñ#Ô%Ø�}‰}Ðr)   c                 ó:   — t         j                  «        || _        y)r/  Nr0  )r=   Úvalues     r*   r2  zBaseHttpTransport.hub_cls]  s   € ô 	×#Ñ#Ô%Øˆ�r)   ra   )Fr¸   )Fr^   ) rb   rc   rd   re   r>   rY   rµ   r½   r
   r   rÔ   rÏ   rß   rá   rè   rï   rò   r[   r  rú   r  r  r™   rÎ   rF   rO   rR   Ústaticmethodr-  Úpropertyr2  Úsetterr(   r)   r*   r�   r�   Æ   sÜ   „ Ù"ò;(ð@ Øð	 Bð ô BòD,òð: #×+Ñ+Øó7òró
ó>Cò6ò
ò#òGò3òj&ò,$ò	ò$ò$òDð$ ó
2òð
 ñ
ó ð
ð ñó ðð ‡^�^ñó ñr)   r�   c                   ó8   — e Zd ZU er
eeef   ed<   d„ Zd„ Z	d„ Z
y)r1  rš   c                 ó  — | j                   j                  di «      j                  d«      }|€dn
t        |«      ddœ}d }| j                   d   �| j                   d   }| j                   d   rD|€g }|D �ch c]  }|d   |d	   f’Œ }}t        D ]   }|d   |d	   f|vsŒ|j	                  |«       Œ" |�||d<   | j                   d
   xsV t
        j                  j                  d«      xs5 t
        j                  j                  d«      xs t        j                  «       |d
<   | j                   d   xs t
        j                  j                  d«      |d<   | j                   d   xs t
        j                  j                  d«      |d<   |S c c}w )Nr†   Útransport_num_poolsr6   ÚCERT_REQUIRED)Ú	num_poolsÚ	cert_reqsÚsocket_optionsÚ
keep_aliver   r,   Úca_certsÚSSL_CERT_FILEÚREQUESTS_CA_BUNDLEÚ	cert_fileÚCLIENT_CERT_FILEÚkey_fileÚCLIENT_KEY_FILE)	r;   rž   rs   ÚKEEP_ALIVE_SOCKET_OPTIONSrù   ÚosÚenvironÚcertifiÚwhere)r=   r<  r;   r>  ÚoÚused_optionsÚdefault_options          r*   r  zHttpTransport._get_pool_optionsi  s™  € ð —L‘L×$Ñ$ ^°RÓ8×<Ñ<Ð=RÓSˆ	à'Ð/™´S¸³^Ø(ñ
ˆð
 ˆà�<‰<Ð(Ñ)Ð5Ø!Ÿ\™\Ð*:Ñ;ˆNà�<‰<˜Ò%ØÐ%Ø!#�à2@ÖA¨Q˜Q˜q™T 1 Q¡4šLÐAˆLÐAÜ";ò :�Ø" 1Ñ% ~°aÑ'8Ð9ÀÒMØ"×)Ñ)¨.Õ9ð:ð Ð%Ø(6ˆGÐ$Ñ%ð �L‰L˜Ñ$ò Ü�z‰z�~‰~˜oÓ.òä�z‰z�~‰~Ð2Ó3òô �}‰}‹ð	 	�
Ñð  $Ÿ|™|¨KÑ8ò  
¼B¿J¹J¿N¹NØó=
ˆ�Ñð #Ÿl™l¨:Ñ6ò 
¼"¿*¹*¿.¹.Øó;
ˆ�
Ñð ˆùò- Bs   Á5F
c                 óà  — | j                   €t        d«      ‚d }| j                  | j                   «      }| j                  d   }| j                   j                  dk(  r'|dk7  r"|xs | xr t        «       j                  d«      }| j                  d   }|s'|dk7  r"|xs | xr t        «       j                  d«      }| j                  «       }|rf| j                  d   }|r||d<   |j                  d«      r)d	}	 d
dl	m
} |r	 |fi |¤ŽS t        j                  di |¤ŽS t        j                   |fi |¤ŽS t        j                  di |¤ŽS # t        $ r d}t        j                  d|«       Y Œnw xY w)Nú4Cannot create HTTP-based transport without valid DSNÚhttps_proxyÚhttpsÚ Ú
http_proxyÚhttpÚproxy_headersÚsocksTr   )ÚSOCKSProxyManagerFzÂYou have configured a SOCKS proxy (%s) but support for SOCKS proxies is not installed. Disabling proxy support. Please add `PySocks` (or `urllib3` with the `[socks]` extra) to your dependencies.r(   )r<   rv   r  r;   Úschemer	   rž   r  Ú
startswithÚurllib3.contrib.socksrX  ÚImportErrorr   r    r’   r   r    )	r=   Úproxyr  rQ  rT  ÚoptsrV  Úuse_socks_proxyrX  s	            r*   r™   zHttpTransport._make_pool“  su  € à�?‰?Ð"ÜÐSÓTÐTàˆØ×$Ñ$ T§_¡_Ó5ˆð —l‘l =Ñ1ˆØ�?‰?×!Ñ! WÒ,°+ÀÒ2CØÒO¨ LÒ$N´Z³\×5EÑ5EÀgÓ5NˆEð —\‘\ ,Ñ/ˆ
Ù˜*¨Ò*ØÒM x <Ò#L´J³L×4DÑ4DÀVÓ4LˆEà×%Ñ%Ó'ˆáØ ŸL™L¨Ñ9ˆMÙØ(5��_Ñ%à×Ñ Ô(Ø"&�ðåGñ #Ù,¨UÑ;°dÑ;Ð;ä"×.Ñ.Ñ6°Ñ6Ð6ä×+Ñ+¨EÑ:°TÑ:Ð:ä×&Ñ&Ñ.¨Ñ.Ð.øô #ò Ø&+�OÜ—N‘Nð ]Øöðús   Ã8E	 Å	!E-Å,E-c                 ór   — | j                   j                  || j                  j                  |«      ||¬«      S )N)rÒ   r²   ©rš   Úrequestr�   Úget_api_urlr   s        r*   rÎ   zHttpTransport._requestÁ  s;   € ð �z‰z×!Ñ!ØØ�J‰J×"Ñ" =Ó1ØØð	 "ó 
ð 	
r)   N)rb   rc   rd   r   r   r   r    Ú__annotations__r  r™   rÎ   r(   r)   r*   r1  r1  e  s&   … ÙØ�[ ,Ð.Ñ/Ó/ò(òT,/ó\
r)   r1  c                   ó€   — e Zd ZU dZer)eej                  ej                  ej                  f   e
d<   d„ Zd„ Zd„ Zd„ Zy)ÚHttp2Transportz&The HTTP2 transport based on httpcore.rš   c                 óB   ‡— t        ˆfd„|j                  D «       d «      S )Nc              3   óŠ   •K  — | ]:  \  }}|j                  d «      j                  «       ‰k(  r|j                  d «      –— Œ< y­w)ÚasciiN)ÚdecodeÚlower)rë   ÚkeyÚvalrw   s      €r*   rì   z3Http2Transport._get_header_value.<locals>.<genexpr>ë  s@   øè ø€ ò á ˜˜SØ—z‘z 'Ó*×0Ñ0Ó2°fÒ<ð —J‘J˜w×'ñùs   ƒA A)Únextr²   r³   s     `r*   rµ   z Http2Transport._get_header_valueè  s(   ø€ äóà$,×$4Ñ$4ôð
 óð r)   c                 óv   — | j                   j                  || j                  j                  |«      ||¬«      }|S )N)rÊ   r²   ra  )r=   r!  rÓ   rÒ   r²   r´   s         r*   rÎ   zHttp2Transport._requestó  s?   € ð —z‘z×)Ñ)ØØ—
‘
×&Ñ& }Ó5ØØð	 *ó ˆHð ˆOr)   c                 ó8  — | j                   d uxr | j                   j                  dk(  ddœ}| j                  d   �| j                  d   ng }|D �ch c]  }|d   |d   f’Œ }}t        D ]   }|d   |d   f|vsŒ|j	                  |«       Œ" ||d<   t        j                  «       }|j                  | j                  d   xsV t        j                  j                  d«      xs5 t        j                  j                  d	«      xs t        j                  «       «       | j                  d
   xs t        j                  j                  d«      }| j                  d   xs t        j                  j                  d«      }|�|j                  ||«       ||d<   |S c c}w )NrR  r,  )Úhttp2Úretriesr>  r   r,   r@  rA  rB  rC  rD  rE  rF  Ússl_context)r<   rY  r;   rG  rù   ÚsslÚcreate_default_contextÚload_verify_locationsrH  rI  rž   rJ  rK  Úload_cert_chain)	r=   r;   r>  rL  rM  rN  rs  rC  rE  s	            r*   r  z Http2Transport._get_pool_options  s�  € ð Ÿ™°Ð4ò 6Ø—O‘O×*Ñ*¨gÑ5ØñˆGð —<‘<Ð 0Ñ1Ð=ð —‘Ð-Ò.àð ð 3AÖA¨Q˜Q˜q™T 1 Q¡4šLÐAˆLÐAÜ";ò :�Ø" 1Ñ% ~°aÑ'8Ð9ÀÒMØ"×)Ñ)¨.Õ9ð:ð )7ˆGÐ$Ñ%ä×4Ñ4Ó6ˆKØ×-Ñ-Ø—‘˜ZÑ(ò #Ü—:‘:—>‘> /Ó2ò#ä—:‘:—>‘>Ð"6Ó7ò#ô —=‘=“?ô	ð Ÿ™ [Ñ1ÒW´R·Z±Z·^±^ÐDVÓ5WˆIØ—|‘| JÑ/ÒT´2·:±:·>±>ÐBSÓ3TˆHØÐ$Ø×+Ñ+¨I°xÔ@à%0ˆG�MÑ"àˆNùò+ Bs   ÁFc                 ó  — | j                   €t        d«      ‚d }| j                  | j                   «      }| j                  d   }| j                   j                  dk(  r'|dk7  r"|xs | xr t        «       j                  d«      }| j                  d   }|s'|dk7  r"|xs | xr t        «       j                  d«      }| j                  «       }|r‚| j                  d   }|r||d<   |j                  d«      rD	 d	|v r(|j                  d	«      }|rt        j                  d
«       t        j                  dd|i|¤ŽS t        j                  dd|i|¤ŽS t        j                   di |¤ŽS # t        $ r t        j                  d|«       Y Œ6w xY w)NrP  rQ  rR  rS  rT  rU  rV  rW  r>  zqYou have defined socket_options but using a SOCKS proxy which doesn't support these. We'll ignore socket_options.Ú	proxy_urlzoYou have configured a SOCKS proxy (%s) but support for SOCKS proxies is not installed. Disabling proxy support.r(   )r<   rv   r  r;   rY  r	   rž   r  rZ  Úpopr   r    ÚhttpcoreÚ
SOCKSProxyÚRuntimeErrorÚ	HTTPProxyÚConnectionPool)r=   r]  r  rQ  rT  r^  rV  r>  s           r*   r™   zHttp2Transport._make_pool(  s‹  € à�‰Ð&Ü Ð!WÓXÐXØˆEØ×(Ñ(¨¯©Ó9ˆHð Ÿ,™, }Ñ5ˆKØ�‰×%Ñ%¨Ò0°kÀRÒ6GØ#ÒS¨H¨Ò(R¼»×9IÑ9IÈ'Ó9R�ð Ÿ™ lÑ3ˆJÙ˜j¨BÒ.Ø"ÒQ¨8 |Ò'P¼
»×8HÑ8HÈÓ8P�à×)Ñ)Ó+ˆDáØ $§¡¨_Ñ =�Ù Ø,9�D˜Ñ)à×#Ñ# GÔ,ðØ+¨tÑ3Ø-1¯X©XÐ6FÓ-G˜NÙ-Ü &§¡ð %Xô!"ô  (×2Ñ2ÑK¸UÐKÀdÑKÐKô $×-Ñ-ÑF¸ÐFÀÑFÐFä×*Ñ*Ñ2¨TÑ2Ð2øô (ò ÜŸ™ð NØ!öðús   Ã6AE% Å%FÆFN)rb   rc   rd   re   r   r   r{  r|  r~  r  rd  rµ   rÎ   r  r™   r(   r)   r*   rf  rf  à  sF   … Ù4áØØ×#Ñ# X×%7Ñ%7¸×9PÑ9PÐPñó ò		ò	ò #	óJ)	3r)   rf  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )rf  c                 óN   •— t         ‰| �  |«       t        j                  d«       y )NzhYou tried to use HTTP2Transport but don't have httpcore[http2] installed. Falling back to HTTPTransport.)Úsuperr>   r   r    )r=   r;   Ú	__class__s     €r*   r>   zHttp2Transport.__init__×  s   ø€ ä‰GÑ˜WÔ%Ü�N‰NØzõr)   )rb   rc   rd   r>   Ú__classcell__)rƒ  s   @r*   rf  rf  Ö  s   ø„ ÷	ð 	r)   c                   ó,   — e Zd ZdZd„ Zd„ Zdeddfd„Zy)Ú_FunctionTransportzŒ
    DEPRECATED: Users wishing to provide a custom transport should subclass
    the Transport class, rather than providing a function.
    c                 ó<   — t         j                  | «       || _        y r^   )r8   r>   Ú_func)r=   Úfuncs     r*   r>   z_FunctionTransport.__init__Z  s   € ô 	×Ñ˜4Ô Øˆ�
r)   c                 ó&   — | j                  |«       y r^   )rˆ  )r=   rG   s     r*   rI   z _FunctionTransport.capture_eventa  s   € ð 	�
‰
�5ÔØr)   rH   ÚreturnNc                 óL   — |j                  «       }|�| j                  |«       y y r^   )Ú	get_eventrI   )r=   rH   rG   s      r*   rF   z#_FunctionTransport.capture_envelopeh  s+   € ð ×"Ñ"Ó$ˆØÐØ×Ñ˜uÕ%ð r)   )rb   rc   rd   re   r>   rI   r   rF   r(   r)   r*   r†  r†  T  s$   „ ñò
òð&¨ð &°dô &r)   r†  c                 óV  — | d   }| j                  di «      j                  dd«      }|rt        nt        }t        |t        «      r|S t        |t
        «      rt        |t        «      r|}n2t        |«      r't        j                  dt        d¬«       t        |«      S | d   r || «      S y )	NÚ	transportr†   Útransport_http2Fz„Function transports are deprecated and will be removed in a future release.Please provide a Transport instance or subclass, instead.r6   r@   r:   )rž   rf  r1  Ú
isinstancer8   rÜ   Ú
issubclassÚcallablerB   rC   rD   r†  )r;   Úref_transportÚuse_http2_transportÚtransport_clss       r*   Úmake_transportr—  q  s¨   € à˜KÑ(€Mà!Ÿ+™+ n°bÓ9×=Ñ=Ð>OÐQVÓWÐñ .�´=ð ô �-¤Ô+ØÐÜ	�M¤4Ô	(¬Z¸ÄyÔ-QØ%‰Ü	�-Ô	 Ü�‰ðHäØõ		
ô " -Ó0Ð0ð ˆu‚~Ù˜WÓ%Ð%àr)   r^   )EÚabcr   r   r  rH  rŠ   r'   rt  r—   rB   r   r   r   Úcollectionsr   Úurllib.requestr	   rŸ   r\  r’   rJ  r›   r�   r
   Úsentry_sdk.utilsr   r   r   Úsentry_sdk.workerr   Úsentry_sdk.enveloper   r   r   Útypingr   r   r   r   r   r   r   r   r   r   r   r   r   Úurllib3.poolmanagerr   r    Úsentry_sdk._typesr!   r"   rG  Ú
SOL_SOCKETÚSOL_TCPÚoptionrù   ÚAttributeErrorr8   r   r�   r1  r{  Úh2rf  r†  r—  r(   r)   r*   ú<module>r¦     sª  ðß #Û 	Û 	Û Û Û 
Û Û ß 2Ñ 2Ý #Ý %ðÛó Û ã Ý *ß EÑ EÝ .ß :Ñ :å  áÝÝÝÝ"ÝÝÝÝÝÝÝÝå/Ý0ç:àÐ à×ÑÑ?ÀÐCØ‡^�^Ñ<¸bÐAØ‡^�^Ñ=¸rÐBØ‡^�^Ñ;¸QÐ?ð	ò €FðØ!×(Ñ(¨&°©)°Y°V¸A±Y³[À&ÈÁ)Ð)LÕMðôi�ô ióXô6\˜	ô \ô~i
Ð%ô i
ðX@3ÛÛôq3Ð*ô q3ôh&˜ô &ó:øðE ò ØƒFðûðT ò ñ 	ðûðv ò ô˜ö ðús5   ¼F  Ä"FÅF Æ FÆ
FÆFÆFÆF,Æ+F,