Ë
    õ�DjÕ<  ã                   ó8  — d dl Z 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	 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mZ 	 d d	l mZ 	 d dlmc 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* d dl+m,Z, e,r0d dl+m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5 d dl#m6Z6 d dl7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=  ed«        G d„ de«      Z>d„ Z? G d„ de«      Z@ G d„ de@«      ZAd„ ZBd „ ZCd!„ ZDd"„ ZEd#„ ZFy# e$ r	  e	d
«      ‚w xY w# e$ r	  e	d«      ‚w xY w# e$ r dZ(dZ*Y Œ¡w xY w)$é    N©Úisawaitable)ÚOP)ÚIntegrationÚDidNotEnable)Úignore_logger)Úshould_send_default_pii)ÚTRANSACTION_SOURCE_COMPONENT)Úcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚloggerÚpackage_versionÚ_get_installed_modules)Úcached_propertyz;strawberry-graphql integration requires Python 3.8 or newer)ÚSchema)ÚSchemaExtension)Úshould_skip_tracing)Úasync_base_viewÚsync_base_viewz#strawberry-graphql is not installed)ÚSentryTracingExtensionÚSentryTracingExtensionSync)ÚTYPE_CHECKING)ÚAnyÚCallableÚ	GeneratorÚListÚOptionalÚUnion)ÚGraphQLErrorÚGraphQLResolveInfo)ÚGraphQLHTTPResponse)ÚExecutionContextÚExecutionResultÚSubscriptionExecutionResult)ÚEventÚEventProcessorzstrawberry.executionc                   ó2   — e Zd ZdZde› �Zdd„Zed„ «       Zy)ÚStrawberryIntegrationÚ
strawberryzauto.graphql.Nc                 óN   — |dvrt        dj                  |«      «      ‚|| _        y )N)NFTz6Invalid value for async_execution: "{}" (must be bool))Ú
ValueErrorÚformatÚasync_execution)Úselfr.   s     úfC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/strawberry.pyÚ__init__zStrawberryIntegration.__init__@   s3   € àÐ"5Ñ5ÜØH×OÑOØ#óóð ð
  /ˆÕó    c                  ó®   — t        d«      } | €t        dj                  | «      «      ‚| dk  rt        d«      ‚t        «        t	        «        t        «        y )Nzstrawberry-graphqlz)Unparsable strawberry-graphql version: {})r   éÑ   é   z-strawberry-graphql 0.209.5 or newer required.)r   r   r-   Ú_patch_schema_initÚ_patch_executeÚ_patch_views)Úversions    r0   Ú
setup_oncez StrawberryIntegration.setup_onceJ   sV   € ô "Ð"6Ó7ˆàˆ?ÜØ;×BÑBÀ7ÓKóð ð �[Ò ÜÐNÓOÐOäÔÜÔÜ�r2   ©N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginr1   Ústaticmethodr:   © r2   r0   r)   r)   <   s,   „ Ø€JØ˜Z˜LÐ)€Fó/ð ñó ñr2   r)   c                  óv   ‡— t         j                  Št        j                  ‰«      ˆfd„«       } | t         _        y )Nc                 ó¾  •— t        j                  «       j                  t        «      }|€ ‰| g|¢­i |¤ŽS |j	                  d«      xs g }|j
                  �|j
                  }n*t        |«      }t        j                  d|rdnd|rdnd«       |D �cg c]  }|t        t        fvr|‘Œ }}|j                  |rt        nt        «       ||d<    ‰| g|¢­i |¤ŽS c c}w )NÚ
