Ë
    õ�Dj´*  ã                   ó²  — 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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 d dlmZ d dlmZ d dlm Z  e r2d dlm!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z-m.Z.m/Z/ d dlm0Z0 d dl1m2Z2m3Z3 dZ4 G d„ de«      Z5 G d„ de«      Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z; ee5«      d„ «       Z<y# e$ r	  ed«      ‚w xY w) é    N)ÚOP)ÚDidNotEnableÚIntegration)ÚSentryAsgiMiddleware)Úignore_logger)Úshould_send_default_pii)ÚSOURCE_FOR_STYLEÚTRANSACTION_SOURCE_ROUTE)Úensure_integration_enabledÚevent_from_exceptionÚtransaction_from_function)ÚRequestÚLitestar)ÚBaseRouteHandler)ÚDefineMiddleware)Ú	HTTPRoute)ÚConnectionDataExtractorzLitestar is not installed)ÚTYPE_CHECKING)ÚAnyÚOptionalÚUnion)ÚASGIApp)ÚHTTPReceiveMessageÚ	HTTPScopeÚMessageÚ
MiddlewareÚReceiveÚScopeÚSendÚWebSocketReceiveMessage)ÚMiddlewareProtocol)ÚEventÚHintzgeneric Litestar requestc                   ó*   — e Zd ZdZde› �Zed„ «       Zy)ÚLitestarIntegrationÚlitestarz
auto.http.c                  óV   — t        «        t        «        t        «        t        d«       y )Nr&   )Úpatch_app_initÚpatch_middlewaresÚpatch_http_route_handler   © ó    údC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/litestar.pyÚ
setup_oncezLitestarIntegration.setup_once0   s    € ô 	ÔÜÔÜÔ!ô 	�jÕ!r,   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginÚstaticmethodr.   r+   r,   r-   r%   r%   ,   s%   „ Ø€JØ˜*˜Ð&€Fàñ"ó ñ"r,   r%   c                   ó6   ‡ — e Zd Zej                  fˆ fd„	Zˆ xZS )ÚSentryLitestarASGIMiddlewarec                 ó.   •— t         ‰| �  |ddd|¬«       y )NFÚendpointÚasgi)ÚappÚunsafe_context_dataÚtransaction_styleÚmechanism_typeÚspan_origin)ÚsuperÚ__init__)Úselfr:   r>   Ú	__class__s      €r-   r@   z%SentryLitestarASGIMiddleware.__init__C   s&   ø€ ô 	‰ÑØØ %Ø(Ø!Ø#ð 	õ 	
r,   )r/   r0   r1   r%   r3   r@   Ú__classcell__)rB   s   @r-   r6   r6   B   s   ø„ Ø(;×(BÑ(B÷ 	
ñ 	
r,   r6   c                  ól   ‡— t         j                  Št        t        ‰«      ˆfd„«       } | t         _        y)a\  
    Replaces the Litestar class's `__init__` function in order to inject `after_exception` handlers and set the
    `SentryLitestarASGIMiddleware` as the outmost middleware in the stack.
    See:
    - https://docs.litestar.dev/2/usage/applications.html#after-exception
    - https://docs.litestar.dev/2/usage/middleware/using-middleware.html
    c                 óÐ   •— t         g|j                  d«      xs g ¢|d<   t        j                  t        _        |j                  d«      xs g }t        g|¢|d<    ‰| g|¢­i |¤Ž y )NÚafter_exceptionÚ
middleware)Úexception_handlerÚgetr6   Ú
_run_asgi3Ú__call__)rA   ÚargsÚkwargsrG   Úold__init__s       €r-   Úinjection_wrapperz)patch_app_init.<locals>.injection_wrapperZ   su   ø€ ô ð%
à�j‰jÐ*Ó+Ò1¨rð%
ˆÐ Ñ!ô
 1M×0WÑ0WÔ$Ô-Ø—Z‘Z Ó-Ò3°ˆ
