§
    xÅj±3  ã                   óD  — 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Zd dlm	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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$m%Z% d dl&m'Z'm(Z( 	 d dl)Z)n# e*$ r dZ)Y nw xY w	 d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 	 d dl8m9Z9 n%# e*$ r	 d dl:m9Z9 Y nw xY w# e*$ r  ed¦  «        ‚w xY wdZ; G d„ de¦  «        Z<d.d„Z=d.d„Z>ddde?ddddfd„Z@d/d$„ZA	 	 	 	 	 	 	 	 d0d'„ZB	 	 	 	 	 	 	 	 d1d+„ZCd2d-„ZDdS )3é    N)Úwraps)ÚTYPE_CHECKING)ÚSPANDATA)Ú0_apply_data_collection_filtering_to_query_string)ÚDidNotEnableÚIntegration)Ú_filter_headers)ÚSentryAsgiMiddleware)Úshould_send_default_pii)ÚSOURCE_FOR_STYLE)ÚStreamedSpanÚget_current_span)Úhas_span_streaming_enabled)Úcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚhas_data_collection_enabledÚ	parse_url)ÚAnyÚUnion)ÚEventÚEventProcessor)ÚQuartÚRequestÚhas_request_contextÚhas_websocket_contextÚrequestÚ	websocket)Úgot_background_exceptionÚgot_request_exceptionÚgot_websocket_exceptionÚrequest_startedÚwebsocket_started)ÚScaffoldzQuart is not installed)ÚendpointÚurlc                   ó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 )ÚQuartIntegrationÚquartz
auto.http.Ú r%   Útransaction_styleÚreturnNc                 ó\   — |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     úNC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/quart.pyÚ__init__zQuartIntegration.__init__F   sJ   € ØÕ$<Ð<Ð<Ý�*à$Ð$Ð$Õ&>Ð&>Ð&>ð@ñô ð ð "3ˆÔÐÐó    c                  ó8  — t          j        t          ¦  «         t          j        t          ¦  «         t	          j        t
          ¦  «         t          j        t
          ¦  «         t          j        t
          ¦  «         t          ¦   «          t          ¦   «          d S ©N)
