
    \jop                        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 d dlmZ d dl	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 d dlmZ d d	lmZ d d
lmZmZmZ d dlmZmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* e*rd dl)m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5 	 d dl6Z6d dl6m7Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZGmHZImJZJ 	 d dlLmMZM 	 	 d dlOZPej                  dk\  rd dlRmSZS nd dlTmSZS dZUdZV G d d e      ZWd!d"d#eXfd$ZYd%d"d#eZfd&Z[	 	 	 	 d=d'Z\ e%eW      d>d(e]d)d"d#dfd*       Z^d?d+Z_ e%eW      d@d-       Z`d?d.ZadAd/ZbdAd0Zcd1d"d#edfd2ZedAd3ZfdAd4Zg G d5 d6      ZhdBd7Zid,d8d9eZd:d"d#dfd;Zj	 	 	 	 	 	 	 	 dCd<Zky# eK$ r	  ed      w xY w# eK$ r	 d dlNmMZM Y w xY w# eK$ r d dlPZPY w xY w# eK$ r dZPY w xY w)D    N)Set)deepcopy)JSONDecodeError)OP)DidNotEnableIntegration$_DEFAULT_FAILED_REQUEST_STATUS_CODES)DEFAULT_HTTP_METHODS_TO_CAPTUREHttpCodeRangeContainer_is_json_content_typerequest_body_within_bounds)SentryAsgiMiddleware)should_send_default_pii)NoOpStreamedSpanStreamedSpan_get_current_streamed_span)SOURCE_FOR_STYLETransactionSource)has_span_streaming_enabled)AnnotatedValuecapture_internal_exceptionsensure_integration_enabledevent_from_exceptionparse_versiontransaction_from_function)TYPE_CHECKING)Any	AwaitableCallable	ContainerDictOptionalTupleUnion)EventHttpStatusCodeRange)__version__)	Starlette)
UploadFile)
Middleware)AuthenticationMiddleware)Request)Match)ASGIAppReceiveScopeSendzStarlette is not installed)ExceptionMiddleware)      )iscoroutinefunctionzgeneric Starlette request)endpointurlc            	       R    e Zd ZdZde ZdZdedefdeddd	e	d
dfdZ
edd       Zy)StarletteIntegration	starlettez
auto.http. r7   Ftransaction_stylefailed_request_status_codesz0Union[Set[int], list[HttpStatusCodeRange], None]middleware_spanshttp_methods_to_captureztuple[str, ...]c                 P   |t         vrt        d|dt         d      || _        || _        t	        t        t        j                  |            | _        t        |t              r|| _        y t        j                  dt        d       |t        | _        y t!        |      | _        y )Nz%Invalid value for transaction_style: z (must be in )zgPassing a list or None for failed_request_status_codes is deprecated. Please pass a set of int instead.   )
stacklevel)TRANSACTION_STYLE_VALUES
ValueErrorr<   r>   tuplemapstrupperr?   
isinstancer   r=   warningswarnDeprecationWarningr	   r   )selfr<   r=   r>   r?   s        K/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py__init__zStarletteIntegration.__init__b   s     $<<$&>@  "3 0',S<S-T'U$137+ , MM4"	 +23W03I/40    Nc                      t        t              } | t        dj                  t                    t	                t                t                | dk\  rt                y y )Nz Unparsable Starlette version: {})r      )r   STARLETTE_VERSIONr   formatpatch_middlewarespatch_asgi_apppatch_request_responsepatch_templates)versions    rO   
setup_oncezStarletteIntegration.setup_once   sU     12?299:KL  	 g rQ   returnN)__name__
__module____qualname__
identifieroriginr<   r	   r
   rH   boolrP   staticmethodr[    rQ   rO   r9   r9   \   sh    J*&F "'Z~!&5T!! &X! 	!
 "3!F  rQ   r9   middleware_classr   r]   c                 r    | j                   	 	 	 	 	 	 	 	 	 	 	 	 dfd}j                  dv}|r|| _         | S )Nc                 $  K   t        j                         }|j                  t              }| | |fi | d {   S t	        | ||      \  }}|%t        j
                         j                  ||       |j                  s | |fi | d {   S | j                  j                  t        |j                        dt        dt        ddffd t        j                        5 }	s|	j                  d       dfd	}
