Ë
    õ�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mZ d dlmZmZmZ 	 d dl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mZm Z  d dl!m"Z" d dl$m%Z% e%r.d dl$m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z2m3Z3m4Z4 d dlm5Z5 d dl6m7Z7 dZ8 G d„ de«      Z9 G d„ de«      Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z? ee9«      d„ «       Z@y# e#$ r	  ed«      ‚w xY w) é    N)ÚOP)ÚDidNotEnableÚIntegration)ÚSentryAsgiMiddleware)Úshould_send_default_pii)ÚSOURCE_FOR_STYLEÚTRANSACTION_SOURCE_ROUTE)Úensure_integration_enabledÚevent_from_exceptionÚtransaction_from_function)ÚRequestÚStarliteÚState)ÚBaseRouteHandler)ÚDefineMiddleware)Úget_plugin_for_value)Ú	HTTPRoute)ÚConnectionDataExtractorÚis_async_callableÚRef)Ú	BaseModelzStarlite is not installed)ÚTYPE_CHECKING)ÚAnyÚOptionalÚUnion)
ÚASGIAppÚHintÚHTTPReceiveMessageÚ	HTTPScopeÚMessageÚ
MiddlewareÚReceiveÚScopeÚSendÚWebSocketReceiveMessage)ÚMiddlewareProtocol)ÚEventzgeneric Starlite requestc                   ó*   — e Zd ZdZde› �Zed„ «       Zy)ÚStarliteIntegrationÚstarlitez
auto.http.c                  ó@   — t        «        t        «        t        «        y ©N)Úpatch_app_initÚpatch_middlewaresÚpatch_http_route_handle© ó    údC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/starlite.pyÚ
setup_oncezStarliteIntegration.setup_once3   s   € ô 	ÔÜÔÜÕ!r1   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginÚstaticmethodr3   r0   r1   r2   r)   r)   /   s%   „ Ø€JØ˜*˜Ð&€Fàñ"ó ñ"r1   r)   c                   ó6   ‡ — e Zd Zej                  fˆ fd„	Zˆ xZS )ÚSentryStarliteASGIMiddlewarec                 ó.   •— t         ‰| �  |ddd|¬«       y )NFÚendpointÚasgi)ÚappÚunsafe_context_dataÚtransaction_styleÚmechanism_typeÚspan_origin)ÚsuperÚ__init__)Úselfr?   rC   Ú	__class__s      €r2   rE   z%SentryStarliteASGIMiddleware.__init__<   s$   ø€ ä‰ÑØØ %Ø(Ø!Ø#ð 	õ 	
r1   )r4   r5   r6   r)   r8   rE   Ú__classcell__)rG   s   @r2   r;   r;   ;   s   ø„ Ø(;×(BÑ(B÷ 
ñ 
r1   r;   c                  ól   ‡— t         j                  Št        t        ‰«      ˆfd„«       } | t         _        y)aŠ  
    Replaces the Starlite class's `__init__` function in order to inject `after_exception` handlers and set the
    `SentryStarliteASGIMiddleware` as the outmost middleware in the stack.
    See:
    - https://starlite-api.github.io/starlite/usage/0-the-starlite-app/5-application-hooks/#after-exception
    - https://starlite-api.github.io/starlite/usage/7-middleware/0-middleware-intro/
    c                 ó  •— |j                  dg «      }|j                  t        gt        |t        «      r|n|g¢¬«       t
        j                  t
        _        |j                  d«      xs g }t
        g|¢|d<    ‰| g|¢­i |¤Ž y )NÚafter_exception)rK   Ú