r"   ÚconnectÚ_request_websocket_startedr#   r   Ú_capture_exceptionr    r!   Úpatch_asgi_appÚpatch_scaffold_route© r4   r2   Ú
setup_oncezQuartIntegration.setup_onceN   sz   € åÔÕ :Ñ;Ô;Ð;ÝÔ!Õ"<Ñ=Ô=Ð=Ý Ô(Õ);Ñ<Ô<Ð<ÝÔ%Õ&8Ñ9Ô9Ð9ÝÔ'Õ(:Ñ;Ô;Ð;åÑÔÐÝÑÔÐÐÐr4   )r%   ©r,   N)
Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginr+   Ústrr3   Ústaticmethodr=   r<   r4   r2   r(   r(   @   ss   € € € € € Ø€JØ&˜*Ð&Ð&€FàÐð3ð 3¨#ð 3¸tð 3ð 3ð 3ð 3ð ðð ð ñ „\ðð ð r4   r(   r,   c                  óX   ‡— t           j        Š	 	 	 	 	 	 	 	 	 	 dˆfd„} | t           _        d S )	Nr1   r   ÚscopeÚreceiveÚsendr,   c              “   óî   •‡ K  — t          j        ¦   «                              t          ¦  «        € ‰‰ |||¦  «        ƒ d {V —†S t	          ˆˆ fd„t          j        d¬¦  «        } ||||¦  «        ƒ d {V —†S )Nc                  ó   •—  ‰‰g| ¢R i |¤ŽS r6   r<   )ÚaÚkwÚold_appr1   s     €€r2   ú<lambda>zApatch_asgi_app.<locals>.sentry_patched_asgi_app.<locals>.<lambda>d   s!   ø€ ˜W˜W TÐ4¨AÐ4Ð4Ð4°Ð4Ð4€ r4   é   )Úspan_originÚasgi_version)Ú
sentry_sdkÚ
get_clientÚget_integrationr(   r
   rC   )r1   rG   rH   rI   Ú
middlewarerN   s   `    €r2   Úsentry_patched_asgi_appz/patch_asgi_app.<locals>.sentry_patched_asgi_app]   s¤   øøè è € õ Ô Ñ"Ô"×2Ò2Õ3CÑDÔDÐLØ ˜  u¨g°tÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<å)Ø4Ð4Ð4Ð4Ð4Ý(Ô/Øð
ñ 
ô 
ˆ
ð
  �Z  w°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r4   )
r1   r   rG   r   rH   r   rI   r   r,   r   )r   Ú__call__)rW   rN   s    @r2   r:   r:   Z   s]   ø€ ÝŒn€Gð6Øð6Ø!ð6Ø,1ð6Ø9>ð6à	ð6ð 6ð 6ð 6ð 6ð 6ð -…E„N€N€Nr4   c                  óš   ‡‡— t           j        dk    rt          j        Šnt          j        Št
          j        Šdˆˆfd„} | t
          _        d S )N)rP   é   Úargsr   Úkwargsr,   c                  ó(   •‡—  ‰| i |¤ŽŠdˆˆfd„}|S )NÚold_funcr   r,   c                 óÜ   •‡ — t          j        ‰ ¦  «        rL ‰‰ ¦  «        sAt          ‰ ¦  «        t          t          ‰ ¦  «        dˆ fd„¦   «         ¦   «         } ‰|¦  «        S  ‰‰ ¦  «        S )Nr[   r   r\   r,   c                  ó¢  •— t          j        ¦   «         }t          |j        ¦  «        r:t	          ¦   «         }|�)t          |d¦  «        r|j                             ¦   «          n3t          j        ¦   «         }|j	        �|j	         
                    ¦   «          t          j        ¦   «         }|j        �|j                             ¦   «           ‰| i |¤ŽS )NÚ_segment)rS   rT   r   Úoptionsr   Úhasattrra   Ú_update_active_threadÚget_current_scopeÚtransactionÚupdate_active_threadÚget_isolation_scopeÚprofileÚupdate_active_thread_id)r[   r\   ÚclientÚspanÚcurrent_scopeÚsentry_scoper^   s         €r2   Ú_sentry_funczTpatch_scaffold_route.<locals>._sentry_route.<locals>.decorator.<locals>._sentry_func|   sÈ   ø€ õ (Ô2Ñ4Ô4�FÝ1°&´.ÑAÔAð MÝ/Ñ1Ô1˜ØÐ+µ¸¸jÑ0IÔ0IÐ+Ø œM×?Ò?ÑAÔAÐAøå(2Ô(DÑ(FÔ(F˜Ø(Ô4Ð@Ø)Ô5×JÒJÑLÔLÐLå#-Ô#AÑ#CÔ#C�LØ#Ô+Ð7Ø$Ô,×DÒDÑFÔFÐFà#˜8 TÐ4¨VÐ4Ð4Ð4r4   ©r[   r   r\   r   r,   r   )ÚinspectÚ
isfunctionr   r   r(   )r^   ro   ÚiscoroutinefunctionÚold_decorators   ` €€r2   Ú	decoratorz>patch_scaffold_route.<locals>._sentry_route.<locals>.decoratory   s‘   øø€ ÝÔ! (Ñ+Ô+ð 3Ð4GÐ4GÈÑ4QÔ4Qð 3å�x‘”Ý+Õ,<¸hÑGÔGð5ð 5ð 5ð 5ð 5ñ HÔGñ !”ð5ð" %�} \Ñ2Ô2Ð2à �= Ñ*Ô*Ð*r4   )r^   r   r,   r   r<   )r[   r\   ru   rt   rs   Ú	old_routes      @€€r2   Ú_sentry_routez+patch_scaffold_route.<locals>._sentry_routev   sC   øø€ Ø!˜	 4Ð2¨6Ð2Ð2ˆð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð4 Ðr4   rp   )ÚsysÚversion_inforq   rs   Úasyncior$   Úroute)rw   rs   rv   s    @@r2   r;   r;   m   s^   øø€ å
Ô˜7Ò"Ð"Ý%Ô9ÐÐå%Ô9Ðå”€Iðð ð ð ð ð ð ð> #…H„N€N€Nr4   rG   zsentry_sdk.Scoper+   r   r   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)N)r&   r%   )ÚnameÚsource)Úurl_ruleÚruler%   r   rS   rT   rb   ÚSEGMENT_SOURCE_FOR_STYLEÚTRANSACTION_SOURCE_FOR_STYLEÚset_transaction_nameÚ	Exception)rG   r+   r   Úname_for_styler~   s        r2   Ú _set_transaction_name_and_sourcer†   ˜   s·   € ðàÔ#Ô(ØÔ(Ô1ð
ð 
ˆõ *­*Ô*?Ñ*AÔ*AÔ*IÑJÔJðAÕ$Ð%6Ô7Ð7å-Ð.?Ô@ð 	ð 	×"Ò"ØÐ 1Ô2Øð 	#ñ 	
ô 	
ð 	
ð 	
ð 	
øõ ð ð ð Øˆˆðøøøs   ‚A5A9 Á9
BÂBÚappr   r\   r   c              ‹   ót  K  — t          j        ¦   «                              t          ¦  «        }|€d S t	          ¦   «         rt          j        ¦   «         }t          ¦   «         rt          j        ¦   «         }d }	 t
          j	        j
        }n# t          $ r Y nw xY wt          j        ¦   «         j        }|�"|� |                     t          j        |¦  «         t#          t          j        ¦   «         |j        |¦  «         t          j        ¦   «         }t)          t          j        ¦   «         j        ¦  «        �rÝt-          ¦   «         }t/          |¦  «        t0          u �r¸|j        }|                     d|j        ¦  «         i }	t7          t9          |j        ¦  «        d¬¦  «                             ¦   «         D ]\  }
}||	d|
                     ¦   «         › �<   Œ |                      |	¦  «         t          j        ¦   «         j        }d }tC          |¦  «        �r#|j"         #                    dd¬¦  «        }|r5tI          ||d         d	         ¬
