Ë
    õ�Dj^   ã                   óR  — d dl Z d dlZd dlmZ d dlmZmZ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 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ZdZ er1d 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(  e"de#de!f   ¬«      Z)d„ Z* G d„ de«      Z+d„ Z,d„ Z-y)é    N)Údeepcopy)ÚdatetimeÚ	timedeltaÚtimezone)Úenviron)Úcontinue_trace)ÚOP)ÚIntegration)Ú_filter_headers)Úshould_send_default_pii)ÚTRANSACTION_SOURCE_COMPONENT)ÚAnnotatedValueÚcapture_internal_exceptionsÚevent_from_exceptionÚloggerÚTimeoutThreadÚreraise)ÚTYPE_CHECKINGg      ø?g     @�@)ÚAny)ÚTypeVar)ÚCallable)ÚOptional)ÚEventProcessorÚEventÚHintÚF.)Úboundc                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc           
      ó¶  •— t        j                  «       }|j                  t        «      }|€ ‰| |g|¢­i |¤ŽS t	        j
                  d«      }|s"t        j                  d«        ‰| |g|¢­i |¤ŽS t        |«      }t        j                  t        j                  «      }t        j                  «       5 }t        «       5  |j                  «        |j!                  t#        |||«      «       |j%                  dt	        j
                  d«      «       d }	|j&                  r.|t(        kD  r%|t(        z
  }
t+        |
|«      }	|	j-                  «        d d d «       i }t/        |d«      r|j0                  }t3        |t4        j6                  t	        j
                  dd«      t8        t        j:                  ¬«      }t	        j
                  d«      t	        j
                  d	«      t	        j
                  d
«      t	        j
                  d«      t	        j
                  d«      dœ|dœ}t        j<                  ||¬«      5  	  ‰| |g|¢­i |¤Ž	r|	j?                  «        |jA                  «        cd d d «       cd d d «       S # 1 sw Y   �Œ,xY w# tB        $ rT tE        jF                  «       }tI        ||jJ                  dddœ¬«      \  }}t        jL                  ||¬«       tO        |Ž  Y nw xY w	 	r|	j?                  «        |jA                  «        n'# 	r|	j?                  «        |jA                  «        w xY w	 d d d «       n# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)NÚFUNCTION_TIMEOUT_SECzOThe configured timeout could not be fetched from Cloud Functions configuration.Ú