extensionszfAssuming strawberry is running %s. If not, initialize it as StrawberryIntegration(async_execution=%s).ÚasyncÚsyncÚFalseÚTrue)Ú
sentry_sdkÚ
get_clientÚget_integrationr)   Úgetr.   Ú_guess_if_using_asyncr   ÚinfoÚStrawberrySentryAsyncExtensionÚStrawberrySentrySyncExtensionÚappendÚSentryAsyncExtensionÚSentrySyncExtension)r/   ÚargsÚkwargsÚintegrationrE   Úshould_use_async_extensionÚ	extensionÚold_schema_inits          €r0   Ú_sentry_patched_schema_initz7_patch_schema_init.<locals>._sentry_patched_schema_init`   sÿ   ø€ ô !×+Ñ+Ó-×=Ñ=Ô>SÓTˆØÐÙ" 4Ð9¨$Ò9°&Ñ9Ð9à—Z‘Z Ó-Ò3°ˆ
à×&Ñ&Ð2Ø)4×)DÑ)DÑ&ô *?¸zÓ)JÐ&ä�K‰KØxÙ5‘¸6Ù5‘¸6ôð (ö
àØÜ2Ô4QÐRñSò ð
ˆ
ð 
ð 	×ÑÙ$>Õ ÔDWô	
ð  *ˆˆ|Ñá˜tÐ5 dÒ5¨fÑ5Ð5ùò
s   ÂC)r   r1   Ú	functoolsÚwraps)r[   rZ   s    @r0   r6   r6   \   s1   ø€ ä—o‘o€Oä‡_�_�_Ó%ó#6ó &ð#6ðJ 2„F…Or2   c                   óR   — e Zd Zddœd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)rS   N©Úexecution_contextc                ó   — |r|| _         y y r;   r_   )r/   r`   s     r0   r1   zSentryAsyncExtension.__init__Š   s   € ñ Ø%6ˆDÕ"ð r2   c                 óÈ   — | j                  | j                  j                  «      }| j                  j                  r&dj	                  | j                  j                  |«      S |S )Nz{}:{})Ú
hash_queryr`   ÚqueryÚoperation_namer-   )r/   Ú
query_hashs     r0   Ú_resource_namez#SentryAsyncExtension._resource_name“   sP   € ð —_‘_ T×%;Ñ%;×%AÑ%AÓBˆ
à×!Ñ!×0Ò0Ø—>‘> $×"8Ñ"8×"GÑ"GÈÓTÐTàÐr2   c                 óf   — t        j                  |j                  d«      «      j                  «       S )Nzutf-8)ÚhashlibÚmd5ÚencodeÚ	hexdigest)r/   rd   s     r0   rc   zSentryAsyncExtension.hash_query�   s#   € ä�{‰{˜5Ÿ<™<¨Ó0Ó1×;Ñ;Ó=Ð=r2   c              #   ó^  K  — | j                   j                  | _        d}t        j                  }| j                   j
                  €d| j                   _        | j                   j
                  j                  «       j                  d«      rd}t        j                  }nE| j                   j
                  j                  «       j                  d«      rd}t        j                  }|}| j                  r|dj                  | j                  «      z  }t        j                  d| j                  |dœ¬«       t        j                  «       }|r(|j                  ||t        j                   ¬	«      | _        n+t        j$                  ||t        j                   ¬	«      | _        | j"                  j'                  d
|«       | j"                  j'                  d| j                  «       | j"                  j'                  d| j                   j
                  «       | j"                  j'                  d| j(                  «       d –— | j"                  j*                  }|rC| j                   j                  r-| j                   j                  |_        t.        |_        ||_        | j"                  j5                  «        y ­w)Nrd   Ú ÚmutationÚsubscriptionz {}zgraphql.operation)re   Úoperation_type)ÚcategoryÚdata©ÚopÚnamer@   zgraphql.operation.typezgraphql.operation.namezgraphql.documentzgraphql.resource_name)r`   re   Ú_operation_namer   ÚGRAPHQL_QUERYrd   ÚstripÚ