Ü <ÐJ¸zÐJˆˆ|ÑÙ�DÐ*˜4Ò* 6Ó*r,   N)r   r@   r   r%   )rO   rN   s    @r-   r(   r(   O   s5   ø€ ô ×#Ñ#€KäÔ 3°[ÓAó
+ó Bð
+ð *„HÕr,   c                  ól   ‡— t         j                  Št        t        ‰«      ˆfd„«       } | t         _        y )Nc                 óL   •—  ‰| «      D �cg c]  }t        |«      ‘Œ c}S c c}w )N)Úenable_span_for_middleware)rA   rG   Úold_resolve_middleware_stacks     €r-   Úresolve_middleware_wrapperz5patch_middlewares.<locals>.resolve_middleware_wrappern   s/   ø€ ñ
 ;¸4Ó@ö
àô ' zÕ2ò
ð 	
ùò 
s   Œ!)r   Úresolve_middlewarer   r%   )rT   rS   s    @r-   r)   r)   j   s7   ø€ ä#3×#FÑ#FÐ äÔ 3Ð5QÓRó
ó Sð
ð +EÔÕ'r,   c                 ó  ‡— t        | d«      r| t        u r| S t        | t        «      r| j                  j
                  Šn| j
                  Šˆfd„}‰j                  dv}|r*t        | t        «      r|| j                  _        | S || _        | S )NrK   c              “   ó4  •‡‡‡K  — t        j                  «       j                  t        «      € ‰| |‰‰«      ƒ d {  –—† S | j                  j
                  Št        j                  t        j                  ‰t        j                  ¬«      5 }|j                  d‰«       ˆˆfd„}t        ‰dt        ‰«      «      }|dk(  }|s|n‰}ˆˆfd„}	t        ‰dt        ‰«      «      }