¦  «        }|r|                     d|¦  «         tK          |j&        ¦  «        }|                     d|r|j&        › d|› �n|j&        ¦  «         |d         d         r„i }tO          |j(        ¦  «        dk    r1|                     d|j(        d         ¦  «         |j(        d         |d<   tS          ¦   «         }|r||d<   |r"|j*        pi }| +                    i |¥|¥¦  «         nÝtY          ¦   «         rÏ|                     d|j&        ¦  «         |                     d|j"         #                    dd¬¦  «        ¦  «         i }tO          |j(        ¦  «        dk    r1|                     d|j(        d         ¦  «         |j(        d         |d<   tS          ¦   «         }|r||d<   |r"|j*        pi }| +                    i |¥|¥¦  «         t[          | ||¦  «        }| .                    |¦  «         d S )Nzhttp.request.methodF)Úuse_annotated_valuezhttp.request.header.zutf-8Úreplace)ÚerrorsÚdata_collectionÚurl_query_params)Úquery_stringÚ	behaviourz	url.queryzurl.fullú?Ú	user_infoé   zclient.addressr   Ú
ip_addressÚid)/rS   rT   rU   r(   r   r   Ú_get_current_objectr   r   r   r€   r„   re   Ú_server_segment_spanÚset_attributer   Ú
HTTP_ROUTEr†   r+   rh   r   rb   r   Útyper   ra   Úmethodr	   ÚdictÚheadersÚitemsÚlowerÚset_attributesr   rŽ   Údecoder   r   r&   ÚlenÚaccess_routeÚ_get_current_user_id_from_quartÚ_userÚset_userr   Ú_make_request_event_processorÚadd_event_processor)r‡   r\   ÚintegrationÚrequest_websocketÚ
route_pathÚserver_spanrG   Úcurrent_spanÚsegmentÚheader_attributesÚheaderÚheader_valueÚclient_optionsÚfiltered_query_stringrŽ   Ú
parsed_urlÚuser_propertiesÚcurrent_user_idÚexisting_user_propertiesÚevt_processors                       r2   r8   r8   ¯   sÞ  è è € ÝÔ'Ñ)Ô)×9Ò9Õ:JÑKÔK€KØÐØˆåÑÔð :Ý#Ô7Ñ9Ô9ÐÝÑÔð <Ý%Ô9Ñ;Ô;Ðà€JðÝÔ%Ô*ˆ
ˆ
øÝð ð ð Øˆðøøøõ Ô.Ñ0Ô0ÔE€KØÐ :Ð#9Ø×!Ò!¥(Ô"5°zÑBÔBÐBõ %ÝÔ$Ñ&Ô&¨Ô(EÐGXñô ð õ Ô*Ñ,Ô,€Eå!¥*Ô"7Ñ"9Ô"9Ô"AÑBÔBñ UTÝ'Ñ)Ô)ˆÝ�ÑÔ¥Ð-Ñ-Ø"Ô+ˆGà×!Ò!Ð"7Ð9JÔ9QÑRÔRÐRØ24Ðå(7ÝÐ&Ô.Ñ/Ô/ÀUð)ñ )ô )çŠe‰gŒgðð Ñ$�˜ð !ð "Ð"I¸¿º¹¼Ð"IÐ"IÑJÐJð ×"Ò"Ð#4Ñ5Ô5Ð5å'Ô2Ñ4Ô4Ô<ˆNØ$(Ð!Ý*¨>Ñ:Ô:ñ BTØ0Ô=×DÒDØ Ið  Eñ  ô  �ð  ð åHØ)5Ø&4Ð5FÔ&GØ 2ô'ðñ ô ð *ð -ð Ø×-Ò-Ø'Ø1ñô ð õ
 'Ð'8Ô'<Ñ=Ô=�
Ø×%Ò%Øà,ð(�z”~Ð?Ð?Ð(=Ð?Ð?Ð?à#œñ	ô ð ð "Ð"3Ô4°[ÔAð XØ&(�OåÐ,Ô9Ñ:Ô:¸aÒ?Ð?Ø×-Ò-Ø,Ð.?Ô.LÈQÔ.Oñô ð ð 9JÔ8VØô9˜¨Ñ5õ 'FÑ&GÔ&G�OØ&ð @Ø0?˜¨Ñ-à&ð XØ38´;Ð3DÀ"Ð0ØŸšÐ'VÐ*BÐ'VÀoÐ'VÑWÔWÐWøå(Ñ*Ô*ð TØ×%Ò% jÐ2CÔ2GÑHÔHÐHØ×%Ò%ØØ%Ô2×9Ò9¸'È)Ð9ÑTÔTñô ð ð
 #%�ÝÐ(Ô5Ñ6Ô6¸!Ò;Ð;Ø×)Ò)Ø(Ð*;Ô*HÈÔ*Kñô ð ð 5FÔ4RÐSTÔ4U�O LÑ1å"AÑ"CÔ"C�Ø"ð <Ø,;�O DÑ)à"ð TØ/4¬{Ð/@¸bÐ,Ø—N’NÐ#RÐ&>Ð#RÀ/Ð#RÑSÔSÐSå1°#Ð7HÈ+ÑVÔV€MØ	×Ò˜mÑ,Ô,Ð,Ð,Ð,s   Á7B	 Â	
BÂBr¨   r   c                 ó   ‡— dˆfd„}|S )NÚeventr   Úhintúdict[str, Any]r,   c                 óè  •— ‰€| S t          ¦   «         5  |                      di ¦  «        }‰j        |d<   ‰j        |d<   ‰j        |d<   t          t          ‰j        ¦  «        ¦  «        |d<   t          j	        ¦   «         j
        }t          |¦  «        rd|d         d         rUt          ‰j        ¦  «        dk    rd	‰j        d
         i|d<   t          ¦   «         }|r|                      di ¦  «        }||d<   nct          ¦   «         rUt          ‰j        ¦  «        dk    rd	‰j        d
         i|d<   t          ¦   «         }|r|                      di ¦  «        }||d<   d d d ¦  «         n# 1 swxY w Y   | S )Nr   r&   rŽ   rš   rœ   rŒ   r‘   r’   ÚREMOTE_ADDRr   ÚenvÚuserr”   )r   Ú