startswithÚGRAPHQL_MUTATIONÚGRAPHQL_SUBSCRIPTIONr-   rJ   Úadd_breadcrumbÚget_current_spanÚstart_childr)   r@   Úgraphql_spanÚ
start_spanÚset_datarg   Úcontaining_transactionrv   r
   Úsourceru   Úfinish)r/   rq   ru   ÚdescriptionÚspanÚtransactions         r0   Úon_operationz!SentryAsyncExtension.on_operation¡   s'  è ø€ à#×5Ñ5×DÑDˆÔà ˆÜ×Ñˆà×!Ñ!×'Ñ'Ð/Ø+-ˆD×"Ñ"Ô(à×!Ñ!×'Ñ'×-Ñ-Ó/×:Ñ:¸:ÔFØ'ˆNÜ×$Ñ$‰BØ×#Ñ#×)Ñ)×/Ñ/Ó1×<Ñ<¸^ÔLØ+ˆNÜ×(Ñ(ˆBà$ˆØ×ÒØ˜5Ÿ<™<¨×(<Ñ(<Ó=Ñ=ˆKä×!Ñ!Ø(à"&×"6Ñ"6Ø"0ñõ	
ô ×*Ñ*Ó,ˆÙØ $× 0Ñ 0ØØ Ü,×3Ñ3ð !1ó !ˆDÕô !+× 5Ñ 5ØØ Ü,×3Ñ3ô!ˆDÔð 	×Ñ×"Ñ"Ð#;¸^ÔLØ×Ñ×"Ñ"Ð#;¸T×=QÑ=QÔRØ×Ñ×"Ñ"Ð#5°t×7MÑ7M×7SÑ7SÔTØ×Ñ×"Ñ"Ð#:¸D×<OÑ<OÔPãà×'Ñ'×>Ñ>ˆÙ˜4×1Ñ1×@Ò@Ø#×5Ñ5×DÑDˆKÔÜ!=ˆKÔØˆKŒNà×Ñ× Ñ Õ"ùs   ‚J+J-c              #   óÆ   K  — | j                   j                  t        j                  dt        j
                  ¬«      | _        d –— | j                  j                  «        y ­w)NÚ
validationrt   )r€   r   r   ÚGRAPHQL_VALIDATEr)   r@   Úvalidation_spanr…   ©r/   s    r0   Úon_validatez SentryAsyncExtension.on_validateÛ   sP   è ø€ à#×0Ñ0×<Ñ<Ü×"Ñ"ØÜ(×/Ñ/ð  =ó  
ˆÔó 	à×Ñ×#Ñ#Õ%ùó   ‚AA!c              #   óÆ   K  — | j                   j                  t        j                  dt        j
                  ¬«      | _        d –— | j                  j                  «        y ­w)NÚparsingrt   )r€   r   r   ÚGRAPHQL_PARSEr)   r@   Úparsing_spanr…   rŽ   s    r0   Úon_parsezSentryAsyncExtension.on_parseç   sP   è ø€ à ×-Ñ-×9Ñ9Ü×ÑØÜ(×/Ñ/ð :ó 
ˆÔó 	à×Ñ× Ñ Õ"ùr�   c                 ó   — t        ||«      S r;   )Ústrawberry_should_skip_tracing)r/   Ú_nextrO   s      r0   r   z(SentryAsyncExtension.should_skip_tracingó   s   € ä-¨e°TÓ:Ð:r2   c              �   óV   K  —  |||g|¢­i |¤Ž}t        |«      r
|ƒ d {  –—† }|S 7 Œ­wr;   r   )r/   r˜   ÚrootrO   rU   rV   Úresults          r0   Ú_resolvezSentryAsyncExtension._resolve÷   s5   è ø€ á�t˜TÐ3 DÒ3¨FÑ3ˆä�vÔØ!—\ˆFàˆð "ús   ‚) '¡)c              �   óø  K  — | j                  ||«      r  | j                  |||g|¢­i |¤Žƒ d {  –—† S dj                  |j                  |j                  «      }| j
                  j                  t        j                  dj                  |«      t        j                  ¬«      5 }|j                  d|j                  «       |j                  d|j                  j                  «       |j                  d|«       |j                  ddj                  t        t        |j                   j#                  «       «      «      «        | j                  |||g|¢­i |¤Žƒ d {  –—† cd d d «       S 7 �Œ97 Œ# 1 sw Y   y xY w­w©	Nz{}.{}zresolving {}rt   zgraphql.field_namezgraphql.parent_typezgraphql.field_pathzgraphql.pathú.)r   rœ   r-   Úparent_typeÚ
