
    gh~                     j   S SK JrJr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
J
r
JrJr  S SKJr  S SKJr   S SKrS SKrS SKrS SKrS SKJr  S SKJrJrJr  S SKJr  S S	KJrJ r J!r!  S S
K"J#r#J$r$J%r%J&r&  \#(       aP  S SK"J'r'  S SK"J(r(  S SK"J)r)  S SK"J*r*  S SK"J+r+  S SK"J,r,  S SK"J-r-  S SK"J.r.  S SK"J/r/  S SK"J0r0  S SK1J2r2  S SK1J3r3  S SK4J5r5J6r6  / r7\Rp                  S S4\Rr                  S S4\Rr                  S S4\Rr                  S S44 H&  r: \7Rw                  \:S    \:S   " 5       \:S    45        M(      " S! S"\5      r=S.S# jr> " S$ S%\=5      r? " S& S'\?5      r@ S SKArAS SKBrB " S( S)\?5      rC " S+ S,\=5      rDS- rEg! \ a    Sr GNMf = f! \< a     M  f = f! \ a     " S* S)\@5      rC N>f = f)/    )ABCabstractmethodN)datetime	timedeltatimezone)defaultdict)
getproxies)EndpointType)Dsnloggercapture_internal_exceptions)BackgroundWorker)EnvelopeItem
PayloadRef)TYPE_CHECKINGcastListDict)Any)Callable)DefaultDict)Iterable)Mapping)Optional)Self)Tuple)Type)Union)PoolManager)ProxyManager)EventEventDataCategoryc                  "    [        [        S5      $ )NSO_KEEPALIVEgetattrsocket     W/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/transport.py<lambda>r,   0   s     ?r*      c                  "    [        [        S5      $ )NTCP_KEEPIDLEr&   r)   r*   r+   r,   r,   1   s    WV^<r*   -   c                  "    [        [        S5      $ )NTCP_KEEPINTVLr&   r)   r*   r+   r,   r,   2   s    WV_=r*   
   c                  "    [        [        S5      $ )NTCP_KEEPCNTr&   r)   r*   r+   r,   r,   3   s    WV];r*         c                   j    \ rS rSrSrSrSS jrS r\S 5       r	 SS jr
S r  SS	S
.S jjrS rSrg)	Transport=   zOBaseclass for all transports.

A transport is used to send an event to sentry.
Nc                 t    Xl         U(       a$  US   b  US   (       a  [        US   5      U l        g S U l        g )Ndsn)optionsr   
parsed_dsn)selfr=   s     r+   __init__Transport.__init__E   s0    wu~1gen!'%.1DO"DOr*   c                     [         R                  " S[        SS9  [        5       nUR	                  U5        U R                  U5        g)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!r7   
stacklevelN)warningswarnDeprecationWarningr   	add_eventcapture_envelope)r?   eventenvelopes      r+   capture_eventTransport.capture_eventM   s>     	O	
 :5!h'r*   c                     g)z
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?   rK   s     r+   rI   Transport.capture_envelope`   s     	r*   c                     g)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+   flushTransport.flushl   s     r*   c                     g)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+   killTransport.killz   s     r*   r-   quantityc                    g)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itemr[   s        r+   record_lost_eventTransport.record_lost_event   s    . r*   c                     g)NTr)   rW   s    r+   
is_healthyTransport.is_healthy       r*   )r=   r>   NNN)__name__
__module____qualname____firstlineno____doc__r>   r@   rL   r   rI   rT   rX   r`   rc   __static_attributes__r)   r*   r+   r9   r9   =   sW    
 J#(& 	 	  	 2r*   r9   c              #     #    Uc$  [         R                  " [        R                  5      nU R	                  S5       H  n UR                  5       R	                  S5      nUS S u  pEU[        [        U5      S9-   nU=(       a    UR	                  S5      =(       d    S H9  nUS:X  a+   US   R	                  S5      nU(       a  S	U;   a  Xv4v   M2  M4  Xv4v   M;     M     g ! [         a    / n N2f = f! [        [        4 a     M  f = f7f)