|
dk(  }|s|	n‰} ‰| |||«      ƒ d {  –—† cd d d «       S 7 ŒË7 Œ# 1 sw Y   y xY w­w)N©ÚopÚnamer3   úlitestar.middleware_namec            
   Ÿ   ó‚  •K  — t        j                  «       j                  t        «      € ‰| i |¤Žƒ d {  –—† S t        j                  t
        j                  t        ‰dt        ‰«      «      t        j                  ¬«      5 }|j                  d‰«        ‰| i |¤Žƒ d {  –—† cd d d «       S 7 Œx7 Œ# 1 sw Y   y xY w­w©Nr1   rX   r[   )Ú
sentry_sdkÚ
get_clientÚget_integrationr%   Ú
start_spanr   ÚMIDDLEWARE_LITESTAR_RECEIVEÚgetattrÚstrr3   Úset_tag)rL   rM   ÚspanÚmiddleware_nameÚreceives      €€r-   Ú_sentry_receivezNenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive”   s®   øè ø€ ä×(Ñ(Ó*×:Ñ:Ô;NÓOÐWÙ!(¨$Ð!9°&Ñ!9×9Ð9Ü×*Ñ*Ü×5Ñ5Ü  ¨.¼#¸g»,ÓGÜ.×5Ñ5ôð :ð Ø—L‘LÐ!;¸_ÔMÙ!(¨$Ð!9°&Ñ!9×9÷:ñ :ð :øð :ø÷:ð :üó:   ƒ3B?¶B/·AB?ÂB3Â!B1Â"B3Â%B?Â1B3Â3B<Â8B?r/   ri   c           
   “   ó‚  •K  — t        j                  «       j                  t        «      € ‰| «      ƒ d {  –—† S t        j                  t
        j                  t        ‰dt        ‰«      «      t        j                  ¬«      5 }|j                  d‰«        ‰| «      ƒ d {  –—† cd d d «       S 7 Œx7 Œ# 1 sw Y   y xY w­wr]   )r^   r_   r`   r%   ra   r   ÚMIDDLEWARE_LITESTAR_SENDrc   rd   r3   re   )Úmessagerf   rg   Úsends     €€r-   Ú_sentry_sendzKenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send¥   s¢   øè ø€ ä×(Ñ(Ó*×:Ñ:Ô;NÓOÐWÙ!% g£×.Ð.Ü×*Ñ*Ü×2Ñ2Ü   ~´s¸4³yÓAÜ.×5Ñ5ôð /ð Ø—L‘LÐ!;¸_ÔMÙ!% g£×.÷/ñ /ð /øð /ø÷/ð /ürj   ro   )r^   r_   r`   r%   rB   r/   ra   r   ÚMIDDLEWARE_LITESTARr3   re   rc   rd   )rA   Úscoperh   rn   Úmiddleware_spanri   Úreceive_nameÚreceive_patchedÚnew_receivero   Ú	send_nameÚsend_patchedÚnew_sendrg   Úold_calls     ``         @€r-   Ú_create_span_callz5enable_span_for_middleware.<locals>._create_span_call†   s  ûè ø€ ä× Ñ Ó"×2Ñ2Ô3FÓGÐOÙ! $¨¨w¸Ó=×=Ð=àŸ.™.×1Ñ1ˆÜ×"Ñ"Ü×%Ñ%Ø Ü&×-Ñ-ô
ð )	Fð Ø×#Ñ#Ð$>ÀÔPõ
:ô # 7¨J¼¸G»ÓEˆLØ*Ð.?Ñ?ˆOÙ1@™/ÀgˆKõ
/ô    j´#°d³)Ó<ˆIØ$¨Ñ6ˆLÙ+7‘|¸TˆHá! $¨¨{¸HÓE×E÷S)	Fñ )	Fð >øðX Fø÷S)	Fð )	Füs;   †6D¼D½ADÂA/DÃ:D
Ã;DÃ>DÄ
DÄDÄD)rz   )Úhasattrr6   Ú
isinstancer   rG   rK   r/   )rG   rz   Únot_yet_patchedry   s      @r-   rR   rR   y   s“   ø€ ô �J 
Ô+ØÔ5Ñ5àÐä�*Ô.Ô/Ø×(Ñ(×1Ñ1‰à×&Ñ&ˆô/Fðb ×'Ñ'Ð/DÐD€OáÜ�jÔ"2Ô3Ø->ˆJ×!Ñ!Ô*ð Ðð #4ˆJÔàÐr,   c                  óF   ‡— t         j                  Šˆfd„} | t         _        y )Nc              “   óÄ  •‡‡‡	K  — t        j                  «       j                  t        «      € ‰
| ‰||«      ƒ d {  –—† S t        j                  «       }‰d   j                  ‰||¬«      } t        dd¬«      |«      Š‰j                  d«      }|ƒ d {  –—† Š	ˆˆ	ˆfd„}t        j                  |_	        |j                  |«        ‰
| ‰||«      ƒ d {  –—† S 7 Œ�7 ŒF7 Œ­w)Nr:   )rq   rh   rn   T)Ú
parse_bodyÚparse_queryÚbodyc                 óÞ  •— ‰	j                  d«      }| j                  di «      }t        ‰	j                  dd«      «      |d<   t        «       r‰d   |d<   ‰�‰|d<   d }|j                  �|j                  }n9t	        |j
                  d«      r|j
                  j                  }n|j
                  }|�t        |«      }d	t        d
   i}st        }d	t        i}| j                  |||dœ«       | S )NÚroute_handlerÚrequestÚ_bodyr,   Úcontent_lengthÚcookiesÚdataÚvalueÚsourcer8   )r…   ÚtransactionÚtransaction_info)rI   Úlenr   rZ   r{   ÚfnrŠ   r   r	   Ú_DEFAULT_TRANSACTION_NAMEr
   Úupdate)
ÚeventÚ_r„   Úrequest_infoÚfuncÚtx_nameÚtx_infoÚextracted_request_dataÚrequest_datarq   s
          €€€r-   Úevent_processorzHpatch_http_route_handle.<locals>.handle_wrapper.<locals>.event_processorÖ   sý   ø€ à!ŸI™I oÓ6ˆMà Ÿ9™9 Y°Ó3ˆLÜ-0°·±¸7ÀCÓ1HÓ-IˆLÐ)Ñ*Ü&Ô(Ø*@ÀÑ*K�˜YÑ'ØÐ'Ø'3�˜VÑ$àˆDØ×!Ñ!Ð-Ø'×,Ñ,‘ä˜×)Ñ)¨7Ô3Ø$×'Ñ'×-Ñ-‘à$×'Ñ'�ØÐÜ3°DÓ9�àÔ!1°*Ñ!=Ð>ˆGáÜ3�Ø#Ô%=Ð>�à�L‰Là+Ø#*Ø(/ñôð ˆLr,   )r^   r_   r`   r%   Úget_isolation_scopeÚrequest_classr   Úpopr2   Ú_nameÚadd_event_processor)rA   rq   rh   rn   Úsentry_scoper…   r‚   rš   r˜   r™   Ú