field_namer€   r   r   ÚGRAPHQL_RESOLVEr)   r@   r‚   rv   ÚjoinÚmapÚstrÚpathÚas_list©r/   r˜   rš   rO   rU   rV   Ú
field_pathr‡   s           r0   ÚresolvezSentryAsyncExtension.resolve   sC  è ø€ à×#Ñ# E¨4Ô0Ø&˜Ÿ™ u¨d°DÐJ¸4ÒJÀ6ÑJ×JÐJà—^‘^ D×$4Ñ$4°d·o±oÓFˆ
à×Ñ×*Ñ*Ü×!Ñ!Ø×&Ñ& zÓ2Ü(×/Ñ/ð +ó 
ð 
	Kð Ø�M‰MÐ.°·±Ô@Ø�M‰MÐ/°×1AÑ1A×1FÑ1FÔGØ�M‰MÐ.°
Ô;Ø�M‰M˜.¨#¯(©(´3´s¸D¿I¹I×<MÑ<MÓ<OÓ3PÓ*QÔRà&˜Ÿ™ u¨d°DÐJ¸4ÒJÀ6ÑJ×J÷
	Kñ 
	Kð	 Kùð Kø÷
	Kð 
	Küs;   ‚.E:°E)±A3E:Â$B7E.ÅE,ÅE.ÅE:Å,E.Å.E7Å3E:)r<   r=   r>   r1   r   rg   rc   r‰   r�   r•   r   rœ   rª   rB   r2   r0   rS   rS   ‰   sE   „ ð ô7ð ñó ðò>ò8#òt