t!        d
t                    }|dk(  }|s|
n}dfd}t!        d
t                    }|dk(  }|s|n} | |||fi | d {   cd d d        S 7 :7 7 # 1 sw Y   y xY ww)Nsourceopnamer]   r   c                     r3t         j                  j                  || t        j                  d      S t        j                  | |t        j                        S )N)z	sentry.opzsentry.originzmiddleware.name)rl   
attributes)rk   rl   rb   )
sentry_sdktraces
start_spanr9   rb   )rk   rl   is_span_streaming_enabledmiddleware_names     rO   _start_middleware_spanzV_enable_span_for_middleware.<locals>._create_span_call.<locals>._start_middleware_span   s_    (!((33%')=)D)D+:  4   ((+22 rQ   rk   rl   starlette.middleware_namec            
         K    t         j                  t        dt                          5 }s|j	                  d        | i | d {   cd d d        S 7 # 1 sw Y   y xY wwNr`   ru   rv   )r   MIDDLEWARE_STARLETTE_RECEIVEgetattrrH   set_tag)argskwargsspanrt   rr   rs   receives      rO   _sentry_receivezO_enable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive   sn     +66 .#g,G : 4%@/R!($!9&!99: : :: :.   -A, A AA 
A,A  A)%A,r^   r   c            
         K    t         j                  t        dt                          5 }s|j	                  d        | i | d {   cd d d        S 7 # 1 sw Y   y xY wwrx   )r   MIDDLEWARE_STARLETTE_SENDrz   rH   r{   )r|   r}   r~   rt   rr   rs   sends      rO   _sentry_sendzL_enable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send   sn     +33 ~s4yA 7 4%@/R!%t!6v!667 7 77 7r   r   r|   r   r}   r   r]   r   )ro   
get_clientget_integrationr9    _get_transaction_from_middlewareget_current_scopeset_transaction_namer>   	__class__r^   r   optionsrH   r   MIDDLEWARE_STARLETTEr{   rz   )appscoper   r   r}   clientintegrationrl   rj   middleware_spanr   receive_namereceive_patchednew_receiver   	send_namesend_patchednew_sendrt   rr   rs   old_calls     ``              @@@rO   _create_span_callz6_enable_span_for_middleware.<locals>._create_span_call   s     &&(,,-AB!#ugtFvFFF 8UKPf((*?? @ 
 ++!#ugtFvFFF--00$>v~~$N!	s 	# 	% 	  $&&_
 "	O,''(C_U: : #7JGEL*.??O1@/gK7 7  j#d)<I$6L+7|TH!#uk8NvNNE"	O "	OC G Gn OE"	O "	OsP   ;FE=AFF AF7A8F/F0F3F FFF	F)r   %_sentry_authenticationmiddleware_call _sentry_exceptionmiddleware_call)r   r   r   Dict[str, Any]r   'Callable[[], Awaitable[Dict[str, Any]]]r   +Callable[[Dict[str, Any]], Awaitable[None]]r}   r   r]   N)__call__r^   )rf   r   not_yet_patchedr   s      @rO   _enable_span_for_middlewarer      s    ((HMOMOMO ;MO <	MO
 MO 
MO^ '' 0 O $5!rQ   datac                 8    dd}t        j                  | |      S )Nc                 P    t        | t              r| j                  S t        |       S N)rJ   r   valuerH   )r   s    rO   _defaultz._serialize_request_body_data.<locals>._default   s     e^,;;5zrQ   )default)r   r   r]   r   )jsondumps)r   r   s     rO   _serialize_request_body_datar      s    
 ::dH--rQ   c                     t               }| rcd| v r^t        |t              rMt        |t              s<t	               5  |j
                  j                  dt        | d                d d d        y y y y y # 1 sw Y   y xY w)Nr   zhttp.request.body.data)r   rJ   r   r   r   _segmentset_attributer   )infocurrent_spans     rO   +_set_request_body_data_on_streaming_segmentr      s     ./LdN|\2<)9:(* 	!!//(,T&\:	 	 ; 3  	
	 	s   )A11A:	exceptionhandledc                     t        | t        j                         j                  t        j
                  |d      \  }}t        j                  ||       y )N)typer   )client_options	mechanism)hint)r   ro   r   r   r9   ra   capture_event)r   r   eventr   s       rO   _capture_exceptionr     sE    &!,,.66/::wOKE4 U.rQ   c                     | j                   dt              v}|r1dfd}|| _         | j                  	 	 	 	 	 	 	 	 	 	 dfd}|| _        yy)zX
    Capture all exceptions in Starlette app and
    also extract user information.
    _sentry_middleware_initNc                      | g|i | | j                   j                         	 	 	 	 	 	 	 	 dfd}| j                   j                         D ]  }|| j                   |<    y )Nc                   K   t        j                         j                  t              }|d   }|Qt	        |d      xr4 t        |j                  t              xr |j                  |j                  v }|rt        |d       d }t        |      j                  D ]  }|v s|   } n |y t        |      r || g|i | d {   S  || g|i |S 7 w)Nr   status_codeT)r   )ro   r   r   r9   hasattrrJ   r   intr=   r   r   __mro___is_async_callable)	rN   r|   r}   r   expis_http_server_errorold_handlerclsold_handlerss	           rO   !_sentry_patched_exception_handlerzfpatch_exception_middleware.<locals>._sentry_middleware_init.<locals>._sentry_patched_exception_handler+  s      )335EE( 1g*]3 W&s<WOO{/V/VV )
 ,*3= #9,, Cl*&23&7
 &%k2!,T!CD!CF!CCC&t=d=f== Ds   BC"%CCCrN   r   r|   r   r}   r   r]   N)_exception_handlerscopykeys)rN   r|   r}   r   keyr   old_middleware_inits        @rO   r   z;patch_exception_middleware.<locals>._sentry_middleware_init%  s    6t6v6  3388:L>>$)>5:>>B //446 R0Q((-RrQ   c                 N   K   t        |        | |||       d {    y 7 wr   _add_user_to_sentry_scoperN   r   r   r   r   s       rO   r   zDpatch_exception_middleware.<locals>._sentry_exceptionmiddleware_callS  s%     " &e,4666s   %#%r   