old_handles    `      @@€r-   Úhandle_wrapperz/patch_http_route_handle.<locals>.handle_wrapperÆ   sæ   ûè ø€ ä× Ñ Ó"×2Ñ2Ô3FÓGÐOÙ# D¨%°¸$Ó?×?Ð?ä!×5Ñ5Ó7ˆØ˜‘,×,Ñ,Ø ¨tð -ó 
ˆð"
Ô!8Ø¨ô"
à
ó"Ðð &×)Ñ)¨&Ó1ˆà!—zˆö#	ôJ 1×;Ñ;ˆÔØ×(Ñ(¨Ô9á  e¨W°dÓ;×;Ð;ðk @øð "øðT <ús4   †6C ¼C½AC ÂCÂ?C ÃCÃC ÃC ÃC )r   Úhandle)r¢   r¡   s    @r-   r*   r*   Â   s   ø€ ä×!Ñ!€Jô8<ðt &„IÕr,   c                 ó‚   — | j                  d«      }t        |t        «      r|S t        |d«      r|j	                  «       S y )NÚuserÚasdict)rI   r|   Údictr{   r¦   )rq   Ú
scope_users     r-   Úretrieve_user_from_scoper©     s<   € à—‘˜6Ó"€JÜ�*œdÔ#ØÐÜˆz˜8Ô$Ø× Ñ Ó"Ð"àr,   c                 óJ  — d }t        «       rt        |«      }|r5t        |t        «      r%t	        j
                  «       }|j                  |«       t        | t	        j                  «       j                  t        j                  ddœ¬«      \  }}t	        j                  ||¬«       y )NF)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)r   r©   r|   r§   r^   r›   Úset_userr   r_   Úoptionsr%   r2   Úcapture_event)Úexcrq   Ú	user_infor    r’   r¯   s         r-   rH   rH     s„   € ð €IÜÔ Ü,¨UÓ3ˆ	Ù”Z 	¬4Ô0Ü!×5Ñ5Ó7ˆØ×Ñ˜iÔ(ä&ØÜ!×,Ñ,Ó.×6Ñ6Ü.×9Ñ9ÀeÑLô�K€Eˆ4ô ×Ñ˜U¨Ö.r,   )=r^   Úsentry_sdk.constsr   Úsentry_sdk.integrationsr   r   Úsentry_sdk.integrations.asgir   Úsentry_sdk.integrations.loggingr   Úsentry_sdk.scoper   Úsentry_sdk.tracingr	   r
   Úsentry_sdk.utilsr   r   r   r&   r   r   Úlitestar.handlers.baser   Úlitestar.middlewarer   Úlitestar.routes.httpr   Úlitestar.data_extractorsr   ÚImportErrorÚtypingr   r   r   r   Úlitestar.types.asgi_typesr   Úlitestar.typesr   r   r   r   r   r   ÚLitestarScoper   r    r!   Úsentry_sdk._typesr"   r#   r�   r%   r6   r(   r)   rR   r*   r©   rH   r+   r,   r-   ú<module>rÆ      sÔ   ðÛ Ý  ß =Ý =Ý 9Ý 4ß I÷ñ ð4ß*Ý7Ý4Ý.Ý@õ !áß+Ñ+Ý1÷	÷ 	ó 	õ 7ß-à6Ð ô"˜+ô "ô,

Ð#7ô 

ò*ò6EòFòR>&òBñ Ð/Ó0ñ/ó 1ñ/øðw ò 4Ù
Ð2Ó
3Ð3ð4ús   ¸ C ÃC