&ò
#ò;òóKr2   rS   c                   ó   — e Zd Zd„ Zy)rT   c                 óš  — | j                  ||«      r |||g|¢­i |¤ŽS dj                  |j                  |j                  «      }| j                  j                  t        j                  dj                  |«      t        j                  ¬«      5 }|j                  d|j                  «       |j                  d|j                  j                  «       |j                  d|«       |j                  ddj                  t        t        |j                  j!                  «       «      «      «        |||g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY wrž   )r   r-   r    r¡   r€   r   r   r¢   r)   r@   r‚   rv   r£   r¤   r¥   r¦   r§   r¨   s           r0   rª   zSentrySyncExtension.resolve  s  € à×#Ñ# E¨4Ô0Ù˜˜tÐ5 dÒ5¨fÑ5Ð5à—^‘^ D×$4Ñ$4°d·o±oÓFˆ
à×Ñ×*Ñ*Ü×!Ñ!Ø×&Ñ& zÓ2Ü(×/Ñ/ð +ó 
ð 
	6ð Ø�M‰MÐ.°·±Ô@Ø�M‰MÐ/°×1AÑ1A×1FÑ1FÔGØ�M‰MÐ.°
Ô;Ø�M‰M˜.¨#¯(©(´3´s¸D¿I¹I×<MÑ<MÓ<OÓ3PÓ*QÔRá˜˜tÐ5 dÒ5¨fÑ5÷
	6÷ 
	6ò 
	6ús   ÂB(EÅE
N)r<   r=   r>   rª   rB   r2   r0   rT   rT     s   „ ó6r2   rT   c                  ó®   ‡‡— t         j                  Št         j                  Šˆfd„} t        t        ‰«      ˆfd„«       }| t         _        |t         _        y )Nc               Ÿ   óô   •K  —  ‰| i |¤Žƒ d {  –—† }t        j                  «       j                  t        «      €|S d|v r3t        j                  «       }t        |d   «      }|j                  |«       |S 7 Œf­w©Nr`   )rJ   rK   rL   r)   Úget_isolation_scopeÚ_make_request_event_processorÚadd_event_processor)rU   rV   r›   ÚscopeÚevent_processorÚold_execute_asyncs        €r0   Ú_sentry_patched_execute_asyncz5_patch_execute.<locals>._sentry_patched_execute_async.  sw   øè ø€ á(¨$Ð9°&Ñ9×9ˆä× Ñ Ó"×2Ñ2Ô3HÓIÐQØˆMà &Ñ(Ü×2Ñ2Ó4ˆEÜ;¸FÐCVÑ<WÓXˆOØ×%Ñ% oÔ6àˆð :ús   ƒA8�A6�A'A8c                  ó†   •—  ‰| i |¤Ž}d|v r3t        j                  «       }t        |d   «      }|j                  |«       |S r¯   )rJ   r°   r±   r²   )rU   rV   r›   r³   r´   Úold_execute_syncs        €r0   Ú_sentry_patched_execute_syncz4_patch_execute.<locals>._sentry_patched_execute_sync<  sM   ø€ ñ " 4Ð2¨6Ñ2ˆà &Ñ(Ü×2Ñ2Ó4ˆEÜ;¸FÐCVÑ<WÓXˆOØ×%Ñ% oÔ6àˆr2   )Ústrawberry_schemaÚexecuteÚexecute_syncr   r)   )r¶   r¹   rµ   r¸   s     @@r0   r7   r7   )  sR   ù€ ä)×1Ñ1ÐÜ(×5Ñ5Ðôô  Ô 5Ð7GÓHó	ó Ið	ð !>ÔÔØ%AÔÕ"r2   c                  ó  ‡‡‡— t         j                  j                  Št        j                  j                  Šˆˆfd„} ˆˆfd„}t        t        «      d„ «       Š| t         j                  _        |t        j                  _        y )Nc                 ó.   •—  ‰| ||«        ‰| ||«       y r;   rB   )r/   ÚerrorsÚresponse_dataÚ_sentry_patched_handle_errorsÚold_async_view_handle_errorss      €€r0   Ú(_sentry_patched_async_view_handle_errorsz>_patch_views.<locals>._sentry_patched_async_view_handle_errorsQ  s   ø€ á$ T¨6°=ÔAÙ% d¨F°MÕBr2   c                 ó.   •—  ‰| ||«        ‰| ||«       y r;   rB   )r/   r¿   rÀ   rÁ   Úold_sync_view_handle_errorss      €€r0   Ú'_sentry_patched_sync_view_handle_errorsz=_patch_views.<locals>._sentry_patched_sync_view_handle_errorsV  s   ø€ á# D¨&°-Ô@Ù% d¨F°MÕBr2   c           	      ób  — |sy t        j                  «       }t        |«      }|j                  |«       t	        «       5  |D ]W  }t        |t        j                  «       j                  t        j                  ddœ¬«      \  }}t        j                  ||¬«       ŒY 	 d d d «       y # 1 sw Y   y xY w)NF)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)rJ   r°   Ú_make_response_event_processorr²   r   r   rK   Úoptionsr)   r?   Úcapture_event)r/   r¿   rÀ   r³   r´   ÚerrorÚeventrÌ   s           r0   rÁ   z3_patch_views.<locals>._sentry_patched_handle_errors[  s    € ñ Øä×.Ñ.Ó0ˆÜ8¸ÓGˆØ×!Ñ! /Ô2ä(Ó*ñ 
	;Øò 	;�Ü2ØÜ#-×#8Ñ#8Ó#:×#BÑ#Bä 5× @Ñ @Ø#(ñô‘��tô ×(Ñ(¨°TÖ:ñ	;÷
	;÷ 
	;ñ 
	;ús   ¾AB%Â%B.)r   ÚAsyncBaseHTTPViewÚ_handle_errorsr   ÚSyncBaseHTTPViewr   r)   )rÃ   rÆ   rÁ   rÂ   rÅ   s     @@@r0   r8   r8   L  ss   ú€ ä#2×#DÑ#D×#SÑ#SÐ Ü"0×"AÑ"A×"PÑ"PÐõCõ
Cô
  Ô 5Ó6ñ;ó 7ð;ð, 	1ô ×%Ñ%Ô4ð 	0ô ×#Ñ#Õ2r2   c                 ó   ‡ — ˆ fd„}|S )Nc                 óx  •— t        «       5  t        «       rr| j                  di «      }d|d<   |j                  d«      sQd‰j                  i}‰j
                  r‰j
                  |d<   ‰j                  r‰j                  |d<   ||d<   n	 | d   d= d d d «       | S # t        t        f$ r Y Œw xY w# 1 sw Y   | S xY w)NÚrequestÚgraphqlÚ
api_targetrs   rd   Ú	variablesÚoperationName)	r   r	   Ú
setdefaultrM   rd   rÚ   re   ÚKeyErrorÚ	TypeError)rÑ   rÌ   Úrequest_datars   r`   s       €r0   Úinnerz,_make_request_event_processor.<locals>.inner|  sÏ   ø€ ä(Ó*ñ 	Ü&Ô(Ø$×/Ñ/°	¸2Ó>�Ø-6�˜\Ñ*à#×'Ñ'¨Ô/Ø#Ð%6×%<Ñ%<Ð=�Dà(×2Ò2Ø,=×,GÑ,G˜˜[Ñ)Ø(×7Ò7Ø0A×0PÑ0P˜˜_Ñ-à+/�L Ò(ðØ˜iÑ(¨Ð0÷#	ð* ˆøô !¤)Ð,ò Ùðú÷%	ð* ˆús*   ŒA=B/Â
BÂB,Â)B/Â+B,Â,B/Â/B9rB   )r`   rà   s   ` r0   r±   r±   y  s   ø€ ôð2 €Lr2   c                 ó   ‡ — ˆ fd„}|S )Nc                 óŽ   •— t        «       5  t        «       r| j                  di «      }d‰i|d<   d d d «       | S # 1 sw Y   | S xY w)NÚcontextsrs   Úresponse)r   r	   rÜ   )rÑ   rÌ   rã   rÀ   s      €r0   rà   z-_make_response_event_processor.<locals>.inner›  sN   ø€ ä(Ó*ñ 	?Ü&Ô(Ø ×+Ñ+¨J¸Ó;�Ø(.°Ð'>�˜Ñ$÷	?ð
 ˆ÷	?ð
 ˆús	   Œ$:ºArB   )rÀ   rà   s   ` r0   rÍ   rÍ   ˜  s   ø€ ôð €Lr2   c                 óh   — t         | v ryt        | v ryt        h d£t        t	        «       «      z  «      S )NTF>   ÚfastapiÚlitestarÚstarliteÚ	starlette)rP   rQ   ÚboolÚsetr   )rE   s    r0   rN   rN   §  s6   € ä%¨Ñ3ØÜ	&¨*Ñ	4ØäÚ8¼3Ô?UÓ?WÓ;XÑXóð r2   )Gr\   ri   Úinspectr   rJ   Úsentry_sdk.constsr   Úsentry_sdk.integrationsr   r   Úsentry_sdk.integrations.loggingr   Úsentry_sdk.scoper	   Úsentry_sdk.tracingr
   Úsentry_sdk.utilsr   r   r   r   r   r   r   ÚImportErrorÚstrawberry.schema.schemaÚschemarº   r*   r   Ústrawberry.extensionsr   Ú#strawberry.extensions.tracing.utilsr   r—   Ústrawberry.httpr   r   Ústrawberry.extensions.tracingr   rP   r   rQ   Útypingr   r   r   r   r   r   r   rØ   r    r!   r"   Ústrawberry.typesr#   r$   r%   Úsentry_sdk._typesr&   r'   r)   r6   rS   rT   r7   r8   r±   rÍ   rN   rB   r2   r0   ú<module>rý      s#  ðÛ Û Ý ã Ý  ß =Ý 9Ý 4Ý ;÷÷ ðVÝ)ð>ß8Ð8Ý!Ý5Ýiß?ð)÷õ !áßF×Fß8Ý3ß_Ñ_ß7ñ Ð$Ô %ô˜Kô ò@*2ôZHK˜?ô HKôV6Ð.ô 6ò* BòF*òZò>ó	øðc ò Vñ
 ÐTÓ
UÐUðVûð ò >Ù
Ð<Ó
=Ð=ð>ûð ò )Ø%)Ð"Ø$(Ò!ð)ús*   ÁC+ Á#C< Á/D Ã+C9Ã<D
Ä	DÄD