middleware)	ÚpopÚupdateÚexception_handlerÚ
isinstanceÚlistr;   Ú
_run_asgi3Ú__call__Úget)rF   ÚargsÚkwargsrK   rL   Úold__init__s        €r2   Úinjection_wrapperz)patch_app_init.<locals>.injection_wrapperR   s”   ø€ ð !Ÿ*™*Ð%6¸Ó;ˆØ�‰ä!ðô " /´4Ô8ñ $à)Ð*ðð 	ô 		
ô 1M×0WÑ0WÔ$Ô-Ø—Z‘Z Ó-Ò3°ˆ
Ü <ÐJ¸zÐJˆˆ|ÑÙ�DÐ*˜4Ò* 6Ó*r1   N)r   rE   r
   r)   )rX   rW   s    @r2   r-   r-   G   s5   ø€ ô ×#Ñ#€KäÔ 3°[ÓAó+ó Bð+ð& *„HÕr1   c                  ól   ‡— t         j                  Št        t        ‰«      ˆfd„«       } | t         _        y )Nc                 óL   •—  ‰| «      D �cg c]  }t        |«      ‘Œ c}S c c}w r,   )Úenable_span_for_middleware)rF   rL   Úold_resolve_middleware_stacks     €r2   Úresolve_middleware_wrapperz5patch_middlewares.<locals>.resolve_middleware_wrapperm   s/   ø€ ñ
 ;¸4Ó@ö
àô ' zÕ2ò
ð 	
ùò 
s   Œ!)r   Úresolve_middlewarer
   r)   )r]   r\   s    @r2   r.   r.   i   s7   ø€ ä#3×#FÑ#FÐ äÔ 3Ð5QÓRó
ó Sð
ð +EÔÕ'r1   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 )NrS   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Únamer8   ústarlite.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©Nr6   ra   rd   )Ú
sentry_sdkÚ
get_clientÚget_integrationr)   Ú
start_spanr   ÚMIDDLEWARE_STARLITE_RECEIVEÚgetattrÚstrr8   Úset_tag)rU   rV   ÚspanÚmiddleware_nameÚreceives      €€r2   Ú_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?r4   rr   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rf   )rg   rh   ri   r)   rj   r   ÚMIDDLEWARE_STARLITE_SENDrl   rm   r8   rn   )Úmessagero   rp   Úsends     €€r2   Ú_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£×.÷/ñ /ð /øð /ø÷/ð /ürs   rx   )rg   rh   ri   r)   rG   r4   rj   r   ÚMIDDLEWARE_STARLITEr8   rn   rl   rm   )rF   Úscoperq   rw   Úmiddleware_spanrr   Úreceive_nameÚreceive_patchedÚnew_receiverx   Ú	send_nameÚsend_patchedÚnew_sendrp   Úold_calls     ``         @€r2   Ú_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)rƒ   )Úhasattrr;   rP   r   rL   rS   r4   )rL   rƒ   Únot_yet_patchedr‚   s      @r2   r[   r[   x   s“   ø€ ô �J 
Ô+ØÔ5Ñ5àÐä�*Ô.Ô/Ø×(Ñ(×1Ñ1‰à×&Ñ&ˆô/Fðb ×'Ñ'Ð/DÐD€OáÜ�jÔ"2Ô3Ø->ˆJ×!Ñ!Ô*ð Ðð #4ˆJÔàÐr1   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?   )rz   rq   rw   T)Ú
parse_bodyÚparse_queryÚbodyc                 óæ  •— ‰	j                  d«      }| j                  di «      }t        ‰	j                  dd«      «      |d<   t        «       r‰d   |d<   ‰�‰|d<   d }|j                  �|j                  }n=t	        |j
                  t        «      r|j
                  j                  }n|j
                  }|�t        |«      }dt        d	   i}st        }dt        i}| j                  |||d
œ«       | S )NÚroute_handlerÚrequestÚ_bodyr1   Úcontent_lengthÚcookiesÚdataÚsourcer=   )r�   ÚtransactionÚtransaction_info)rT   Úlenr   rc   rP   Úfnr   Úvaluer   r   Ú_DEFAULT_TRANSACTION_NAMEr	   rN   )
ÚeventÚ_rŒ   Úrequest_infoÚfuncÚtx_nameÚtx_infoÚextracted_request_dataÚrequest_datarz   s
          €€€r2   Ú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Ø×!Ñ!Ð-Ø'×,Ñ,‘Ü˜M×,Ñ,¬cÔ2Ø$×'Ñ'×-Ñ-‘à$×'Ñ'�ØÐÜ3°DÓ9�àÔ!1°*Ñ!=Ð>ˆGáÜ3�Ø#Ô%=Ð>�à�L‰Là+Ø#*Ø(/ñôð ˆLr1   )rg   rh   ri   r)   Úget_isolation_scopeÚrequest_classr   rM   r7   Ú_nameÚadd_event_processor)rF   rz   rq   rw   Úsentry_scoper�   rŠ   r¡   rŸ   r    Ú
