§
    xÅj\#  ã                   ó(  — 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 d dl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 d d	lmZmZmZmZmZ 	 d d
lmZ d dlm Z  n# e!$ r  ed¦  «        ‚w xY wd dl"m#Z# e#r2d 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/m0Z0 d dlm1Z1 d dlm2Z2  e3e dd¦  «        rd-d„Z4nd dl5m4Z4 dZ6 G d„ de	¦  «        Z7 ee7¦  «        d.d!„¦   «         Z8d"d#d$e9ddddfd%„Z: G d&„ d'e¦  «        Z;	 	 	 	 	 	 d/d,„Z<dS )0é    N)ÚSPANDATA)ÚDidNotEnableÚIntegration)ÚRequestExtractor)ÚSentryWsgiMiddleware)Úshould_send_default_pii)ÚSOURCE_FOR_STYLE)Úhas_span_streaming_enabled)Úcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚhas_data_collection_enabledÚreraise)ÚHTTPException)ÚRequestzPyramid not installed)ÚTYPE_CHECKING)ÚAnyÚCallableÚDictÚOptional)ÚResponse)ÚRequestCookies)Ú_FieldStorageWithFile)ÚEventÚEventProcessor)Ú_ScopedResponse)ÚExcInfoÚauthenticated_useridÚrequestr   ÚreturnúOptional[Any]c                 ó   — | j         S ©N©r   )r   s    úPC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/pyramid.pyr   r   -   s   € ØÔ+Ð+ó    r$   ©Ú
route_nameÚroute_patternc                   óJ   — e Zd ZdZde› �ZdZd
deddfd„Zedd	„¦   «         Z	dS )ÚPyramidIntegrationÚpyramidz
auto.http.Ú r(   Útransaction_styler    Nc                 ó\   — |t           vrt          d|›dt           ›d�¦  «        ‚|| _        d S )Nz%Invalid value for transaction_style: z (must be in ú))ÚTRANSACTION_STYLE_VALUESÚ
ValueErrorr.   )Úselfr.   s     r%   Ú__init__zPyramidIntegration.__init__>   sJ   € ØÕ$<Ð<Ð<Ý�*à$Ð$Ð$Õ&>Ð&>Ð&>ð@ñô ð ð "3ˆÔÐÐr&   c                  ó€  ‡‡‡— ddl m}  | j        Št          j        ‰¦  «        	 	 	 	 	 	 	 	 	 	 dˆfd„¦   «         }|| _        t          t          d¦  «        r&t          j        Š	 	 	 	 	 	 	 	 dˆfd„}|t          _        | j        j	        Št          t          ‰¦  «        	 	 	 	 	 	 	 	 dˆfd„¦   «         }|| j        _	        d S )Nr   )ÚrouterÚregistryr   r   r   ÚargsÚkwargsr    r   c                 ót  •— t          j        ¦   «         }|                     t          ¦  «        }|€ ‰
| |g|¢R i |¤ŽS d }	 |j        j        }n# t          $ r Y nw xY wt          j        ¦   «         j        }|�,|�*| 	                    t          j        |j        j        ¦  «         t          t          j        ¦   «         |j        |¦  «         t          j        ¦   «         }t          |j        ¦  «        r†t#          |j        ¦  «        r<|j        d         d         r(t%          |¦  «        }	|	r|                     d|	i¦  «         n6t)          ¦   «         r(t%          |¦  «        }	|	r|                     d|	i¦  «         |                     t-          t/          j        |¦  «        |¦  «        ¦  «          ‰
| |g|¢R i |¤ŽS )NÚdata_collectionÚ	user_infoÚid)Ú
sentry_sdkÚ
get_clientÚget_integrationr+   Úmatched_routeÚpatternÚ	ExceptionÚget_current_scopeÚ_server_segment_spanÚset_attributer   Ú
HTTP_ROUTEÚ _set_transaction_name_and_sourcer.   Úget_isolation_scoper
   Úoptionsr   r   Úset_userr   Úadd_event_processorÚ_make_event_processorÚweakrefÚref)r7   r   r8   r9   ÚclientÚintegrationÚ
