Ë
    õ�Djv  ã                   ó  — 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mZ d dlmZ erd d	lmZmZmZ d d
lmZ 	 d dlmZmZ 	 d dlZdZ G d„ de«      Zd„ Zd„ Zy# e$ r	  ed«      ‚w xY w# e$ r	  ed«      ‚w xY w)é    N)Údeepcopy)Úwraps)ÚDidNotEnable)Úshould_send_default_pii)ÚSOURCE_FOR_STYLEÚTRANSACTION_SOURCE_ROUTE)Útransaction_from_functionÚlogger)ÚTYPE_CHECKING)ÚAnyÚCallableÚDict)ÚEvent)ÚStarletteIntegrationÚStarletteRequestExtractorzStarlette is not installedzFastAPI is not installedzgeneric FastAPI requestc                   ó    — e Zd ZdZed„ «       Zy)ÚFastApiIntegrationÚfastapic                  ó   — t        «        y ©N)Úpatch_get_request_handler© ó    úcC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/fastapi.pyÚ
setup_oncezFastApiIntegration.setup_once(   s
   € ô 	"Õ#r   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr   r   r   r   r   r   %   s   „ Ø€Jàñ$ó ñ$r   r   c                 óV  — d}|dk(  r-|j                   j                  d«      }|rCt        |«      xs d}n3|dk(  r.|j                   j                  d«      }|rt        |dd «      }|�|}|st        }t
        }n	t        |   }| j                  ||¬«       t        j                  d||«       y )NÚ ÚendpointÚurlÚrouteÚpath)Úsourcez;[FastAPI] Set transaction name and source on scope: %s / %s)
ÚscopeÚgetr	   ÚgetattrÚ_DEFAULT_TRANSACTION_NAMEr   r   Úset_transaction_namer
   Údebug)r(   Útransaction_styleÚrequestÚnamer#   r%   r&   r'   s           r   Ú _set_transaction_name_and_sourcer1   .   s«   € à€Dà˜JÒ&Ø—=‘=×$Ñ$ ZÓ0ˆÙÜ,¨XÓ6Ò<¸"‰Dà	˜eÒ	#Ø—‘×!Ñ! 'Ó*ˆÙÜ˜5 &¨$Ó/ˆDØÐØ�áÜ(ˆÜ)‰ä!Ð"3Ñ4ˆà	×Ñ˜t¨FÐÔ3Ü
‡L�LØEÀtÈVõr   c                  ón   ‡— t         j                  j                  Šˆfd„} | t         j                  _        y )Nc                  óî   •‡‡— |j                  d«      }|rQ|j                  �Et        j                  |j                  «      s&|j                  Št	        ‰«      ˆfd„«       }||_         ‰| i |¤ŽŠˆfd„}|S )NÚ	dependantc                  óü   •— t        j                  «       }|j                  �|j                  j                  «        t        j                  «       }|j
                  �|j
                  j                  «         ‰| i |¤ŽS r   )Ú
sentry_sdkÚget_current_scopeÚtransactionÚupdate_active_threadÚget_isolation_scopeÚprofileÚupdate_active_thread_id)ÚargsÚkwargsÚcurrent_scopeÚsentry_scopeÚold_calls       €r   Ú_sentry_callzTpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_callX   sm   ø€ ô !+× <Ñ <Ó >�Ø ×,Ñ,Ð8Ø!×-Ñ-×BÑBÔDä)×=Ñ=Ó?�Ø×'Ñ'Ð3Ø ×(Ñ(×@Ñ@ÔBá Ð0¨Ñ0Ð0r   c               Ÿ   óÚ  •‡K  — t        j                  «       j                  t        «      }|€ ‰| i |¤Žƒ d {  –—† S | d   }t	        t        j
                  «       |j                  |«       t        j                  «       }t        |«      }|j                  «       ƒ d {  –—† Šˆfd„}t        j                  |_        |j                   |||«      «        ‰| i |¤Žƒ d {  –—† S 7 Œ«7 ŒH7 Œ­w)Nr   c                 ó   •— ˆfd„}|S )Nc                 ó�   •— | j                  di «      }‰r"d‰v rt        «       r‰d   |d<   d‰v r‰d   |d<   t        |«      | d<   | S )Nr/   ÚcookiesÚdata)r)   r   r   )ÚeventÚhintÚrequest_infoÚinfos      €r   Úevent_processorz“patch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_app.<locals>._make_request_event_processor.<locals>.event_processorz   s]   ø€ ð $)§9¡9¨Y¸Ó#;�LÙØ$¨Ñ,Ô1HÔ1JØ6:¸9±o˜L¨Ñ3Ø! T™>Ø37¸±<˜L¨Ñ0Ü'/°Ó'=�E˜)Ñ$à �Lr   r   )ÚreqÚintegrationrL   rK   s      €r   Ú_make_request_event_processorzzpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_app.<locals>._make_request_event_processorx   s   ø€ ô!ð 'Ð&r   )r6   Ú
get_clientÚget_integrationr   r1   r7   r.   r:   r   Úextract_request_infor   Ú_nameÚadd_event_processor)	r=   r>   rN   r/   r@   Ú	extractorrO   rK   Úold_apps	          @€r   Ú_sentry_appzSpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_appi   sà   ùè ø€ ä$×/Ñ/Ó1×AÑAÔBTÓUˆKØÐ"Ù$ dÐ5¨fÑ5×5Ð5à˜1‘gˆGä,Ü×,Ñ,Ó.°×0MÑ0MÈwôô &×9Ñ9Ó;ˆLÜ1°'Ó:ˆIØ"×7Ñ7Ó9×9ˆDô'ô$ "4×!>Ñ!>ˆLÔØ×,Ñ,Ù-¨g°{ÓCôñ ! $Ð1¨&Ñ1×1Ð1ðE 6øð :øð2 2ús5   „5C+¹C%ºA$C+ÂC'ÂAC+Ã C)Ã!C+Ã'C+Ã)C+)r)   ÚcallÚasyncioÚiscoroutinefunctionr   )r=   r>   r4   rB   rW   rV   rA   Úold_get_request_handlers        @@€r   Ú_sentry_get_request_handlerz>patch_get_request_handler.<locals>._sentry_get_request_handlerN   su   ú€ à—J‘J˜{Ó+ˆ	áØ—‘Ð*Ü×/Ñ/°	·±Ô?à —~‘~ˆHä�8‹_ó
1ó ð
1ð *ˆIŒNá)¨4Ð:°6Ñ:ˆô&	2ðP Ðr   )r   ÚroutingÚget_request_handler)r\   r[   s    @r   r   r   J   s)   ø€ ä%Ÿo™o×AÑAÐôCðJ +F„G‡O�OÕ'r   ) rY   Úcopyr   Ú	functoolsr   r6   Úsentry_sdk.integrationsr   Úsentry_sdk.scoper   Úsentry_sdk.tracingr   r   Úsentry_sdk.utilsr	   r
   Útypingr   r   r   r   Úsentry_sdk._typesr   Ú!sentry_sdk.integrations.starletter   r   r   ÚImportErrorr+   r   r1   r   r   r   r   ú<module>ri      s�   ðÛ Ý Ý ã Ý 0Ý 4ß I÷õ
 !áß*Ñ*Ý'ð5÷ð3Ûð
 6Ð ô$Ð-ô $òó8IFøðc ò 5Ù
Ð3Ó
4Ð4ð5ûð
 ò 3Ù
Ð1Ó
2Ð2ð3ús   Á
A+ ÁA< Á+A9Á<B