old_handles    `      @@€r2   Úhandle_wrapperz/patch_http_route_handle.<locals>.handle_wrapperÅ   sæ   ûè ø€ ä× Ñ Ó"×2Ñ2Ô3FÓGÐOÙ# D¨%°¸$Ó?×?Ð?ä!×5Ñ5Ó7ˆØ˜‘,×,Ñ,Ø ¨tð -ó 
ˆð"
Ô!8Ø¨ô"
à
ó"Ðð &×)Ñ)¨&Ó1ˆà!—zˆö"	ôH 1×;Ñ;ˆÔØ×(Ñ(¨Ô9á  e¨W°dÓ;×;Ð;ði @øð "øðR <ús4   †6C ¼C½AC ÂCÂ?C ÃCÃC ÃC ÃC )r   Úhandle)r¨   r§   s    @r2   r/   r/   Á   s   ø€ ä×!Ñ!€Jô7<ðr &„IÕr1   c                 ó.  — | j                  d«      }|sy t        |t        «      r|S t        |t        «      r|j                  «       S t	        |d«      r|j                  «       S t        |«      }|r&t        |j                  «      s|j                  |«      S y )NÚuserÚasdict)	rT   rP   Údictr   r„   r¬   r   r   Úto_dict)rz   Ú
scope_userÚplugins      r2   Úretrieve_user_from_scoper±     s�   € à—‘˜6Ó"€JÙØÜ�*œdÔ#ØÐÜ�*œiÔ(Ø�‰Ó Ð Üˆz˜8Ô$Ø× Ñ Ó"Ð"ä! *Ó-€FÙÔ'¨¯©Ô7Ø�~‰~˜jÓ)Ð)àr1   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±   rP   r­   rg   r¢   Úset_userr   rh   Úoptionsr)   r7   Úcapture_event)Úexcrz   rš   Ú	user_infor¦   r™   r·   s          r2   rO   rO     s„   € ð €IÜÔ Ü,¨UÓ3ˆ	Ù”Z 	¬4Ô0Ü!×5Ñ5Ó7ˆØ×Ñ˜iÔ(ä&ØÜ!×,Ñ,Ó.×6Ñ6Ü.×9Ñ9ÀeÑLô�K€Eˆ4ô ×Ñ˜U¨Ö.r1   )Arg   Úsentry_sdk.constsr   Úsentry_sdk.integrationsr   r   Úsentry_sdk.integrations.asgir   Úsentry_sdk.scoper   Úsentry_sdk.tracingr   r	   Úsentry_sdk.utilsr
   r   r   r*   r   r   r   Ústarlite.handlers.baser   Ústarlite.middlewarer   Ústarlite.plugins.baser   Ústarlite.routes.httpr   Ústarlite.utilsr   r   r   Úpydanticr   ÚImportErrorÚtypingr   r   r   r   Ústarlite.typesr   r   r   r   r    r!   r"   r#   ÚStarliteScoper$   r%   r&   Úsentry_sdk._typesr'   r˜   r)   r;   r-   r.   r[   r/   r±   rO   r0   r1   r2   ú<module>rÎ      sÝ   ðÛ Ý  ß =Ý =Ý 4ß I÷ñ ð	4ß1Ñ1Ý7Ý4Ý:Ý.ßNÑNÝ"õ !áß+Ñ+÷÷ ÷ õ ,Ý'ð 7Ð ô	"˜+ô 	"ô	
Ð#7ô 	
ò*òDEòFòR=&ò@ñ& Ð/Ó0ñ/ó 1ñ/øðA ò 4Ù
Ð2Ó
3Ð3ð4ús   ²2C ÃC