§
    xÅjq   ã                   óÞ  — d dl Z d dlmZ d dlZd dl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 d dlmZ d dlmZ d d	lmZmZmZmZmZ er*d d
lmZ d dlmZmZm Z 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, d dl"m-Z. d dl"m/Z0 n# e1$ r  ed¦  «        ‚w xY wdZ2 G d„ de	¦  «        Z3 G d„ de¦  «        Z4de5ddfd„Z6ddde5ddddfd„Z7	 	 	 	 	 	 	 	 d)d%„Z8d&e9d'e:ddfd(„Z;dS )*é    N)ÚTYPE_CHECKING)ÚSPANDATA)Ú$_DEFAULT_FAILED_REQUEST_STATUS_CODESÚDidNotEnableÚIntegrationÚ_check_minimum_version)ÚRequestExtractor)ÚSentryWsgiMiddleware)ÚSOURCE_FOR_STYLE)Úhas_span_streaming_enabled)Úcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚparse_versionÚtransaction_from_function)ÚSet)ÚAnyÚCallableÚDictÚOptional)Ú
FileUploadÚ	FormsDictÚLocalRequest)ÚEventÚEventProcessor)Ú_ScopedResponse)ÚBottleÚHTTPResponseÚRoute)Ú__version__)ÚrequestzBottle not installed)ÚendpointÚurlc                   óV   — e Zd ZdZde› �ZdZ	 dedœdeddd	d
fd„Ze	dd„¦   «         Z
d
S )ÚBottleIntegrationÚbottlez
auto.http.Ú r"   )Úfailed_request_status_codesÚtransaction_styler(   zSet[int]ÚreturnNc                ój   — |t           vrt          d|›dt           ›d�¦  «        ‚|| _        || _        d S )Nz%Invalid value for transaction_style: z (must be in ú))ÚTRANSACTION_STYLE_VALUESÚ
ValueErrorr)   r(   )Úselfr)   r(   s      úOC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/bottle.pyÚ__init__zBottleIntegration.__init__;   sT   € ð Õ$<Ð<Ð<Ý�*à$Ð$Ð$Õ&>Ð&>Ð&>ð@ñô ð ð "3ˆÔØ+FˆÔ(Ð(Ð(ó    c            	      ó  ‡‡‡— t          t          ¦  «        } t          t          | ¦  «         dddt          fd„}|t
          _        t          j        Št          t          ‰¦  «        	 	 	 	 	 	 	 	 dˆfd„¦   «         }|t          _        t          j
        Št          j        ‰¦  «        dˆfd„¦   «         }|t          _
        t
          j        Št          j        ‰¦  «        dddt          dt          ddfˆfd„¦   «         }|t
          _        d S )Nr/   r   r*   c                 ó~   — | j         }d| j        ›d| j        ›dt          |dd¦  «        ›dt          |dd¦  «        ›d�	S )	Nú<ú z -> Ú
__module__ú?ú:Ú__name__ú>)ÚcallbackÚmethodÚruleÚgetattr)r/   Úcbs     r0   Ú_sentry_route_reprz8BottleIntegration.setup_once.<locals>._sentry_route_reprP   sQ   € Ø”ˆBˆBà”��Ø”	�	�	Ý˜˜L¨#Ñ.Ô.Ð.Ð.Ý˜˜J¨Ñ,Ô,Ð,Ð,ð	ð r2   r   ÚenvironúDict[str, str]Ústart_responseúCallable[..., Any]r   c                 ó\   •‡ — t          ˆˆ fd„t          j        ¬¦  «        } |||¦  «        S )Nc                  ó   •—  ‰‰g| ¢R i |¤ŽS ©N© )ÚaÚkwÚold_appr/   s     €€r0   ú<lambda>zOBottleIntegration.setup_once.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>b   s!   ø€   ¨Ð!8°Ð!8Ð!8Ð!8°RÐ!8Ð!8€ r2   )Úspan_origin)r
   r%   Úorigin)r/   rB   rD   Ú
