
    lh~                     R   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#m$Z$m%Z%m&Z& e#rPd 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"m0Z0 d dl1m2Z2 d dl1m3Z3 d dl4m5Z5m6Z6 g Z7ejp                  d dfejr                  d dfejr                  d dfejr                  d dffD ]%  Z:	 e7jw                  e:d     e:d          e:d    f       '  G d! d"e      Z=d.d#Z> G d$ d%e=      Z? G d& d'e?      Z@	 d dlAZAd dlBZB G d( d)e?      ZC G d+ d,e=      ZDd- ZEy# e$ r dZY Dw xY w# e<$ r Y w xY w# e$ r  G d* d)e@      ZCY :w xY w)/    )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                  "    t        t        d      S )NSO_KEEPALIVEgetattrsocket     f/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/transport.py<lambda>r,   0   s     ? r*      c                  "    t        t        d      S )NTCP_KEEPIDLEr&   r)   r*   r+   r,   r,   1   s    WV^< r*   -   c                  "    t        t        d      S )NTCP_KEEPINTVLr&   r)   r*   r+   r,   r,   2   s    WV_= r*   
   c                  "    t        t        d      S )NTCP_KEEPCNTr&   r)   r*   r+   r,   r,   3   s    WV]; r*         c                   Z    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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__E   s2    wu~1gen!'%.1DO"DOr*   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!r7   
stacklevelN)warningswarnDeprecationWarningr   	add_eventcapture_envelope)r>   eventenvelopes      r+   capture_eventzTransport.capture_eventM   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>   rI   s     r+   rG   zTransport.capture_envelope`   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.flushl   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.killz   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itemrU   s        r+   record_lost_eventzTransport.record_lost_event   s    . r*   c                      y)NTr)   rR   s    r+   
is_healthyzTransport.is_healthy       r*   NNN)__name__
__module____qualname____doc__r=   r?   rJ   r   rG   rP   rS   rZ   r\   r)   r*   r+   r9   r9   =   sW    
 J#(& 	 	  	 2r*   r9   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,:r7   seconds;r^   metric_bucket   custom)r   nowr   utcsplitstripr   int
IndexErrorLookupError
ValueError)	headerrm   limit
parametersretry_after_val
categoriesretry_aftercategory
namespacess	            r+   _parse_rate_limitsr}      s
    
{ll8<<(c" 	,,S1J*4Ra.'OZ	#o2F GGK&@:+;+;C+@KG 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 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	   rk   )sentry_sdk.constsr   r9   r?   r=   r<   r   _workerto_auth_auth_disabled_untilurllib3utilRetry_retryr   rq   _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;Q3RS__,,-?'-IJ
!ll((*!,"
 )-		%__&
 #kk."5'OO)OO>?
 '??(
 %0FN  	
 t#NNe  & $>1NNDFV '(D#%)D"%5D"(&7D###v-&'D###t+&'D# ,r*   Nr-   rT   c                   | j                   d   sy ||j                  }d}|dk(  rl|j                         xs i }t        t	        t
        t        t        t        f      |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spanrT   
attachmentzdata category not provided)r<   rX   get_transaction_eventlenr   r   r   strobjectr   rZ   	get_bytes	TypeErrorr   )r>   rW   rX   rY   rU   rH   
span_counts          r+   rZ   z#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}f45A5r*   c                 8    |j                   j                  |      S r^   )headersr   r>   responseru   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(  rt        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<   rg   )r   r   r   r   updater}   statusr   parse_retry_afterr   rm   r   rn   r   )r>   r   ru   retry_after_valuerz   s        r+   _update_rate_limitsz%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                      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)rX   rY   )rZ   items)rW   rY   rI   r>   s     r+   record_lossz4BaseHttpTransport._send_request.<locals>.record_lossI  sB    &&vW&E$NN >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   r   r   client	to_header_request	Exceptionon_dropped_eventr   r   r   r   r'   formatclose)r>   bodyr   endpoint_typerI   r   r   s   `   `  r+   _send_requestz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   D; 1B9E" ;$E"E4c                      y r^   r)   )r>   _reasons     r+   r   z"BaseHttpTransport.on_dropped_eventy  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   )rW   r{   rU   )	timestampdiscarded_events)jsonclient_report)type)	r<   r   r   r   r   rq   r   r   r   )r>   forceintervalr   r{   rW   rU   s          r+   _fetch_pending_client_reportz.BaseHttpTransport._fetch_pending_client_report}  s    ||1266x9OO11!,S!1(,		%!% .335) ).Xv$ $*xXV)	 !
 	
)s   %C
c                 h    | j                  |d      }|| j                  t        |g             y y )Nr   )r   r   )r   )r   rG   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statsdrj   )r   r   r   rm   r   rn   )buckettsr>   s     r+   	_disabledz4BaseHttpTransport._check_disabled.<locals>._disabled  sI    
 !(%%))&1BT>Eb8<<+E&EEr*   r)   )r>   r{   r   s   `  r+   _check_disabledz!BaseHttpTransport._check_disabled  s    		F "5io5r*   c                 V    t        d | j                  j                         D              S )Nc              3   h   K   | ]*  }|t        j                  t        j                        kD   , y wr^   )r   rm   r   rn   ).0r   s     r+   	<genexpr>z5BaseHttpTransport._is_rate_limited.<locals>.<genexpr>  s'      