route_pathÚserver_spanÚscopeÚuser_idÚold_call_views             €r%   Úsentry_patched_call_viewz?PyramidIntegration.setup_once.<locals>.sentry_patched_call_viewL   sò  ø€ õ  Ô*Ñ,Ô,ˆFØ ×0Ò0Õ1CÑDÔDˆKØÐ"Ø$�} X¨wÐH¸ÐHÐHÐHÀÐHÐHÐHàˆJðØ$Ô2Ô:�
�
øÝð ð ð Ø�ðøøøõ %Ô6Ñ8Ô8ÔMˆKØÐ&¨:Ð+AØ×)Ò)ÝÔ'¨Ô)>Ô)Fñô ð õ -ÝÔ,Ñ.Ô.°Ô0MÈwñô ð õ Ô2Ñ4Ô4ˆEå)¨&¬.Ñ9Ô9ð 	8Ý.¨v¬~Ñ>Ô>ð 8Ø”~Ð&7Ô8¸ÔEð <Ý"6°wÑ"?Ô"?˜Ø"ð <Ø!ŸNšN¨D°'¨?Ñ;Ô;Ð;øÝ,Ñ.Ô.ð 8Ý2°7Ñ;Ô;�GØð 8ØŸš¨¨g Ñ7Ô7Ð7à×%Ò%Ý%¥g¤k°'Ñ&:Ô&:¸KÑHÔHñô ð ð !�= ¨7ÐD°TÐDÐDÐD¸VÐDÐDÐDs   ÁA Á
AÁAÚinvoke_exception_viewr3   c                 óì   •—  ‰| g|¢R i |¤Ž}| j         r_t          | j         ¦  «        rK|j        dk    r@t          j        ¦   «                              t          ¦  «        	 �t          | j         ¦  «         |S )Niô  )Úexc_infoÚallÚ
status_intr>   r?   r@   r+   Ú_capture_exception)r3   r8   r9   ÚrvÚold_invoke_exception_views       €r%   Ú$sentry_patched_invoke_exception_viewzKPyramidIntegration.setup_once.<locals>.sentry_patched_invoke_exception_view}   sŒ   ø€ ð /Ð.¨tÐE°dÐEÐEÐE¸fÐEÐE�ð ”Mð6å˜DœMÑ*Ô*ð6ð œ¨Ò,Ð,Ý"Ô-Ñ/Ô/×?Ò?Õ@RÑSÔSØð õ ' t¤}Ñ5Ô5Ð5à�	r&   ÚenvironúDict[str, str]Ústart_responseúCallable[..., Any]r   c                 ón   •‡ — 	 	 	 	 	 	 d	ˆˆ fd„}t          |t          j        ¬¦  «        } |||¦  «        S )
Nra   úDict[str, Any]rc   rd   r    r   c                 ó˜   •— 	  ‰‰| |¦  «        S # t           $ r/ t          j        ¦   «         }t          |¦  «         t	          |Ž  Y d S w xY wr#   )rC   ÚsysrZ   r]   r   )ra   rc   ÚeinfoÚold_wsgi_callr3   s      €€r%   Úsentry_patched_inner_wsgi_callzgPyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call.<locals>.sentry_patched_inner_wsgi_call•   s_   ø€ ð$Ø(˜=¨¨w¸ÑGÔGÐGøÝ ð $ð $ð $ÝœL™NœN�EÝ& uÑ-Ô-Ð-Ý˜U�O�O�O�O�Oð$øøøs   ƒ �5A	ÁA	)Úspan_origin)ra   rf   rc   rd   r    r   )r   r+   Úorigin)r3   ra   rc   rk   Ú
middlewarerj   s   `    €r%   Úsentry_patched_wsgi_callz?PyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call‘   sr   øø€ ð$Ø)ð$Ø;Oð$àð$ð $ð $ð $ð $ð $ð $õ .Ø.Ý.Ô5ðñ ô ˆJð �:˜g ~Ñ6Ô6Ð6r&   )
r7   r   r   r   r8   r   r9   r   r    r   )r3   r   r8   r   r9   r   r    r   )r3   r   ra   rb   rc   rd   r    r   )r,   r6   Ú
_call_viewÚ	functoolsÚwrapsÚhasattrr   rX   ÚRouterÚ__call__r   r+   )r6   rW   r`   ro   rV   r_   rj   s       @@@r%   Ú
setup_oncezPyramidIntegration.setup_onceF   sg  øøø€ à"Ð"Ð"Ð"Ð"Ð"àÔ)ˆå	Œ˜Ñ	'Ô	'ð)	EØð)	EØ&/ð)	EØ8=ð)	EØINð)	Eàð)	Eð )	Eð )	Eð )	Eð )	Eñ 
(Ô	'ð)	EðV 5ˆÔå•7Ð3Ñ4Ô4ð 	QÝ(/Ô(EÐ%ðØðØ(-ðØ9>ðàðð ð ð ð ð ð  -Q�GÔ)àœÔ.ˆå	#Õ$6¸Ñ	FÔ	Fð	7Øð	7Ø"2ð	7ØDXð	7àð	7ð 	7ð 	7ð 	7ð 	7ñ 
GÔ	Fð	7ð& ":ˆŒÔÐÐr&   )r(   )r    N)
Ú__name__Ú
__module__Ú__qualname__Ú
identifierrm   r.   Ústrr4   Ústaticmethodrv   © r&   r%   r+   r+   8   sy   € € € € € Ø€JØ&˜*Ð&Ð&€FàÐð3ð 3¨#ð 3Àð 3ð 3ð 3ð 3ð ð^:ð ^:ð ^:ñ „\ð^:ð ^:ð ^:r&   r+   rZ   r   c                 óØ   — | d         �t          | d         t          ¦  «        rd S t          | t          j        ¦   «         j        dddœ¬¦  «        \  }}t          j        ||¬¦  «         d S )Nr   r,   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)Ú
issubclassr   r   r>   r?   rJ   Úcapture_event)rZ   Úeventrƒ   s      r%   r]   r]   ¨   sw   € à�„{Ð�j¨°!¬µmÑDÔDÐØˆå&ØÝ!Ô,Ñ.Ô.Ô6Ø$°Ð7Ð7ðñ ô �K€Eˆ4õ Ô˜U¨Ð.Ñ.Ô.Ð.Ð.Ð.r&   rT   zsentry_sdk.Scoper.   c                 ó  — 	 |j         j        |j         j        dœ}t          t	          j        ¦   «         j        ¦  «        }|rt          |         nt          |         }|  	                    ||         |¬¦  «         d S # t          $ r Y d S w xY w)Nr'   )Úsource)rA   ÚnamerB   r
   r>   r?   rJ   ÚSEGMENT_SOURCE_FOR_STYLEÚTRANSACTION_SOURCE_FOR_STYLEÚset_transaction_namerC   )rT   r.   r   Úname_for_styleÚis_span_streaming_enabledrˆ   s         r%   rH   rH   ¶   sÄ   € ðà!Ô/Ô4Ø$Ô2Ô:ð