rN   r   r   r   r   r   r   r   r]   N)rP   rH   r   )rf   r   r   r   r   r   s       @@rO   patch_exception_middlewarer     s    
 +33/s;N7OOO(	RT %<!#,,	7"	7#	7 ?	7 @		7
 	7( %E!I rQ   r   c                 ~   d| vryt               syi }| d   }t        |dd      }|r|j                  d|j                         t        |dd      }|r|j                  d|j                         t        |dd      }|r|j                  d|j
                         t        j                         }|j                  |       y)zZ
    Extracts user information from the ASGI scope and
    adds it to Sentry's scope.
    userNusernameidemail)	r   rz   
setdefaultr   r   r   ro   get_isolation_scopeset_user)r   	user_infostarlette_userr   user_idr   sentry_scopes          rO   r   r   j  s     U"$"$I6]N~z48HZ)@)@AndD1GT>#4#45NGT2EWn&:&:;113L)$rQ   c                 l    | j                   dt              v}|r	 	 	 	 	 	 	 	 	 	 dfd}|| _         yy)z/
    Add user information to Sentry scope.
    r   Nc                 N   K    | |||       d {    t        |       y 7 wr   r   r   s       rO   r   zNpatch_authentication_middleware.<locals>._sentry_authenticationmiddleware_call  s*      4666%e, 7s   %#%r   )r   rH   )rf   r   r   r   s      @rO   patch_authentication_middlewarer     sf      ((H=S]RO	-"	-#	- ?	- @		-
 	- %J! rQ   c                  |    t         j                  dt              v} | r	 	 	 	 	 	 	 	 	 	 dfd}|t         _        yy)za
    Patches Starlettes `Middleware` class to record
    spans for every middleware invoked.
    r   Nc                     |t         k(  r | |g|i |S t        |      } | |g|i | |t        k(  rt        |       |t        k(  rt        |       y y r   )r   r   r+   r   r2   r   )rN   r   r|   r}   span_enabled_clsr   s        rO   r   z2patch_middlewares.<locals>._sentry_middleware_init  sl     ***4FtFvFF:3?&6HHH../4))*3/ *rQ   )