N,:r7   seconds;rf   metric_bucket   custom)r   nowr   utcsplitstripr   int
IndexErrorLookupError
ValueError)	headerrw   limit
parametersretry_after_val
categoriesretry_aftercategory
namespacess	            r+   _parse_rate_limitsr      s    
{ll8<<(c"	,,S1J*4Ra.'O	#o2F GGK&@:+;+;C+@KGK.(%/]%8%8%=
 &Z)?&33 *@ #// L # & (%'
( Z( 		sM   <DA'C1'C;C1DC.+C1-C..C11DDDDc                      \ rS rSrSrSrS r  S SS.S jjrS	 rS
 r	\
R                  S4S jrS rS!S jrS"S jrS rS rS rS rS rS rS rS rS rS rS r S#S jrS r\S 5       r\S 5       r \ RB                  S 5       r Sr"g)$BaseHttpTransport   zThe base HTTP transport.   c                    SSK Jn  [        R                  X5        U R                  c   eXl        [        US   S9U l        U R                  R                  SU-  5      U l	        0 U l
        [        R                  R                  5       U l        [        [         5      U l        [$        R$                  " 5       U l        U R)                  5       U l        [,        R.                  U l        UR3                  S0 5      nUR3                  SUR3                  S5      5      nUR3                  S	Uc  [4        c  S
OS5      nUS:X  a!  [4        c  [6        R8                  " S5        S
nS nUS;  a&  [6        R8                  " SU5        SU l        S U l        OXPl        Ub  X@l        g U R<                  S
:X  a  SU l        g U R<                  S:X  a  SU l        g g )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	   ru   )sentry_sdk.constsr   r9   r@   r>   r=   r   _workerto_auth_auth_disabled_untilurllib3utilRetry_retryr   r{   _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@   BaseHttpTransport.__init__   s   -4)***'7;Q3RS__,,-?'-IJ
!ll((*!,"
 )-		%__&
 #kk."5'OO)OO>?
 '??(
 %0FN  	
 t#NNe  & $>1NNDFV '(D#%)D"%5"(&7###v-&'D###t+&'D# ,r*   Nr-   rZ   c                   U R                   S   (       d  g Ub  UR                  nSnUS:X  as  UR                  5       =(       d    0 n[        [	        [
        [        [        [        4      UR                  S5      =(       d    / 5      5      S-   nU R                  USUS9  O7US:X  a"  [        UR                  5       5      =(       d    SnOUc  [        S5      eU R                  X!4==   U-  ss'   g )	Nsend_client_reportsr-   transactionspansspanrZ   
attachmentzdata category not provided)r=   r^   get_transaction_eventlenr   r   r   strobjectr   r`   	get_bytes	TypeErrorr   )r?   r]   r^   r_   r[   rJ   
span_counts          r+   r`   #BaseHttpTransport.record_lost_event   s     ||12 ..MH-224: T$sF{"34eii6H6NBOPSTT  &&vv
&K,. t~~/05A"899}45A5r*   c                 8    UR                   R                  U5      $ rf   )headersr   r?   responser   s      r+   _get_header_value#BaseHttpTransport._get_header_value#  s    ##F++r*   c                    U R                  US5      nU(       a;  [        R                  " S5        U R                  R	                  [        U5      5        g UR                  S:X  a  [        R                  " S5        U R                  US5      nUb  U R                  R                  U5      OS =(       d    Sn[        R                  " [        R                  5      [        US9-   U R                  S '   g g )Nzx-sentry-rate-limitsz%Rate-limited via x-sentry-rate-limits  zRate-limited via 429zRetry-After<   rq   )r   r   r   r   updater   statusr   parse_retry_afterr   rw   r   rx   r   )r?   r   r   retry_after_valuer   s        r+   _update_rate_limits%BaseHttpTransport._update_rate_limits'  s    
 ''2HINNBC  ''(:6(BC
 __#NN12 $ 6 6x O %0 --.?@ 	 
 *2hll)Ci#G *D  & $r*   c                   ^ ^ UU 4S jnUR                  [        T R                  R                  5      [        T R                  R	                  5       5      S.5         T R                  SUUU5      n T R                  U5        UR                  S:X  a  T R                  S5        OUR                  S:  d  UR                  S	:  aj  [        R                  " S
UR                  [        US[        USS 5      5      5        T R                  SR                  UR                  5      5        U" S5        UR                  5         g ! [         a    T R                  S5        U" S5        e f = f! UR                  5         f = f)Nc                 r   > Tc  TR                  U SS9  g TR                   H  nTR                  XS9  M     g )Nerror)r^   r_   )r`   items)r]   r_   rK   r?   s     r+   record_loss4BaseHttpTransport._send_request.<locals>.record_lossI  s;    &&vW&E$NND**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   r   r   client	to_header_request	Exceptionon_dropped_eventr   r   r   r   r'   formatclose)r?   bodyr   endpoint_typerK   r   r   s   `   `  r+   _send_requestBaseHttpTransport._send_request@  s=   	> 	!$**"3"34!$TZZ%9%9%;!<	

	}}	H	$$X.#%
 %%l3C'8??S+@;OOHfgh	4.PQ
 %%k&8&8&IJO,NN3  	!!),(	2 NNs   E  2B=E(  %E%(E:c                     g rf   r)   )r?   _reasons     r+   r   "BaseHttpTransport.on_dropped_eventy  re   r*   c                    U R                   S   (       d  g U(       d'  U R                  [        R                  " 5       U-
  :  d  g U R                  n[	        [
        5      U l        [        R                  " 5       U l        U(       d  g [        [        [        R                  " 5       UR                  5        VVVs/ s H  u  u  pEnXTUS.PM     snnnS.S9SS9$ s  snnnf )Nr   )r]   r   r[   )	timestampdiscarded_events)jsonclient_report)type)	r=   r   r   r   r   r{   r   r   r   )r?   forceintervalr   r   r]   r[   s          r+   _fetch_pending_client_report.BaseHttpTransport._fetch_pending_client_report}  s    ||1266x9OO11!,S!1(,		%!% .335)
 6.X$ $*XV 6)	 !
 	
)s   8Cc                 ^    U R                  USS9nUb  U R                  [        U/S95        g g )Nr   )r   r   )r   )r   rI   r   )r?   r   r   s      r+   _flush_client_reports'BaseHttpTransport._flush_client_reports  s8    99PR9S$!!(-"AB %r*   c                 >   ^  U 4S jnU" U5      =(       d    U" S 5      $ )Nc                    > U S:X  a  Sn TR                   R                  U 5      nUS L=(       a'    U[        R                  " [        R
                  5      :  $ )Nstatsdrt   )r   r   r   rw   r   rx   )buckettsr?   s     r+   	_disabled4BaseHttpTransport._check_disabled.<locals>._disabled  sI    
 !(%%))&1BT>Eb8<<+E&EEr*   r)   )r?   r   r   s   `  r+   _check_disabled!BaseHttpTransport._check_disabled  s    		F "5io5r*   c                 V    [        S U R                  R                  5        5       5      $ )Nc              3   n   #    U  H+  o[         R                  " [        R                  5      :  v   M-     g 7frf   )r   rw   r   rx   ).0r   s     r+   	<genexpr>5BaseHttpTransport._is_rate_limited.<locals>.<genexpr>  s$      
6Shll++6Ss   35)anyr   valuesrW   s    r+   _is_rate_limited"BaseHttpTransport._is_rate_limited  s+     
6:6J6J6Q6Q6S
 
 	
r*   c                 6    U R                   R                  5       $ rf   )r   fullrW   s    r+   _is_worker_full!BaseHttpTransport._is_worker_full  s    ||  ""r*   c                 Z    U R                  5       =(       d    U R                  5       (       + $ rf   )r  r  rW   s    r+   rc   BaseHttpTransport.is_healthy  s"    ((*Ed.C.C.EFFr*   c                    / nUR                    Hg  nU R                  UR                  5      (       a3  UR                  S;   a  U R                  S5        U R	                  SUS9  MV  UR                  U5        Mi     [        UR                  US9nUR                   (       d  g U R                  SS9nUb  UR                   R                  U5        U R                  U5      u  pVU R                  c   e[        R                  " SUR                  U R                  R                  U R                  R                  5        S	S
0nU(       a  XWS'   U R!                  UR#                  5       U[$        R&                  US9  g )N)r   r   defaultr   self_rate_limitsratelimit_backoffr   )r   r   r   )r   z(Sending envelope [%s] project:%s host:%szContent-Typezapplication/x-sentry-envelopezContent-Encoding)r   r   rK   )r   r   r^   r   r`   appendr   r   r   _serialize_enveloper>   r   debugdescription
project_idhostr   getvaluer
   ENVELOPE)r?   rK   	new_itemsr_   client_report_itemcontent_encodingr   r   s           r+   _send_envelope BaseHttpTransport._send_envelope  s^    	NND##D$6$677%%)VV))*<=&&':&F  & # H$4$4IF~~ ">>>K)NN!!"45!%!9!9(!C***6  OO&&OO  		
 ;
 *:&'MMO&//	 	 	
 r*   c                    S n[         R                  " 5       nU R                  S:X  d  U R                  c  UR	                  U5        X#4$ U R                  nU R                  S:X  aF  [
        b?  UR                  [
        R                  " UR                  5       U R                  S95        X#4$ [        R                  " USU R                  S9 nUR	                  U5        S S S 5        X#4$ ! , (       d  f       X#4$ = f)Nr   r   )qualityw)fileobjmodecompresslevel)ioBytesIOr   r   serialize_intor   writecompress	serializer   GzipFile)r?   rK   r  r   fs        r+   r  %BaseHttpTransport._serialize_envelope  s    zz|""a'4+A+A+I##D)  %%  $55%%-&2D

OO **,d6M6M  %% ]] s$:Q:Q++A.
  %% 
  %%s   C((
C8c                     [        5       erf   NotImplementedErrorrW   s    r+   _get_pool_options#BaseHttpTransport._get_pool_options
      !##r*   c                    [        5       R                  S5      nU(       d  gUR                  S5       HU  nUR                  5       nUR                  R                  U5      (       d"  UR                  R                  U5      (       d  MU    g   g)NnoFro   T)r	   r   ry   rz   r  endswithnetloc)r?   r>   no_proxyr  s       r+   _in_no_proxyBaseHttpTransport._in_no_proxy  sk    <##D)NN3'D::<D''--1B1B1K1KD1Q1Q ( r*   c                     [        5       erf   r0  rW   s    r+   r   BaseHttpTransport._make_pool  r4  r*   c                     [        5       erf   r0  r?   methodr   r   r   s        r+   r   BaseHttpTransport._request  s     "##r*   c                    ^ ^ UU 4S jnT R                   R                  U5      (       d5  T R                  S5        TR                   H  nT R	                  SUS9  M     g g )Nc                     > [        5          TR                  T 5        TR                  5         S S S 5        g ! , (       d  f       g = frf   )r   r  r   )rK   r?   s   r+   send_envelope_wrapperABaseHttpTransport.capture_envelope.<locals>.send_envelope_wrapper+  s/    ,.##H-**, /..s	   "7
A
full_queuequeue_overflowr   )r   submitr   r   r`   )r?   rK   rD  r_   s   ``  r+   rI   "BaseHttpTransport.capture_envelope'  sU    	- ||""#899!!,/ &&'7d&C ' :r*   c                    ^  [         R                  " S5        US:  a;  T R                  R                  U 4S j5        T R                  R	                  X5        g g )NzFlushing HTTP transportr   c                  "   > T R                  SS9$ )NT)r   )r   rW   s   r+   r,   )BaseHttpTransport.flush.<locals>.<lambda>?  s    (B(B(B(Nr*   )r   r  r   rH  rT   rQ   s   `  r+   rT   BaseHttpTransport.flush6  sC     	./Q;LL NOLLw1 r*   c                 d    [         R                  " S5        U R                  R                  5         g )NzKilling HTTP transport)r   r  r   rX   rW   s    r+   rX   BaseHttpTransport.killB  s    -.r*   c                  8    [         R                  " S[        SS9  g)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.   rC   N)rE   rF   rG   r)   r*   r+   _warn_hub_clsBaseHttpTransport._warn_hub_clsG  s     	\	
r*   c                 B    [         R                  5         U R                  $ )QDEPRECATED: This attribute is deprecated and will be removed in a future release.HttpTransportrR  r   rW   s    r+   hub_clsBaseHttpTransport.hub_clsQ  s     	##%}}r*   c                 8    [         R                  5         Xl        g)rU  NrV  )r?   values     r+   rX  rY  X  s     	##%r*   )r   r   r   r   r   r   r   r   r   r   r=   rg   )Fr   )Frf   )#rh   ri   rj   rk   rl   TIMEOUTr@   r`   r   r   r
   r  r   r   r   r   r   r  r  rc   r  r  r2  r:  r   r   rI   rT   rX   staticmethodrR  propertyrX  setterrm   r)   r*   r+   r   r      s    "G;(@ 	"B "BH,: #++7r
>C6
#G3j&,$	$$D$ 
2
 
 
   ^^ r*   r   c                   J    \ rS rSr% \(       a
  \\\4   \S'   S r	S r
S rSrg)rW  i`  r   c                    U R                   R                  S0 5      R                  S5      nUc  SO
[        U5      S[        R                  " U R
                  S9S.nS nU R                   S   b  U R                   S   nU R                   S   (       aL  Uc  / nU Vs1 s H  oDS	   US
   4iM     nn[         H$  nUS	   US
   4U;  d  M  UR                  U5        M&     Ub  X2S'   U R                   S   =(       da    [        R                  R                  S5      =(       d;    [        R                  R                  S5      =(       d    [        R                  " 5       US'   U R                   S   =(       d    [        R                  R                  S5      US'   U R                   S   =(       d    [        R                  R                  S5      US'   U$ s  snf )Nr   transport_num_poolsr7   CERT_REQUIRED)total)	num_pools	cert_reqsrR   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   r{   r   Timeoutr\  KEEP_ALIVE_SOCKET_OPTIONSr  osenvironcertifiwhere)r?   re  r=   rg  oused_optionsdefault_options          r+   r2  HttpTransport._get_pool_optionsd  s    LL$$^R8<<=RS	'/S^(T\\:
 <<()5!\\*:;N<<%%!#2@A.QqT1Q4L.LA";"1%~a'89M")).9 #< %(6$% LL$ zz~~o.zz~~23 }}	 	
  $||K8  
BJJNN=
 #ll:6 
"**..;

 - Bs   Gc                 Z   U R                   c  [        S5      eS nU R                  U R                   5      nU R                  S   nU R                   R                  S:X  a6  US:w  a0  U=(       d'    U(       + =(       a    [        5       R                  S5      nU R                  S   nU(       d6  US:w  a0  U=(       d'    U(       + =(       a    [        5       R                  S5      nU R                  5       nU(       av  U R                  S   nU(       a  XeS'   UR                  S5      (       a/  S	n S
SK	J
n  U(       a	  W" U40 UD6$ [        R                  " S0 UD6$ [        R                   " U40 UD6$ [        R                  " S0 UD6$ ! [         a    Sn[        R                  " SU5         Nxf = f)N4Cannot create HTTP-based transport without valid DSNhttps_proxyhttps 
http_proxyhttpproxy_headerssocksTr   )SOCKSProxyManagerFzYou 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>   r~   r:  r=   schemer	   r   r2  
startswithurllib3.contrib.socksr  ImportErrorr   r   r   r    r!   )	r?   proxyr9  r|  r  optsr  use_socks_proxyr  s	            r+   r   HttpTransport._make_pool  sv   ??"STT$$T__5 ll=1??!!W,+2COL$NZ\5E5Eg5NE \\,/
**Mx<#LJL4D4DV4LE%%' LL9M(5_%(("&G #,U;d;;"..666++E:T::&&... # &+ONN ]s   +F #F*)F*c                 l    U R                   R                  UU R                  R                  U5      UUS9$ )N)r   r   )r   requestr   get_api_urlr?  s        r+   r   HttpTransport._request  s;     zz!!JJ""=1	 " 
 	
r*   r)   N)rh   ri   rj   rk   r   r   r    r!   __annotations__r2  r   r   rm   r)   r*   r+   rW  rW  `  s&    [,.//)V,/\
r*   rW  c                       \ rS rSr% SrSr\(       a)  \\R                  \R                  \R                  4   \S'   S rS rS rS rS	rg
)Http2Transporti  z&The HTTP2 transport based on httpcore.   r   c                 D   ^ [        U4S jUR                   5       S 5      $ )Nc              3      >#    U  H=  u  pUR                  S 5      R                  5       T:X  d  M*  UR                  S 5      v   M?     g7f)asciiN)decodelower)r  keyvalr   s      r+   r  3Http2Transport._get_header_value.<locals>.<genexpr>  sB      $4zz'*002f< (CJJw''$4s
   )AA)nextr   r   s     `r+   r    Http2Transport._get_header_value  s(    $,$4$4
  r*   c                     U R                   R                  UU R                  R                  U5      UUSU R                  U R                  U R                  U R                  S.0S9nU$ )NrR   )poolconnectr)  read)r   r   
extensions)r   r  r   r  r\  )r?   r@  r   r   r   r   s         r+   r   Http2Transport._request  sh     zz))

&&}5 $#'<<!% $	  * H Or*   c                    U R                   S L=(       a    U R                   R                  S:H  SS.nU R                  S   b  U R                  S   O/ nU Vs1 s H  o3S   US   4iM     nn[         H$  nUS   US   4U;  d  M  UR	                  U5        M&     X!S'   [
        R                  " 5       nUR                  U R                  S   =(       da    [        R                  R                  S5      =(       d;    [        R                  R                  S	5      =(       d    [        R                  " 5       5        U R                  S
   =(       d    [        R                  R                  S5      nU R                  S   =(       d    [        R                  R                  S5      nUb  UR                  Xx5        XaS'   U$ s  snf )Nr}  rQ  )http2retriesrg  r   r-   ri  rj  rk  rl  rm  rn  ro  ssl_context)r>   r  r=   rq  r  sslcreate_default_contextload_verify_locationsrr  rs  r   rt  ru  load_cert_chain)	r?   r=   rg  rv  rw  rx  r  rl  rn  s	            r+   r2   Http2Transport._get_pool_options	  s    4 6OO**g5G << 01= -.  3AA.QqT1Q4L.LA";"1%~a'89M")).9 #< )7$%446K--Z( #::>>/2#::>>"67# ==?	 [1WRZZ^^DV5WI||J/T2::>>BS3TH$++I@%0M"N+ Bs   F=c                    U R                   c  [        S5      eS nU R                  U R                   5      nU R                  S   nU R                   R                  S:X  a6  US:w  a0  U=(       d'    U(       + =(       a    [        5       R                  S5      nU R                  S   nU(       d6  US:w  a0  U=(       d'    U(       + =(       a    [        5       R                  S5      nU R                  5       nU(       a  U R                  S   nU(       a  XeS'   UR                  S5      (       aM   S	U;   a.  UR                  S	5      nU(       a  [        R                  " S
5        [        R                  " SSU0UD6$ [        R                  " SSU0UD6$ [        R                   " S0 UD6$ ! [         a    [        R                  " SU5         N9f = f)Nr{  r|  r}  r~  r  r  r  r  rg  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>   r~   r:  r=   r  r	   r   r2  r  popr   r   httpcore
SOCKSProxyRuntimeError	HTTPProxyConnectionPool)r?   r  r9  r|  r  r  r  rg  s           r+   r   Http2Transport._make_pool.  s   & !WXXE((9H ,,}5K%%0kR6G#SH(R9I9I'9R l3JjB."Q8|'P
8H8H8P))+D $_ = ,9)##G,,+t3-1XX6F-GN- & %X!"  (22KUKdKK $--FFFF**2T22 (  N!s   )AF# #!GGr)   N)rh   ri   rj   rk   rl   r\  r   r   r  r  r  r  r  r   r   r2  r   rm   r)   r*   r+   r  r    sK    4##X%7%79P9PP 			0#	J)	3r*   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r  i  c                 P   > [         TU ]  U5        [        R                  " S5        g )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@   Http2Transport.__init__  s    GW%NNzr*   r)   )rh   ri   rj   rk   r@   rm   __classcell__)r  s   @r+   r  r    s    	 	r*   c                   6    \ rS rSrSrS rS rS\SS4S jrS	r	g)
_FunctionTransportiZ  z
DEPRECATED: Users wishing to provide a custom transport should subclass
the Transport class, rather than providing a function.
c                 :    [         R                  U 5        Xl        g rf   )r9   r@   _func)r?   funcs     r+   r@   _FunctionTransport.__init__`  s     	4 
r*   c                 &    U R                  U5        g rf   r  )r?   rJ   s     r+   rL    _FunctionTransport.capture_eventg  s     	

5r*   rK   returnNc                 N    UR                  5       nUb  U R                  U5        g g rf   )	get_eventrL   )r?   rK   rJ   s      r+   rI   #_FunctionTransport.capture_envelopen  s+     ""$u% r*   r  )
rh   ri   rj   rk   rl   r@   rL   r   rI   rm   r)   r*   r+   r  r  Z  s$    
& &d &r*   r  c                    U S   nU R                  S0 5      R                  SS5      nU(       a  [        O[        n[        U[        5      (       a  U$ [        U[
        5      (       a  [        U[        5      (       a  UnO5[        U5      (       a%  [        R                  " S[        SS9  [        U5      $ U S   (       a  U" U 5      $ g )	N	transportr   transport_http2FzFunction transports are deprecated and will be removed in a future release.Please provide a Transport instance or subclass, instead.r7   rC   r<   )r   r  rW  
isinstancer9   r   
issubclasscallablerE   rF   rG   r  )r=   ref_transportuse_http2_transporttransport_clss       r+   make_transportr  w  s    K(M!++nb9==>OQVW .=  -++	M4	(	(Zy-Q-Q%	-	 	 H		
 "-00 u~W%%r*   rf   )Fabcr   r   r&  rr  r   r(   r  r   rE   r   r   r   collectionsr   urllib.requestr	   r   r  r   rt  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   r   urllib3.poolmanagerr    r!   sentry_sdk._typesr"   r#   rq  
SOL_SOCKETSOL_TCPoptionr  AttributeErrorr9   r   r   rW  r  h2r  r  r  r)   r*   r+   <module>r     s   # 	 	   
   2 2 # %    * E E . : : 2 2"/0: ?C^^<bA^^=rB^^;Q?	F!((&)VAY[&))LMb bJ6`	 `Fj
% j
ZJ3{3* {3|& &:Q  FP   	r   s5   F "F F FFFFF21F2