setdefaultr&   rŽ   rš   r	   r›   rœ   rS   rT   rb   r   r¡   r¢   r£   r   )r¹   rº   Úrequest_infor±   rµ   r‘   r   s         €r2   Úinnerz,_make_request_event_processor.<locals>.inner)  sÏ  ø€ ð ˆ?ØˆLå(Ñ*Ô*ð 	6ð 	6ð !×+Ò+¨I°rÑ:Ô:ˆLØ")¤+ˆL˜ÑØ+2Ô+?ˆL˜Ñ(Ø%,¤^ˆL˜Ñ"Ý&5µd¸7¼?Ñ6KÔ6KÑ&LÔ&LˆL˜Ñ#å'Ô2Ñ4Ô4Ô<ˆNÝ*¨>Ñ:Ô:ð 6Ø!Ð"3Ô4°[ÔAð :Ý˜7Ô/Ñ0Ô0°AÒ5Ð5Ø/<¸gÔ>RÐSTÔ>UÐ.V˜ UÑ+å&EÑ&GÔ&G�OØ&ð :Ø$)×$4Ò$4°V¸RÑ$@Ô$@˜	Ø*9˜	 $™øå(Ñ*Ô*ð 6Ý�wÔ+Ñ,Ô,°Ò1Ð1Ø+8¸'Ô:NÈqÔ:QÐ*R�L Ñ'å"AÑ"CÔ"C�Ø"ð 6Ø %× 0Ò 0°¸Ñ <Ô <�IØ&5�I˜d‘Oð9	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð< ˆs   ”EE'Å'E+Å.E+)r¹   r   rº   r»   r,   r   r<   )r‡   r   r¨   rÂ   s    `  r2   r¦   r¦   &  s)   ø€ ð%ð %ð %ð %ð %ð %ðN €Lr4   ÚsenderÚ	exceptionú Union[ValueError, BaseException]c              ‹   óð   K  — t          j        ¦   «                              t          ¦  «        }|€d S t	          |t          j        ¦   «         j        dddœ¬¦  «        \  }}t          j        ||¬¦  «         d S )Nr)   F)r™   Úhandled)r±   Ú	mechanism)rº   )rS   rT   rU   r(   r   rb   Úcapture_event)rÃ   rÄ   r\   r¨   r¹   rº   s         r2   r9   r9   S  sƒ   è è € õ Ô'Ñ)Ô)×9Ò9Õ:JÑKÔK€KØÐØˆå&ØÝ!Ô,Ñ.Ô.Ô6Ø"¨uÐ5Ð5ðñ ô �K€Eˆ4õ Ô˜U¨Ð.Ñ.Ô.Ð.Ð.Ð.r4   ú
str | Nonec                  óv   — t           €d S t           j        €d S 	 t           j        j        S # t          $ r Y d S w xY wr6   )Ú
quart_authÚcurrent_userÚ_auth_idr„   r<   r4   r2   r£   r£   c  sN   € ÝÐØˆtåÔÐ&ØˆtðÝÔ&Ô/Ð/øÝð ð ð Øˆtˆtðøøøs   ™* ª
8·8r>   )r‡   r   r\   r   r,   N)r‡   r   r   r   r¨   r(   r,   r   )rÃ   r   rÄ   rÅ   r\   r   r,   N)r,   rÊ   )Erz   rq   rx   Ú	functoolsr   Útypingr   rS   Úsentry_sdk.constsr   Úsentry_sdk.data_collectionr   Úsentry_sdk.integrationsr   r   Ú$sentry_sdk.integrations._wsgi_commonr	   Úsentry_sdk.integrations.asgir
   Úsentry_sdk.scoper   Úsentry_sdk.tracesr   r�   r   r   Úsentry_sdk.tracingr‚   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   r   r   Úsentry_sdk._typesr   r   rÌ   ÚImportErrorr)   r   r   r   r   r   r   Úquart.signalsr   r    r!   r"   r#   Úquart.scaffoldr$   Úflask.sansio.scaffoldr/   r(   r:   r;   rD   r†   r8   r¦   r9   r£   r<   r4   r2   ú<module>rà      s  ðØ €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø WÐ WÐ WÐ WÐ WÐ WØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø @Ð @Ð @Ð @Ð @Ð @Ø =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø JÐ JÐ JÐ JÐ JÐ JØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø OÐ OÐ OÐ OÐ OÐ OØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ø!Ð!Ð!Ð!Ð!Ð!Ð!Ð!à7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ðØÐÐÐÐøØð ð ð Ø€J€J€Jðøøøð3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð3Ø+Ð+Ð+Ð+Ð+Ð+Ð+øØð 3ð 3ð 3Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð3øøøøð ð 1ð 1ð 1Ø
ˆ,Ð/Ñ
0Ô
0Ð0ð1øøøð /Ð ðð ð ð ð �{ñ ô ð ð4-ð -ð -ð -ð&(#ð (#ð (#ð (#ðVØðØ25ðØ@Iðà	ðð ð ð ð.t-ð t-ð t-ð t-ðn*Ø	ð*Ø$ð*Ø3Eð*àð*ð *ð *ð *ðZ/Øð/Ø Bð/ØNSð/à	ð/ð /ð /ð /ð 
ð 
ð 
ð 
ð 
ð 
s0   Á>B ÂBÂBÂC Â0B7 Â7CÃCÃC