rN   r   r   r   r|   r   r}   r   r]   N)r*   rP   rH   )r   r   r   s     @rO   rV   rV     s`    
 %--/s;N7OOO	0	0#	0,1	0=B	0	0 6
# rQ   c                  \    t         j                  	 	 	 	 	 	 	 	 	 	 dfd} | t         _        y)zG
    Instrument Starlette ASGI app using the SentryAsgiMiddleware.
    Nc                 L   K   t        j                         j                  t              }|  |||       d {   S t	         fdt        j
                  |j                  t        j                  |r|j                  nt        d      } ||||       d {   S 7 c7 w)Nc                       g| i |S r   re   )akwold_apprN   s     rO   <lambda>zBpatch_asgi_app.<locals>._sentry_patched_asgi_app.<locals>.<lambda>  s    WT4A44 rQ   r3   )mechanism_typer<   span_originr?   asgi_version)
ro   r   r   r9   r   ra   r<   rb   r?   r
   )rN   r   r   r   r   
middlewarer   s   `     rO   _sentry_patched_asgi_appz0patch_asgi_app.<locals>._sentry_patched_asgi_app  s      !++-==>RS ugt<<<)4/::);;,33  334

  w555 = 6s"   8B$B AB$B"B$"B$)
rN   r(   r   StarletteScoper   r/   r   r1   r]   N)r(   r   )r   r   s    @rO   rW   rW     sG       G66"26=F6NT6	6, 2IrQ   objc                     t        | t        j                        r'| j                  } t        | t        j                        r't	        |       xs" t        |       xr t	        | j                        S r   )rJ   	functoolspartialfuncr5   callabler   )r   s    rO   r   r     sW    
S)++
,hh S)++
, s# ;-cll;rQ   c                  p    t         j                  j                  dfd} | t         j                  _        y )Nc                     | t              }|r	dfd}|} n t        j                        dfd       }|}  |       S )Nc                  ,  K   t        j                         }|j                  t              }| 	| i | d {   S | d   }t	        t        j
                         |j                  |       t        j                         }t        |      }|j                          d {   	 	 	 	 	 	 dfd}t        j                  |_        |j                   |||             t        |j                        rt                	| i | d {   S 7 7 o7 w)Nr   c                      	 	 	 	 	 	 dfd}|S )Nc                 |    | j                  di       }rdv rd   |d<   dv rd   |d<   t        |      | d<   | S )Nrequestcookiesr   getr   )r   r   request_infor   s      rO   event_processorzpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func.<locals>._make_request_event_processor.<locals>.event_processor  sW     (-yyB'?(D0:>y/Y 7%~7;F|V 4+3L+Ai($rQ   )r   r%   r   r   r]   r%   re   )reqr   r  r   s      rO   _make_request_event_processorz{patch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func.<locals>._make_request_event_processor  s(    %&%.>% % +*rQ   r	  r   r   r   r]   z(Callable[[Event, dict[str, Any]], Event])ro   r   r   r9    _set_transaction_name_and_sourcer   r<   r   StarletteRequestExtractorextract_request_infora   _nameadd_event_processorr   r   r   )
r|   r}   r   r   r  r   	extractorr
  r   old_funcs
           @rO   _sentry_async_funczTpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func  s    #..0$445IJ&!)4!:6!:::q'000211  *==?5g>	&;;==++-2+?+& &:%D%D"001';G .fnn=?E%t6v666S ; >: 7s5   7DDA$D D!A(D	D