gcp_regionÚFUNCTION_REGIONÚheadersÚFUNCTION_NAMEÚ )ÚopÚnameÚsourceÚoriginÚENTRY_POINTÚFUNCTION_IDENTITYÚGCP_PROJECT)Úfunction_nameÚfunction_entry_pointÚfunction_identityÚfunction_regionÚfunction_project)Úgcp_envÚ	gcp_event)Úcustom_sampling_contextÚgcpF)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)(Ú
sentry_sdkÚ
get_clientÚget_integrationÚGcpIntegrationr   Úgetr   ÚdebugÚintr   Únowr   ÚutcÚisolation_scoper   Úclear_breadcrumbsÚadd_event_processorÚ_make_request_event_processorÚset_tagÚtimeout_warningÚTIMEOUT_WARNING_BUFFERr   ÚstartÚhasattrr#   r   r	   ÚFUNCTION_GCPr   r)   Ústart_transactionÚstopÚflushÚ	ExceptionÚsysÚexc_infor   ÚoptionsÚcapture_eventr   )Úfunctionhandlerr3   ÚargsÚkwargsÚclientÚintegrationÚconfigured_timeÚinitial_timeÚscopeÚtimeout_threadÚwaiting_timer#   ÚtransactionÚsampling_contextrS   Úsentry_eventr:   Úfuncs                    €ú_C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/gcp.pyÚsentry_funcz_wrap_func.<locals>.sentry_func*   sõ  ø€ ô ×&Ñ&Ó(ˆà×,Ñ,¬^Ó<ˆØÐÙ˜¨ÐD°TÒD¸VÑDÐDä!Ÿ+™+Ð&<Ó=ˆÙÜ�L‰LØaôñ ˜¨ÐD°TÒD¸VÑDÐDä˜oÓ.ˆä—|‘|¤H§L¡LÓ1ˆä×'Ñ'Ó)ð <	#¨UÜ,Ó.ñ +Ø×'Ñ'Ô)Ø×)Ñ)Ü1Ø! ?°Lóôð
 —‘˜l¬G¯K©KÐ8IÓ,JÔKØ!%�à×/Ò/Ø'Ô*@Ò@à#2Ô5KÑ#K�Lä%2°<ÀÓ%Q�Nð #×(Ñ(Ô*÷%+ð( ˆGÜ�y )Ô,Ø#×+Ñ+�ä(ØÜ—?‘?Ü—[‘[ °"Ó5Ü3Ü%×,Ñ,ôˆKô &-§[¡[°Ó%AÜ,3¯K©K¸Ó,FÜ)0¯©Ð5HÓ)IÜ'.§{¡{Ð3DÓ'EÜ(/¯©°MÓ(Bñð 'ñ	 Ðô ×-Ñ-ØÐ5Eôñ #ð#Ù °ÐL¸TÒLÀVÑLñ &Ø&×+Ñ+Ô-à—L‘L”N÷%#ð #÷U<	#ñ <	#÷+ñ +ûô\ !ò 'Ü"Ÿ|™|›~�HÜ)=Ø Ø'-§~¡~Ø+0¸UÑ"Cô*Ñ&�L $ô
 ×,Ñ,¨\ÀÕEÜ˜XÓ&ð'úð 'á%Ø&×+Ñ+Ô-à—L‘L•Nøñ &Ø&×+Ñ+Ô-à—L‘L•Nú�N÷%#÷ #ñ #ú÷U<	#÷ <	#ñ <	#ús{   Â5MÃ BI8ÅC'MÈ5L:È7JÉ"L:É%	MÉ8J	É=MÊAK"ËL	Ë!K"Ë"L	Ë&#L:Ì	$L-Ì-L:Ì1	MÌ:M	Ì?MÍM)Ú	functoolsÚwraps)rc   re   s   ` rd   Ú
_wrap_funcrh   (   s)   ø€ ä‡_�_�TÓóO#ó ðO#ðb Ðó    c                   ó2   — e Zd ZdZde› �Zdd„Zed„ «       Zy)r>   r5   zauto.function.c                 ó   — || _         y )N)rI   )ÚselfrI   s     rd   Ú__init__zGcpIntegration.__init__ƒ   s
   € à.ˆÕri   c                  óÄ   — dd l } t        | d«      st        j                  d«       y | j                  }t        |j                  j                  «      |j                  _        y )Nr   Ú	worker_v1zFGcpIntegration currently supports only Python 3.7 runtime environment.)Ú__main__rL   r   Úwarningro   rh   ÚFunctionHandlerÚinvoke_user_function)Úgcp_functionsÚworker1s     rd   Ú
setup_oncezGcpIntegration.setup_once‡   sR   € ó 	)ä�} kÔ2Ü�N‰NØXôð à×)Ñ)ˆä7AØ×#Ñ#×8Ñ8ó8
ˆ×ÑÕ4ri   N)F)Ú__name__Ú
__module__Ú__qualname__Ú
identifierr)   rm   Ústaticmethodrv   © ri   rd   r>   r>      s,   „ Ø€JØ˜j˜\Ð*€Fó/ð ñ
ó ñ
ri   r>   c                 ó   ‡ ‡‡— ˆˆ ˆfd„}|S )Nc                 ó„  •— t        j                  t        j                  «      }|‰	z
  }|t	        d¬«      z  }| j                  di «      }t        j                  d«      t        j                  d«      t        j                  d«      t        j                  d«      t        j                  d«      |‰d	œ|d