middlewarerL   s   `   €r0   Úsentry_patched_wsgi_appz=BottleIntegration.setup_once.<locals>.sentry_patched_wsgi_app]   sC   øø€ õ .Ø8Ð8Ð8Ð8Ð8Ý-Ô4ðñ ô ˆJð
 �:˜g ~Ñ6Ô6Ð6r2   r   úDict[str, Any]c                 óN  •— t          j        ¦   «                              t          ¦  «        }|€ ‰| |¦  «        S t          j        ¦   «         }d|_        |                     t          | t          |¦  «        ¦  «          ‰| |¦  «        }t          j	        ¦   «         j
        }|�Gd }	 t          j        j        }n# t          $ r Y nw xY w|� |                     t          j        |¦  «         t#          t          j        ¦   «         j        ¦  «        rt'          |j        ¬¦  «         |S )Nr&   )r)   )Ú
sentry_sdkÚ
get_clientÚget_integrationr%   Úget_isolation_scopeÚ_nameÚadd_event_processorÚ_make_request_event_processorÚbottle_requestÚget_current_scopeÚ_server_segment_spanÚrouter>   ÚRuntimeErrorÚset_attributer   Ú
HTTP_ROUTEr   ÚoptionsÚ_set_segment_name_and_sourcer)   )r/   rB   ÚintegrationÚscopeÚresÚserver_spanÚ
route_pathÚ
old_handles          €r0   Ú_patched_handlez5BottleIntegration.setup_once.<locals>._patched_handlel   s6  ø€ å$Ô/Ñ1Ô1×AÒAÕBSÑTÔTˆKØÐ"Ø!�z $¨Ñ0Ô0Ð0åÔ2Ñ4Ô4ˆEØ"ˆEŒKØ×%Ò%Ý-¨dµNÀKÑPÔPñô ð ð �*˜T 7Ñ+Ô+ˆCå$Ô6Ñ8Ô8ÔMˆKØÐ&Ø!�
ðÝ!/Ô!5Ô!:�J�JøÝ#ð ð ð Ø�Dðøøøð Ð)Ø×-Ò-­hÔ.AÀ:ÑNÔNÐNå)­*Ô*?Ñ*AÔ*AÔ*IÑJÔJð Ý,Ø&1Ô&Cðñ ô ð ð ˆJs   Â'B9 Â9
CÃCÚargsÚkwargsc                 ó°   •‡‡—  ‰| g|¢R i |¤ŽŠt          j        ¦   «                              t          ¦  «        Š‰€‰S dt          dt          ddfˆˆfd„}|S )Nrk   rl   r*   r   c                  óÎ   •— 	  ‰| i |¤Ž}n%# t           $ r}t          |d¬¦  «         |‚d }~ww xY wt          |t          ¦  «        r|j        ‰j        v rt          |d¬¦  «         |S )NF)ÚhandledT)Ú	ExceptionÚ_capture_exceptionÚ
isinstancer   Ústatus_coder(   )rk   rl   rf   Ú	exceptionrd   Úprepared_callbacks       €€r0   Úwrapped_callbackzUBottleIntegration.setup_once.<locals>.patched_make_callback.<locals>.wrapped_callback™   s’   ø€ ð$Ø+Ð+¨TÐ<°VÐ<Ð<�C�CøÝ ð $ð $ð $Ý& y¸%Ð@Ñ@Ô@Ð@Ø#�Oøøøøð$øøøõ
 ˜s¥LÑ1Ô1ð:àœ¨;Ô+RÐRÐRå& s°DÐ9Ñ9Ô9Ð9à�
s   ƒ Œ
.–)©.)rT   rU   rV   r%   Úobject)r/   rk   rl   rv   rd   ru   Úold_make_callbacks       @@€r0   Úpatched_make_callbackz;BottleIntegration.setup_once.<locals>.patched_make_callback�   s‘   øøø€ ð !2Ð 1°$Ð H¸Ð HÐ HÐ HÀÐ HÐ HÐå$Ô/Ñ1Ô1×AÒAÕBSÑTÔTˆKØÐ"Ø(Ð(ð­ð ½&ð ÀUð ð ð ð ð ð ð ð $Ð#r2   )r/   r   rB   rC   rD   rE   r*   r   )r/   r   rB   rR   r*   r   )r   ÚBOTTLE_VERSIONr   r%   Ústrr   Ú__sentry_repr__r   Ú__call__r   Ú_handleÚ	functoolsÚwrapsÚ_make_callbackrw   )ÚversionrA   rQ   rj   ry   rL   ri   rx   s        @@@r0   Ú
setup_oncezBottleIntegration.setup_onceI   sd  øøø€ å¥Ñ/Ô/ˆÝÕ0°'Ñ:Ô:Ð:ð	 Wð 	µð 	ð 	ð 	ð 	ð !3�Ôå”/ˆå	#Õ$5°wÑ	?Ô	?ð	7Øð	7Ø"2ð	7ØDXð	7àð	7ð 	7ð 	7ð 	7ð 	7ñ 
@Ô	?ð	7ð 2�Œå”^ˆ
å	Œ˜Ñ	$Ô	$ð	ð 	ð 	ð 	ð 	ñ 
%Ô	$ð	ð< )�Œå!Ô0Ðå	ŒÐ*Ñ	+Ô	+ð	$Øð	$Ý"(ð	$Ý4:ð	$àð	$ð 	$ð 	$ð 	$ð 	$ñ 
,Ô	+ð	$ð4  5�ÔÐÐr2   )r"   )r*   N)r:   r7   Ú__qualname__Ú
identifierrO   r)   r   r{   r1   Ústaticmethodrƒ   rI   r2   r0   r%   r%   5   s¦   € € € € € Ø€JØ&˜*Ð&Ð&€FàÐð ",ðGð 3Wð	Gð Gð GàðGð &0ð	Gð
 
ðGð Gð Gð Gð ð`5ð `5ð `5ñ „\ð`5ð `5ð `5r2   r%   c                   óJ   — e Zd Zdd„Zdd„Zdefd„Zdd„Zdd	„Zd
dde	fd„Z
dS )ÚBottleRequestExtractorr*   rC   c                 ó   — | j         j        S rH   )r!   rB   ©r/   s    r0   ÚenvzBottleRequestExtractor.env®   ó   € ØŒ|Ô#Ð#r2   c                 ó   — | j         j        S rH   )r!   ÚcookiesrŠ   s    r0   rŽ   zBottleRequestExtractor.cookies±   rŒ   r2   c                 ó>   — | j         j                             ¦   «         S rH   )r!   ÚbodyÚreadrŠ   s    r0   Úraw_datazBottleRequestExtractor.raw_data´   s   € ØŒ|Ô ×%Ò%Ñ'Ô'Ð'r2   r   c                 ój   — |                       ¦   «         rd S | j        j                             ¦   «         S rH   )Úis_jsonr!   ÚformsÚdecoderŠ   s    r0   ÚformzBottleRequestExtractor.form·   s.   € Ø�<Š<‰>Œ>ð 	Ø�4ØŒ|Ô!×(Ò(Ñ*Ô*Ð*r2   úOptional[Dict[str, str]]c                 óF   — |                       ¦   «         rd S | j        j        S rH   )r”   r!   ÚfilesrŠ   s    r0   rš   zBottleRequestExtractor.files¼   s"   € Ø�<Š<‰>Œ>ð 	Ø�4àŒ|Ô!Ð!r2   Úfiler   c                 ó   — |j         S rH   )Úcontent_length)r/   r›   s     r0   Úsize_of_filez#BottleRequestExtractor.size_of_fileÂ   s   € ØÔ"Ð"r2   N)r*   rC   )r*   r   )r*   r˜   )r:   r7   r„   r‹   rŽ   Úbytesr’   r—   rš   Úintrž   rI   r2   r0   rˆ   rˆ   ­   s¡   € € € € € ð$ð $ð $ð $ð$ð $ð $ð $ð(˜%ð (ð (ð (ð (ð+ð +ð +ð +ð
"ð "ð "ð "ð# ð #°#ð #ð #ð #ð #ð #ð #r2   rˆ   r)   r*   c                 ó&  — 	 | dk    rt           j        j        pd}n1t           j        j        pt	          t           j        j        ¦  «        pd}t          j        ¦   «                              |t          |          ¬¦  «         d S # t          $ r Y d S w xY w)Nr#   zbottle request)Úsource)r[   r^   r>   Únamer   r<   rT   r\   Úset_transaction_nameÚSEGMENT_SOURCE_FOR_STYLEr_   )r)   r£   s     r0   rc   rc   Æ   sµ   € ðØ Ò%Ð%Ý!Ô'Ô,Ð@Ð0@ˆDˆDõ Ô$Ô)ð $Ý,­^Ô-AÔ-JÑKÔKð$à#ð õ 	Ô$Ñ&Ô&×;Ò;ØÝ+Ð,=Ô>ð 	<ñ 	
ô 	
ð 	
ð 	
ð 	
øõ ð ð ð Øˆˆðøøøs   ‚A>B Â
BÂBÚeventr   r!   r   c                 ó  — d}|dk    r 	 |j         j        pd}nO# t          $ r Y nCw xY w|dk    r9	 |j         j        pt	          |j         j        ¦  «        pd}n# t          $ r Y nw xY w|| d<   dt          |         i| d<   d S )Nr'   r#   r"   Útransactionr¢   Útransaction_info)r^   r>   r_   r£   r   r<   ÚTRANSACTION_SOURCE_FOR_STYLE)r¦   r)   r!   r£   s       r0   Ú _set_transaction_name_and_sourcer«   Ù   sÕ   € ð €Dà˜EÒ!Ð!ð	Ø”=Ô%Ð+¨ˆDˆDøÝð 	ð 	ð 	ØˆDð	øøøð 
˜jÒ	(Ð	(ð	à”Ô"ð Ý,¨W¬]Ô-CÑDÔDðàð ˆDøõ
 ð 	ð 	ð 	ØˆDð	øøøð  €Eˆ-ÑàÕ.Ð/@ÔAð!€EÐ
ÑÐÐs   Š ™
&¥&°'A Á
A%Á$A%Úappr   r   rd   r   c                 ó   ‡‡— dˆˆfd„}|S )Nr¦   r   Úhintúdict[str, Any]r*   c                 óÄ   •— t          | ‰j        ‰¦  «         t          ¦   «         5  t          ‰¦  «                             | ¦  «         d d d ¦  «         n# 1 swxY w Y   | S rH   )r«   r)   r   rˆ   Úextract_into_event)r¦   r®   rd   r!   s     €€r0   Úevent_processorz6_make_request_event_processor.<locals>.event_processor÷   s­   ø€ Ý(¨°Ô0MÈwÑWÔWÐWå(Ñ*Ô*ð 	Fð 	FÝ" 7Ñ+Ô+×>Ò>¸uÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð ˆs   ¦#AÁAÁA)r¦   r   r®   r¯   r*   r   rI   )r¬   r!   rd   r²   s    `` r0   rZ   rZ   ô   s/   øø€ ðð ð ð ð ð ð ð Ðr2   rt   ro   c                 óŽ   — t          | t          j        ¦   «         j        d|dœ¬¦  «        \  }}t          j        ||¬¦  «         d S )Nr&   )Útypero   )Úclient_optionsÚ	mechanism)r®   )r   rT   rU   rb   Úcapture_event)rt   ro   r¦   r®   s       r0   rq   rq     sU   € Ý&ØÝ!Ô,Ñ.Ô.Ô6Ø#°Ð8Ð8ðñ ô �K€Eˆ4õ
 Ô˜U¨Ð.Ñ.Ô.Ð.Ð.Ð.r2   )r¬   r   r!   r   rd   r%   r*   r   )<r   Útypingr   rT   Úsentry_sdk.constsr   Úsentry_sdk.integrationsr   r   r   r   Ú$sentry_sdk.integrations._wsgi_commonr	   Úsentry_sdk.integrations.wsgir
   Úsentry_sdk.tracesr   r¥   Úsentry_sdk.tracingrª   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   Úcollections.abcr   r   r   r   r   r&   r   r   r   Úsentry_sdk._typesr   r   r   r   r   r   r    rz   r!   r[   ÚImportErrorr-   r%   rˆ   r{   rc   r«   rZ   ÚBaseExceptionÚboolrq   rI   r2   r0   ú<module>rÆ      sq  ðØ Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð BÐ AÐ AÐ AÐ AÐ AØ =Ð =Ð =Ð =Ð =Ð =Ø JÐ JÐ JÐ JÐ JÐ JØ OÐ OÐ OÐ OÐ OÐ OØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ø#Ð#Ð#Ð#Ð#Ð#Ø4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4à:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:à7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø<Ð<Ð<Ð<Ð<Ð<ð/ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ðð ð ð ð ð ð øð ð /ð /ð /Ø
ˆ,Ð-Ñ
.Ô
.Ð.ð/øøøð /Ð ðu5ð u5ð u5ð u5ð u5˜ñ u5ô u5ð u5ðp#ð #ð #ð #ð #Ð-ñ #ô #ð #ð2°Cð ¸Dð ð ð ð ð&ØðØ'*ðØ5:ðà	ðð ð ð ð6Ø	ðØ*ðØ9Lðàðð ð ð ð/ -ð /¸$ð /À4ð /ð /ð /ð /ð /ð /s   Á:B ÂB"