DDDc                      t        j                         }|j                  t              }| | i |S t        j                         }t        |j                        }|rG|j                  }t        |t              rQt        |t              sA|j                  j                          n&|j                  |j                  j                          t        j                         }|j                   |j                   j#                          | d   }t%        ||j&                  |       t)        |      }	|	j+                         	 	 	 	 	 	 dfd}
t        j,                  |_        |j1                   |
||              | i |S )Nr   c                      	 	 	 	 	 	 dfd}|S )Nc                 V    | j                  di       }r|d<   t        |      | d<   | S )Nr  r  r  )r   r   r  r  s      rO   r  zpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func.<locals>._make_request_event_processor.<locals>.event_processorG  s6     (-yyB'?"6=L3+3L+Ai($rQ   )r   r%   r   zdict[str, Any]r]   r%   re   )r	  r   r  r  s      rO   r
  zzpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func.<locals>._make_request_event_processorD  s(    
%&
%.>
% 
% +*rQ   r  )ro   r   r   r9   r   r   r   streamed_spanrJ   r   r   r   _update_active_threadtransactionupdate_active_threadr   profileupdate_active_thread_idr  r<   r  extract_cookies_from_requestra   r  r  )r|   r}   r   r   current_scopespan_streamingr   r   r  r  r
  r  r  s              @rO   _sentry_sync_funczSpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func"  sg   #..0$445IJ&#T4V44 * < < >!;FNN!K!#0#>#>L!,=j$&6G %--CCE"..:!--BBD)==?''3 ((@@Bq'0 +"?"? 6g>	#@@B++-2+?+" &:%D%D"001';G  000rQ   r   )r   r   wraps)r   is_coroutiner  r   r  old_request_responses       @rO   _sentry_request_responsez8patch_request_response.<locals>._sentry_request_response  sR    )(3-7^ &D __X&71 '71r %D#D))rQ   )r   zCallable[[Any], Any]r]   r.   )r:   routingrequest_response)r$  r#  s    @rO   rX   rX     s-    $,,==u*n *BI&rQ   c                      	 ddl m 	 ddlm}  | j
                  dt              v}|r	 	 	 	 	 	 	 	 dfd}|| _        y y # t        $ r Y y w xY w# t        $ r Y y w xY w)Nr   )Markup)Jinja2Templates_sentry_jinja2templates_initc                     dfd}|j                  dg        ||d   vr|d   j                  |        | g|i |S )Nc                 \     t        j                         j                               }d|iS )Nsentry_trace_meta)ro   r   trace_propagation_meta)r  
trace_metar(  s     rO   add_sentry_trace_metazTpatch_templates.<locals>._sentry_jinja2templates_init.<locals>.add_sentry_trace_meta}  s3    #002IIK
 ( rQ   context_processors)r  r,   r]   r   )r   append)rN   r|   r}   r0  r(  old_jinja2templates_inits       rO   r*  z5patch_templates.<locals>._sentry_jinja2templates_initz  sS     2B7$F3G,HH+,334IJ+DB4B6BBrQ   )rN   r)  r|   r   r}   r   r]   N)
markupsafer(  ImportErrorstarlette.templatingr)  rP   rH   )r)  r   r*  r(  r3  s      @@rO   rY   rY   c  s    %
8  /774C = O 	C#	C,1	C=B	C	C$ $@ )     s"   A A 	AA	AAc                   x    e Zd ZU dZdZded<   ddZ	 	 	 	 ddZ	 	 	 	 dd	Zdd
Z	ddZ
ddZdd defdZddZy)r  z
    Extracts useful information from the Starlette request
    (like form data or cookies) and adds it to the Sentry event.
    Nr,   r  rN   r]   c                     || _         y r   )r  )rN   r  s     rO   rP   z"StarletteRequestExtractor.__init__  s	    rQ   c                 >    d }t               r| j                         }|S r   )r   r  )rN   r  s     rO   r  z6StarletteRequestExtractor.extract_cookies_from_request  s     /3"$llnGrQ   c                   K   t        j                         }i }t               5  t               r| j	                         |d<   | j                          d {   }|s|cd d d        S |r.t        ||      s"t        j                         |d<   |cd d d        S | j                          d {   }|r||d<   |cd d d        S | j                          d {   }|rUi }|j                         D ]0  \  }}t        |t              }	|	s|nt        j                         ||<   2 ||d<   |cd d d        S t        j                         |d<   |cd d d        S 7 7 7 # 1 sw Y   y xY ww)Nr  r   )ro   r   r   r   r  content_lengthr   r   removed_because_over_size_limitr   formitemsrJ   r)   removed_because_raw_data)