ð 
ˆõ %?ÝÔ!Ñ#Ô#Ô+ñ%
ô %
Ð!ð
 )ðAÕ$Ð%6Ô7Ð7å-Ð.?Ô@ð 	ð
 	×"Ò"ØÐ,Ô-Øð 	#ñ 	
ô 	
ð 	
ð 	
ð 	
øõ ð ð ð Øˆˆðøøøs   ‚A7A; Á;
B	ÂB	c                   óV   — e Zd Zdef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 )ÚPyramidRequestExtractorr    c                 ó   — | j         j        S r#   )r   Úpath_url©r3   s    r%   ÚurlzPyramidRequestExtractor.urlÏ   s   € ØŒ|Ô$Ð$r&   rb   c                 ó   — | j         j        S r#   )r   ra   r“   s    r%   ÚenvzPyramidRequestExtractor.envÒ   ó   € ØŒ|Ô#Ð#r&   r   c                 ó   — | j         j        S r#   )r   Úcookiesr“   s    r%   r™   zPyramidRequestExtractor.cookiesÕ   r—   r&   c                 ó   — | j         j        S r#   )r   Útextr“   s    r%   Úraw_dataz PyramidRequestExtractor.raw_dataØ   s   € ØŒ|Ô Ð r&   c                 óR   — d„ | j         j                             ¦   «         D ¦   «         S )Nc                 ó<   — i | ]\  }}t          |d d¦  «        °||“ŒS ©ÚfilenameN©Úgetattr©Ú.0ÚkeyÚvalues      r%   ú
<dictcomp>z0PyramidRequestExtractor.form.<locals>.<dictcomp>Ü   s@   € ð 
ð 
ð 
á��UÝ˜5 *¨dÑ3Ô3ð
Ø�ð
ð 
ð 
r&   ©r   ÚPOSTÚitemsr“   s    r%   ÚformzPyramidRequestExtractor.formÛ   ó4   € ð
ð 
à"œlÔ/×5Ò5Ñ7Ô7ð
ñ 
ô 
ð 	
r&   ú Dict[str, _FieldStorageWithFile]c                 óR   — d„ | j         j                             ¦   «         D ¦   «         S )Nc                 ó<   — i | ]\  }}t          |d d¦  «        ¯||“ŒS rŸ   r¡   r£   s      r%   r§   z1PyramidRequestExtractor.files.<locals>.<dictcomp>ã   s@   € ð 
ð 
ð 
á��UÝ�u˜j¨$Ñ/Ô/ð
Ø�ð
ð 
ð 
r&   r¨   r“   s    r%   ÚfileszPyramidRequestExtractor.filesâ   r¬   r&   Úpostdatar   c                 óŠ   — |j         }	 t          j        |                     ¦   «         ¦  «        j        S # t
          $ r Y dS w xY w)Nr   )ÚfileÚosÚfstatÚfilenoÚst_sizerC   )r3   r±   r³   s      r%   Úsize_of_filez$PyramidRequestExtractor.size_of_fileé   sK   € ØŒ}ˆð	Ý”8˜DŸKšK™MœMÑ*Ô*Ô2Ð2øÝð 	ð 	ð 	Ø�1�1ð	øøøs   ‰*4 ´