02Bhll++
s   02)anyr   valuesrR   s    r+   _is_rate_limitedz"BaseHttpTransport._is_rate_limited  s+     
6:6J6J6Q6Q6S
 
 	
r*   c                 6    | j                   j                         S r^   )r   fullrR   s    r+   _is_worker_fullz!BaseHttpTransport._is_worker_full  s    ||  ""r*   c                 H    | j                         xs | j                          S r^   )r   r   rR   s    r+   r\   zBaseHttpTransport.is_healthy  s"    ((*Ed.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   )r   z(Sending envelope [%s] project:%s host:%szContent-Typezapplication/x-sentry-envelopezContent-Encoding)r   r   rI   )r   r   rX   r   rZ   appendr   r   r   _serialize_enveloper=   r   debugdescription
project_idhostr   getvaluer
   ENVELOPE)r>   rI   	new_itemsrY   client_report_itemcontent_encodingr   r   s           r+   _send_envelopez BaseHttpTransport._send_envelope  sd    	NN 	'D##D$6$67%%)VV))*<=&&':&F  &	' H$4$4IF~~ ">>>K)NN!!"45!%!9!9(!C$***6  OO&&OO  		
 ;
 *:G&'MMO&//	 	 	
 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>   rI   r  r   fs        r+   r   z%BaseHttpTransport._serialize_envelope  s    zz|""a'4+A+A+I##D)  %%  $55%%-&2D

OO **,d6M6M  %% ]] s$:Q:Q /++A./
  %%/
  %%s   C**C6c                     t               r^   NotImplementedErrorrR   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noFre   T)r	   r   ro   rp   r   endswithnetloc)r>   r=   no_proxyr   s       r+   _in_no_proxyzBaseHttpTransport._in_no_proxy  sj    <##D)NN3' 	D::<D''-1B1B1K1KD1Q	 r*   c                     t               r^   r  rR   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   )rI   r>   s   r+   send_envelope_wrapperzABaseHttpTransport.capture_envelope.<locals>.send_envelope_wrapper+  s8    ,. -##H-**,- - -s	   "7A 
full_queuequeue_overflowr   )r   submitr   r   rZ   )r>   rI   r$  rY   s   ``  r+   rG   z"BaseHttpTransport.capture_envelope'  sY    	- ||""#89!!,/  D&&'7d&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   rR   s   r+   r,   z)BaseHttpTransport.flush.<locals>.<lambda>?  s    (B(B(B(N r*   )r   r   r   r'  rP   rM   s   `  r+   rP   zBaseHttpTransport.flush6  sE     	./Q;LL NOLLw1 r*   c                 b    t        j                  d       | j                  j                          y )NzKilling HTTP transport)r   r   r   rS   rR   s    r+   rS   zBaseHttpTransport.killB  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.   rA   N)rC   rD   rE   r)   r*   r+   _warn_hub_clszBaseHttpTransport._warn_hub_clsG  s     	\	
r*   c                 B    t         j                          | j                  S )QDEPRECATED: This attribute is deprecated and will be removed in a future release.HttpTransportr-  r   rR   s    r+   hub_clszBaseHttpTransport.hub_clsQ  s     	##%}}r*   c                 :    t         j                          || _        y)r/  Nr0  )r>   values     r+   r2  zBaseHttpTransport.hub_clsX  s     	##%r*   r_   )Fr   )Fr^   )!r`   ra   rb   rc   TIMEOUTr?   rZ   r   r   r
   r   r   r   r   r   r   r   r   r\   r  r   r  r  r   r   rG   rP   rS   staticmethodr-  propertyr2  setterr)   r*   r+   r   r      s    "G;(@ 	"B "BH,: #++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t        j                  | j
                        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_poolsr7   CERT_REQUIRED)total)	num_pools	cert_reqsrN   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   rq   r   Timeoutr5  KEEP_ALIVE_SOCKET_OPTIONSr   osenvironcertifiwhere)r>   r>  r<   r@  oused_optionsdefault_options          r+   r  zHttpTransport._get_pool_optionsd  s    LL$$^R8<<=RS	'/S^(T\\:
 <<()5!\\*:;N<<%%!#2@AQQqT1Q4LALA"; :"1%~a'89M")).9: %(6G$% LL$ zz~~o.zz~~23 }}	 	
  $||K8  