<   dt        |«      i|d<   | j                  di «      }dj                  t        j                  d«      «      |d<   t        ‰d«      r‰j                  |d<   t        ‰d«      r‰j                  j                  d«      |d<   t        ‰d«      rt        ‰j                  «      |d<   t!        «       rt        ‰d«      r3‰j"                  |d<   n#t        ‰d«      rt%        j&                  «       |d<   t)        |«      | d<   | S )Né   )ÚmillisecondsÚextrar$   r*   r+   r"   r,   )r-   r.   r/   r0   r1   Úexecution_duration_in_millisÚconfigured_timeout_in_secondszgoogle cloud functionsÚurlzgoogle cloud logsÚrequestz	gcp:///{}ÚmethodÚquery_stringzutf-8r#   Údata)r   rB   r   rC   r   Ú
setdefaultr   r?   Ú_get_google_cloud_logs_urlÚformatrL   r†   r‡   Údecoder   r#   r   rˆ   r   Úremoved_because_raw_datar   )
Úeventr:   Ú
final_timeÚ	time_diffr‚   r�   r…   Úconfigured_timeoutr3   r\   s
          €€€rd   Úevent_processorz6_make_request_event_processor.<locals>.event_processorœ   sŠ  ø€ ô —\‘\¤(§,¡,Ó/ˆ
Ø Ñ-ˆ	à'0´9È!Ô3LÑ'LÐ$à× Ñ  ¨"Ó-ˆä$Ÿ[™[¨Ó9Ü$+§K¡K°Ó$>Ü!(§¡Ð-@Ó!AÜ&Ÿ{™{Ð+<Ó=Ü '§¡¨MÓ :Ø,HØ-?ñ+
ˆÐ&Ñ'ð Ô-¨jÓ9ð&
ˆÐ!Ñ"ð —)‘)˜I rÓ*ˆà$×+Ñ+¬G¯K©K¸Ó,HÓIˆ�‰ä�9˜hÔ'Ø )× 0Ñ 0ˆG�HÑä�9˜nÔ-Ø&/×&<Ñ&<×&CÑ&CÀGÓ&LˆG�NÑ#ä�9˜iÔ(Ü!0°×1BÑ1BÓ!CˆG�IÑä"Ô$Ü�y &Ô)Ø"+§.¡.�˜’ä�y &Ô)ô #1×"IÑ"IÓ"K�˜‘ä# GÓ,ˆˆiÑàˆri   r|   )r3   r‘   r\   r’   s   ``` rd   rG   rG   ™   s   ú€ ö/ðb Ðri   c           	      ó  — | t        d¬«      z
  }d}dj                  t        j                  d«      t        j                  d«      t        j                  d«      | j	                  |«      |j	                  |«      ¬«      }|S )	zÔ
    Generates a Google Cloud Logs console URL based on the environment variables
    Arguments:
        final_time {datetime} -- Final time
    Returns:
        str -- Google Cloud Logs Console URL to logs.
    r   )Úhoursz%Y-%m-%dT%H:%M:%SZaY  https://console.cloud.google.com/logs/viewer?project={project}&resource=cloud_function%2Ffunction_name%2F{function_name}%2Fregion%2F{region}&minLogLevel=0&expandAll=false&timestamp={timestamp_end}&customFacets=&limitCustomFacetWidth=true&dateRangeStart={timestamp_start}&dateRangeEnd={timestamp_end}&interval=PT1H&scrollTimestamp={timestamp_end}r,   r$   r"   )Úprojectr-   ÚregionÚtimestamp_endÚtimestamp_start)r   r‹   r   r?   Ústrftime)r�   Úhour_agoÚformatstringr„   s       rd   rŠ   rŠ   Ð   s{   € ð œI¨AÔ.Ñ.€HØ'€Lð	9÷
 �fÜ—‘˜MÓ*Ü—k‘k /Ó2Ü�{‰{Ð,Ó-Ø ×)Ñ)¨,Ó7Ø ×)Ñ)¨,Ó7ð ó ð ð €Jri   ).rf   rR   Úcopyr   r   r   r   Úosr   r;   Úsentry_sdk.apir   Úsentry_sdk.constsr	   Úsentry_sdk.integrationsr
   Ú$sentry_sdk.integrations._wsgi_commonr   Úsentry_sdk.scoper   Úsentry_sdk.tracingr   Úsentry_sdk.utilsr   r   r   r   r   r   Útypingr   rJ   ÚMILLIS_TO_SECONDSr   r   r   r   Úsentry_sdk._typesr   r   r   r   rh   r>   rG   rŠ   r|   ri   rd   ú<module>r¨      s‘   ðÛ Û 
Ý ß 2Ñ 2Ý ã Ý )Ý  Ý /Ý @Ý 4Ý ;÷÷ õ !ð Ð ØÐ áÝÝÝÝç=Ñ=á�˜8 C¨ HÑ-Ô.€AòTôn
�[ô 
ò44ónri   