AÁAN)r    rb   )r    r   )r    r­   )rw   rx   ry   r{   r”   r–   r™   rœ   r«   r°   Úintr¸   r}   r&   r%   r�   r�   Î   s½   € € € € € ð%�Sð %ð %ð %ð %ð$ð $ð $ð $ð$ð $ð $ð $ð!˜#ð !ð !ð !ð !ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðÐ%<ð Àð ð ð ð ð ð r&   r�   Úweak_requestúCallable[[], Request]rQ   r   c                 ó   ‡ — dˆ fd„}|S )Nr†   r   rƒ   rf   r    c                 ó¸  •—  ‰¦   «         }|€| S t          ¦   «         5  t          |¦  «                             | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         j        }t          |¦  «        rn|d         d         r_t          ¦   «         5  |                      di ¦  «        }|                     dt          |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   nmt          ¦   «         r_t          ¦   «         5  |                      di ¦  «        }|                     dt          |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   | S )Nr;   r<   Úuserr=   )
r   r�   Úextract_into_eventr>   r?   rJ   r   Ú
setdefaultr   r   )r†   rƒ   r   r�   r<   rº   s        €r%   Úpyramid_event_processorz6_make_event_processor.<locals>.pyramid_event_processorô   sC  ø€ Ø�,‘.”.ˆØˆ?ØˆLå(Ñ*Ô*ð 	Gð 	GÝ# GÑ,Ô,×?Ò?ÀÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gõ $Ô.Ñ0Ô0Ô8ˆÝ& ~Ñ6Ô6ð 	JØÐ/Ô0°Ô=ð NÝ0Ñ2Ô2ð Nð NØ %× 0Ò 0°¸Ñ <Ô <�IØ×(Ò(¨Õ/CÀGÑ/LÔ/LÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nøõ %Ñ&Ô&ð 	JÝ,Ñ.Ô.ð Jð JØ!×,Ò,¨V°RÑ8Ô8�	Ø×$Ò$ TÕ+?ÀÑ+HÔ+HÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð ˆs5   ž#AÁAÁAÂ:C!Ã!C%Ã(C%Ä	:EÅEÅE)r†   r   rƒ   rf   r    r   r}   )rº   rQ   rÁ   s   `  r%   rM   rM   ñ   s)   ø€ ðð ð ð ð ð ð* #Ð"r&   )r   r   r    r!   )rZ   r   r    N)rº   r»   rQ   r+   r    r   )=rq   r´   rh   rN   r>   Úsentry_sdk.constsr   Úsentry_sdk.integrationsr   r   Ú$sentry_sdk.integrations._wsgi_commonr   Úsentry_sdk.integrations.wsgir   Úsentry_sdk.scoper   Úsentry_sdk.tracesr	   rŠ   Úsentry_sdk.tracingr‹   Úsentry_sdk.tracing_utilsr
   Úsentry_sdk.utilsr   r   r   r   r   Úpyramid.httpexceptionsr   Úpyramid.requestr   ÚImportErrorÚtypingr   r   r   r   r   Úpyramid.responser   Úwebob.cookiesr   Úwebob.requestr   Úsentry_sdk._typesr   r   r   r   r¢   r   Úpyramid.securityr1   r+   r]   r{   rH   r�   rM   r}   r&   r%   ú<module>rÔ      sb  ðØ Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø €€€à Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø AÐ AÐ AÐ AÐ AÐ AØ =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø JÐ JÐ JÐ JÐ JÐ JØ OÐ OÐ OÐ OÐ OÐ OØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð0Ø4Ð4Ð4Ð4Ð4Ð4Ø'Ð'Ð'Ð'Ð'Ð'Ð'øØð 0ð 0ð 0Ø
ˆ,Ð.Ñ
/Ô
/Ð/ð0øøøð !Ð  Ð  Ð  Ð  Ð  àð 	)Ø4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4à)Ð)Ð)Ð)Ð)Ð)Ø,Ð,Ð,Ð,Ð,Ð,Ø3Ð3Ð3Ð3Ð3Ð3à7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø<Ð<Ð<Ð<Ð<Ð<Ø(Ð(Ð(Ð(Ð(Ð(ð €7ˆ7Ð*¨DÑ1Ô1ð 6ð,ð ,ð ,ð ,ð ,ð
 6Ð5Ð5Ð5Ð5Ð5ð ;Ð ðm:ð m:ð m:ð m:ð m:˜ñ m:ô m:ð m:ð` ÐÐ.Ñ/Ô/ð
/ð 
/ð 
/ñ 0Ô/ð
/ðØðØ25ðØ@Iðà	ðð ð ð ð0 ð  ð  ð  ð  Ð.ñ  ô  ð  ðF#Ø)ð#Ø8Lð#àð#ð #ð #ð #ð #ð #s   ÁA# Á#A4