BJJNN=
 #ll:6 
"**..;

 - 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                         }|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)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=   rt   r  r<   schemer	   r   r  
startswithurllib3.contrib.socksr[  ImportErrorr   r   r   r    r!   )	r>   proxyr  rT  rW  optsrY  use_socks_proxyr[  s	            r+   r   zHttpTransport._make_pool  su   ??"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   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;     zz!!JJ""=1	 " 
 	
r*   N)r`   ra   rb   r   r   r    r!   __annotations__r  r   r   r)   r*   r+   r1  r1  `  s&    [,.//)V,/\
r*   r1  c                       e Zd ZU dZ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valru   s      r+   r   z3Http2Transport._get_header_value.<locals>.<genexpr>  s@       Szz'*002f< JJw's   A A)nextr   r   s     `r+   r   z Http2Transport._get_header_value  s(    $,$4$4
  r*   c                     | j                   j                  || j                  j                  |      ||d| j                  | j                  | j                  | j                  di      }|S )NrN   )poolconnectr  read)r   r   
extensions)r   rd  r   re  r5  )r>   r!  r   r   r   r   s         r+   r   zHttp2Transport._request  sh     zz))

&&}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 )NrU  r,  )http2retriesr@  r   r-   rB  rC  rD  rE  rF  rG  rH  ssl_context)r=   r\  r<   rJ  r   sslcreate_default_contextload_verify_locationsrK  rL  r   rM  rN  load_cert_chain)	r>   r<   r@  rO  rP  rQ  rz  rE  rG  s	            r+   r  z Http2Transport._get_pool_options	  s    4 6OO**g5G << 01= -.  3AAQQqT1Q4LALA"; :"1%~a'89M")).9: )7G$%446K--Z( #::>>/2#::>>"67# ==?	 [1WRZZ^^DV5WI||J/T2::>>BS3TH$++Ix@%0GM"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)NrS  rT  rU  rV  rW  rX  rY  rZ  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=   rt   r  r<   r\  r	   r   r  r]  popr   r   httpcore
SOCKSProxyRuntimeError	HTTPProxyConnectionPool)r>   r`  r  rT  rW  ra  rY  r@  s           r+   r   zHttp2Transport._make_pool.  s   & !WXXE((9H ,,}5K%%0kR6G#SH(R9I9I'9R l3JjB."Q8|'P
8H8H8P))+D $_ = ,9D)##G,+t3-1XX6F-GN- & %X!"  (22KUKdKK $--FFFF**2T22 (  N!s   6AE% %FFN)r`   ra   rb   rc   r5  r   r   r  r  r  r  rf  r   r   r  r   r)   r*   r+   rh  rh    sK    4##X%7%79P9PP 			0#	J)	3r*   rh  c                        e Zd Z fdZ xZS )rh  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%NNzr*   )r`   ra   rb   r?   __classcell__)r  s   @r+   rh  rh    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^   )r9   r?   _func)r>   funcs     r+   r?   z_FunctionTransport.__init__`  s     	4 
r*   c                 &    | j                  |       y r^   )r  )r>   rH   s     r+   rJ   z _FunctionTransport.capture_eventg  s     	

5r*   rI   returnNc                 L    |j                         }|| j                  |       y y r^   )	get_eventrJ   )r>   rI   rH   s      r+   rG   z#_FunctionTransport.capture_envelopen  s+     ""$u% r*   )r`   ra   rb   rc   r?   rJ   r   rG   r)   r*   r+   r  r  Z  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_http2FzFunction transports are deprecated and will be removed in a future release.Please provide a Transport instance or subclass, instead.r7   rA   r;   )r   rh  r1  
isinstancer9   r   
issubclasscallablerC   rD   rE   r  )r<   ref_transportuse_http2_transporttransport_clss       r+   make_transportr  w  s    K(M!++nb9==>OQVW .=  -+	M4	(Zy-Q%	-	 H		
 "-00 u~W%%r*   r^   )Fabcr   r   r  rK  r   r(   r{  r   rC   r   r   r   collectionsr   urllib.requestr	   r   r_  r   rM  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#   rJ  
SOL_SOCKETSOL_TCPoptionr   AttributeErrorr9   r}   r   r1  r  h2rh  r  r  r)   r*   r+   <module>r     s   # 	 	   
   2 2 # %    * E E . : : 2 2"/0: ?C^^<bA^^=rB^^;Q?	 F!((&)YVAY[&))LMb bJ6`	 `Fj
% j
ZJ3{3* {3|& &:Q  FP   	r   s5   E: "FF :FFFFF&%F&