rN   r   r  r;  r   r=  	form_datar   valis_files
             rO   r  z.StarletteRequestExtractor.extract_request_info  ss     &&()+(* (	 &(*.,,.Y' $(#6#6#88N!#(	  (	  &@' (6'U'U'WV$#(	  (	 $ $D'+V$#+(	  (	 0 $D	 $

 HC(j9G  ' +DDF cN (1V$#I(	  (	 N $2#J#J#LL Q(	  (	  9 % %1(	  (	 s   !E#1EEE
E#&&E
E#E)E*E6
E# EEAE%
E#/E
E#EEEE E#c                    K   d| j                   j                  v r"t        | j                   j                  d         S y w)Nzcontent-length)r  headersr   rN   s    rO   r;  z(StarletteRequestExtractor.content_length  s6     t||333t||++,<=>>s   <>c                 .    | j                   j                  S r   )r  r  rE  s    rO   r  z!StarletteRequestExtractor.cookies  s    ||###rQ   c                    K   t         y | j                  j                          d {    | j                  j                          d {   S 7 &7 wr   )	multipartr  bodyr=  rE  s    rO   r=  zStarletteRequestExtractor.form  sF      ll!!!\\&&((( 	"(s!   %AA!A	A
AAc                 ^    t        | j                  j                  j                  d            S )Nzcontent-type)r   r  rD  r  rE  s    rO   is_jsonz!StarletteRequestExtractor.is_json  s"    $T\\%9%9%=%=n%MNNrQ   c                    K   | j                         sy 	 | j                  j                          d {   S 7 # t        $ r Y y w xY wwr   )rK  r  r   r   rE  s    rO   r   zStarletteRequestExtractor.json  sA     ||~	**,,,, 		s1   A9 79 A9 	AAAA)rN   r  r  r,   r]   N)rN   r  r]   Optional[Dict[str, Any]])rN   r  r]   zOptional[int])rN   r  r]   r   )rN   r  r]   r   )r^   r_   r`   __doc__r  __annotations__rP   r  r  r;  r  r=  rc   rK  r   re   rQ   rO   r  r    sn    
 GY)	#/ )/ 	#/ b$
)O1 Od OrQ   r  c                     | j                  d      }|sy |j                  D ]8  }|j                  |       }|d   t        j                  k(  s+	 |j
                  c S  y # t        $ r | j                  d      cY c S w xY w)Nrouterr   path)r  routesmatchesr-   FULLrR  AttributeError)r   rQ  routematchs       rO   _transaction_name_from_routerrY    s{    YYx F )e$8uzz!)zz!	) 	 " )yy(()s   AA<;A<zsentry_sdk.Scoper<   r  c                    d }t         |   }|dk(  r-|j                  j                  d      }|r*t        |      xs d }n|dk(  rt	        |j                        }|t
        }t        j                  }| j                  ||       y )Nr6   r7   ri   )	r   r   r  r   rY  _DEFAULT_TRANSACTION_NAMEr   ROUTEr   )r   r<   r  rl   rj   r6   s         rO   r  r    s     D/0FJ&==$$Z0,X6>$D	e	#,W]];|("((	tF3rQ   c                     d }d }|j                   dk(  r)t        | j                        }t        j                  }||fS |j                   dk(  rt        |      }t        j                  }||fS )Nr6   r7   )r<   r   r   r   	COMPONENTrY  r\  )r   
asgi_scoper   rl   rj   s        rO   r   r     sp     DF$$
2(7",,
 <	 
	&	&%	/,Z8"((<rQ   )r   rM  r]   N)F)rf   r   r]   N)r   r   r]   Nr\   )r   r   r]   zOptional[str])r   r   r_  r   r   r9   r]   z#Tuple[Optional[str], Optional[str]])lr   r   rK   syscollections.abcr   r   r   r   ro   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r	   $sentry_sdk.integrations._wsgi_commonr
   r   r   r   sentry_sdk.integrations.asgir   sentry_sdk.scoper   sentry_sdk.tracesr   r   r   sentry_sdk.tracingr   r   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   r   r   r   r   typingr   r   r   r   r    r!   r"   r#   r$   sentry_sdk._typesr%   r&   r:   r'   rT   starlette.applicationsr(   starlette.datastructuresr)   starlette.middlewarer*   #starlette.middleware.authenticationr+   starlette.requestsr,   starlette.routingr-   starlette.typesr.   r/   r0   r   r1   r5  starlette.middleware.exceptionsr2   starlette.exceptionspython_multipartrH  version_infoinspectr5   asyncior[  rD   r9   r   r   rH   r   r   BaseExceptionr   r   r   r   rV   rW   rc   r   rX   rY   r  rY  r  r   re   rQ   rO   <module>r{     sP      
        
  > 4 X X @  !XXX<5:03/ +'OO9C
	, w++ 8 . 7; 7t[% [D [|.u . .
$	" 01/- /% /D / 2/ME` 01% 2%<J,6:2BE d zBz)@Xc cL"44254@E4	4*	,;Q*C  5
3
445  989    IsH   :F F# F4 F #F10F14	G =G ?G  G GG