§
    xÅj0  ã                   ó¤  — 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	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 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'm(Z( dZ)dZ*e
r+d dl	m+Z+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2  e.de,de+f         ¬¦  «        Z3d&d„Z4 G d„ de¦  «        Z5	 	 	 	 	 	 	 	 d'd"„Z6d#d$de7fd%„Z8dS )(é    N)Údeepcopy)ÚdatetimeÚ	timedeltaÚtimezone)Úenviron)ÚTYPE_CHECKING)Úcontinue_trace)ÚOP)Ú0_apply_data_collection_filtering_to_query_string)ÚIntegration)Ú_filter_headers)ÚCLOUD_PROVIDER)ÚScopeÚshould_send_default_pii)ÚSegmentNameSource)ÚTransactionSource)Úhas_span_streaming_enabled)ÚAnnotatedValueÚTimeoutThreadÚcapture_internal_exceptionsÚevent_from_exceptionÚhas_data_collection_enabledÚloggerÚreraiseg      ø?g     @�@)ÚAnyÚCallableÚOptionalÚTypeVar)ÚEventÚEventProcessorÚHintÚF.)ÚboundÚfuncÚreturnc                 ó\   ‡ — t          j        ‰ ¦  «        	 	 	 	 	 	 	 	 	 	 dˆ fd„¦   «         }|S )	NÚfunctionhandlerr   Ú	gcp_eventÚargsÚkwargsr%   c                 óx  •— t          j        ¦   «         }|                     t          ¦  «        }|€ ‰| |g|¢R i |¤ŽS t	          j        d¦  «        }|s!t          j        d¦  «          ‰| |g|¢R i |¤ŽS t          |¦  «        }t          j
        t          j        ¦  «        }t          j        ¦   «         5 }t          ¦   «         5  |                     ¦   «          |                     t#          |||¦  «        ¦  «         |                     dt	          j        d¦  «        ¦  «         d }	|j        rM|t(          k    rB|t(          z
  }
t+          |
||t          j        ¦   «         ¬¦  «        }	|	                     ¦   «          d d d ¦  «         n# 1 swxY w Y   i }i }t1          |d¦  «        rJ|j        }t5          |d¬¦  «                             ¦   «         D ]\  }}||d	|                     ¦   «         › �<   Œ i }t1          |d
¦  «        r
|j        |d<   t1          |d¦  «        ro|j                             dd¬¦  «        }|rQtA          |j!        ¦  «        r*tE          ||j!        d         d         ¬¦  «        }|r||d<   ntG          ¦   «         r||d<   t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        dœ|dœ}t	          j        dd¦  «        }t	          j        d¦  «        rt	          j        d¦  «        |d<   t	          j        d¦  «        rt	          j        d¦  «        |d<   t	          j        d¦  «        rt	          j        d¦  «        |d<   tI          |j!        ¦  «        rˆt           j%         &                    |¦  «         tO          j(        |¦  «         t           j%         )                    |d tT          j+        t          j,        tZ          j.        t^          j0        |dœ|¥|¥¬¦  «        }n[tM          |tT          j+        t	          j        dd ¦  «        tb          j.        t          j,        ¬!¦  «        }t          j2        ||¬"¦  «        }|5  	  ‰| |g|¢R i |¤Ž|	r|	 3                    ¦   «          | 4                    ¦   «          cd d d ¦  «         cd d d ¦  «         S # tj          $ rR tm          j7        ¦   «         }tq          ||j!        d#dd$œ¬%¦  «        \  }}t          j9        ||¬&¦  «         tu          |Ž  Y nw xY w	 |	r|	 3                    ¦   «          | 4                    ¦   «          n/# |	r|	 3                    ¦   «          | 4                    ¦   «          w xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )'NÚFUNCTION_TIMEOUT_SECzOThe configured timeout could not be fetched from Cloud Functions configuration.Ú
gcp_regionÚFUNCTION_REGION)Úisolation_scopeÚcurrent_scopeÚheadersF)Úuse_annotated_valuezhttp.request.header.Úmethodzhttp.request.methodÚquery_stringúutf-8Úreplace©ÚerrorsÚdata_collectionÚurl_query_params©r4   Ú	behaviourz	url.queryÚFUNCTION_NAMEÚENTRY_POINTÚFUNCTION_IDENTITYÚGCP_PROJECT)Úfunction_nameÚfunction_entry_pointÚfunction_identityÚfunction_regionÚfunction_project)Úgcp_envr(   z<unknown GCP function>zgcp.project.idzfaas.identityzfaas.entry_point)z	sentry.opzsentry.originzsentry.segment.name.sourcezcloud.providerz	faas.name)ÚnameÚparent_spanÚ
attributesÚ )ÚoprG   ÚsourceÚorigin)Úcustom_sampling_contextÚgcp)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint);Ú
sentry_sdkÚ
get_clientÚget_integrationÚGcpIntegrationr   Úgetr   ÚdebugÚintr   Únowr   Úutcr/   r   Úclear_breadcrumbsÚadd_event_processorÚ_make_request_event_processorÚset_tagÚtimeout_warningÚTIMEOUT_WARNING_BUFFERr   Úget_current_scopeÚstartÚhasattrr1   r   ÚitemsÚlowerr3   r4   Údecoder   Úoptionsr   r   r   Útracesr	   r   Úset_custom_sampling_contextÚ
start_spanr
   ÚFUNCTION_GCPrM   r   Ú	COMPONENTr   ÚGCPr   Ústart_transactionÚstopÚflushÚ	ExceptionÚsysÚexc_infor   Úcapture_eventr   )r'   r(   r)   r*   ÚclientÚintegrationÚconfigured_timeÚinitial_timeÚscopeÚtimeout_threadÚwaiting_timer1   Úheader_attributesÚheaderÚheader_valueÚadditional_attributesr4   Úfiltered_qsÚsampling_contextrA   Úspan_ctxÚtransactionrv   Úsentry_eventrT   r$   s                            €úLC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/gcp.pyÚsentry_funcz_wrap_func.<locals>.sentry_func*   ss  ø€ õ Ô&Ñ(Ô(ˆà×,Ò,­^Ñ<Ô<ˆØÐØ�4˜¨ÐD°TÐDÐDÐD¸VÐDÐDÐDå!œ+Ð&<Ñ=Ô=ˆØð 	EÝŒLØañô ð ð �4˜¨ÐD°TÐDÐDÐD¸VÐDÐDÐDå˜oÑ.Ô.ˆå”|¥H¤LÑ1Ô1ˆåÔ'Ñ)Ô)ð ~	#¨UÝ,Ñ.Ô.ð +ð +Ø×'Ò'Ñ)Ô)Ð)Ø×)Ò)Ý1Ø! ?°Lñô ñô ð ð
 —’˜l­G¬KÐ8IÑ,JÔ,JÑKÔKÐKØ!%�àÔ/ð+à'Õ*@Ò@Ð@à#2Õ5KÑ#K�Lå%2Ø$Ø'Ø(-Ý&0Ô&BÑ&DÔ&Dð	&ñ &ô &�Nð #×(Ò(Ñ*Ô*Ð*ð/+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð2 ˆGØ24ÐÝ�y )Ñ,Ô,ð Ø#Ô+�Ý,;Ø°ð-ñ -ô -ç’%‘'”'ðð Ñ(�F˜Lð
 %ð &Ð&M¸V¿\º\¹^¼^Ð&MÐ&MÑNÐNð
 %'Ð!Ý�y (Ñ+Ô+ð PØ?HÔ?OÐ%Ð&;Ñ<å�y .Ñ1Ô1ð JØ(Ô5×<Ò<¸WÈYÐ<ÑWÔW�Øð JÝ2°6´>ÑBÔBð 
JÝ&VØ)5Ø&,¤nÐ5FÔ&GØ 2ô'ð'ñ 'ô '˜ð 'ð MØALÐ1°+Ñ>øÝ0Ñ2Ô2ð JØ=IÐ-¨kÑ:õ &-¤[°Ñ%AÔ%AÝ,3¬K¸Ñ,FÔ,FÝ)0¬Ð5HÑ)IÔ)IÝ'.¤{Ð3DÑ'EÔ'EÝ(/¬°MÑ(BÔ(Bðð ð 'ð	 ð 	 Ðõ $œK¨Ð9QÑRÔRˆMåŒ{˜=Ñ)Ô)ð UÝ:A¼+ÀmÑ:TÔ:TÐ%Ð&6Ñ7åŒ{Ð.Ñ/Ô/ð Ý9@¼Ø'ñ:ô :Ð% oÑ6õ Œ{˜=Ñ)Ô)ð WÝ<C¼KÈÑ<VÔ<VÐ%Ð&8Ñ9å)¨&¬.Ñ9Ô9ð ÝÔ!×0Ò0°Ñ9Ô9Ð9ÝÔ1Ð2BÑCÔCÐCÝ%Ô,×7Ò7Ø&Ø $å%'¤_Ý)7Ô)>Ý6GÔ6QÝ*8Ô*<Ø%2ð ð  ð ,ð ð 0ð ð 8ñ ô ��õ -ØÝ”Ý œ _°bÑ9Ô9Ý,Ô6Ý)Ô0ðñ ô �õ &Ô7ØÐ9Iðñ ô �ð ð #ð #ð#Ø˜4 °ÐL¸TÐLÐLÐLÀVÐLÐLð &ð .Ø&×+Ò+Ñ-Ô-Ð-à—L’L‘N”N�Nð!#ð #ð #ð #ñ #ô #ð #ð]~	#ð ~	#ð ~	#ð ~	#ñ ~	#ô ~	#ð ~	#ð ~	#øõb !ð 'ð 'ð 'Ý"œ|™~œ~�HÝ)=Ø Ø'-¤~Ø+0¸UÐ"CÐ"Cð*ñ *ô *Ñ&�L $õ
 Ô,¨\ÀÐEÑEÔEÐEÝ˜XÐ&Ð&Ð&Ð&ð'øøøð 'à%ð .Ø&×+Ò+Ñ-Ô-Ð-à—L’L‘N”N�N�Nøð &ð .Ø&×+Ò+Ñ-Ô-Ð-à—L’L‘N”N�N�Nøøø�Nð!#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð]~	#ð ~	#ð ~	#ñ ~	#ô ~	#ð ~	#ð ~	#ð ~	#ð ~	#ð ~	#ð ~	#ð ~	#øøøð ~	#ð ~	#ð ~	#ð ~	#ð ~	#ð ~	#s™   Â5V/ÃB7FÅ;V/ÆF	ÆV/ÆF	ÆK0V/Ñ?VÒSÒ*VÒ7V/ÓAT,Ô)UÔ+T,Ô,UÔ0+VÕ,VÖVÖV/ÖV	ÖV/ÖV	ÖV/Ö/V3Ö6V3)
r'   r   r(   r   r)   r   r*   r   r%   r   )Ú	functoolsÚwraps)r$   r‰   s   ` rˆ   Ú
_wrap_funcrŒ   )   sr   ø€ Ý„_�TÑÔðR#ØðR#Ø+0ðR#Ø9>ðR#ØJOðR#à	ðR#ð R#ð R#ð R#ð R#ñ ÔðR#ðh Ðó    c                   óF   — e Zd ZdZde› �Zd	deddfd„Zed
d„¦   «         ZdS )rX   rO   zauto.function.Frb   r%   Nc                 ó   — || _         d S )N)rb   )Úselfrb   s     rˆ   Ú__init__zGcpIntegration.__init__Æ   s   € Ø.ˆÔÐÐr�   c                  ó®   — dd l } t          | d¦  «        st          j        d¦  «         d S | j        }t          |j        j        ¦  «        |j        _        d S )Nr   Ú	worker_v1zFGcpIntegration currently supports only Python 3.7 runtime environment.)Ú__main__rf   r   Úwarningr“   rŒ   ÚFunctionHandlerÚinvoke_user_function)Úgcp_functionsÚworker1s     rˆ   Ú
setup_oncezGcpIntegration.setup_onceÉ   sj   € à(Ð(Ð(Ð(å�} kÑ2Ô2ð 	ÝŒNØXñô ð ð ˆFàÔ)ˆå7AØÔ#Ô8ñ8
ô 8
ˆÔÔ4Ð4Ð4r�   )F)r%   N)	Ú__name__Ú
__module__Ú__qualname__Ú
identifierrM   Úboolr‘   Ústaticmethodrš   © r�   rˆ   rX   rX   Â   sm   € € € € € Ø€JØ*˜jÐ*Ð*€Fð/ð /¨ð /¸ð /ð /ð /ð /ð ð
ð 
ð 
ñ „\ð
ð 
ð 
r�   rX   r(   r   Úconfigured_timeoutr{   r    c                 ó   ‡ ‡‡— dˆˆ ˆfd„}|S )	NÚeventr   rT   r!   r%   úOptional[Event]c                 óŒ  •— t          j        t          j        ¦  «        }|‰z
  }|t	          d¬¦  «        z  }|                      di ¦  «        }t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        |‰
d	œ|d
<   dt          |¦  «        i|d<   |                      di ¦  «        }d 	                    t          j        d¦  «        ¦  «        |d<   t          ‰d¦  «        r
‰j        |d<   t          j        ¦   «         j        }t          ‰d¦  «        rW‰j                             dd¬¦  «        }t#          |¦  «        r'|r$t%          ||d         d         ¬¦  «        }	|	r|	|d<   n||d<   t          ‰d¦  «        rt'          ‰j        ¦  «        |d<   t          ‰d¦  «        rYt#          |¦  «        rd|d         d         v r
‰j        |d<   n/t-          ¦   «         r‰j        |d<   nt/          j        ¦   «         |d<   t3          |¦  «        | d<   | S )Né   )ÚmillisecondsÚextrar=   r>   r?   r.   r@   )rA   rB   rC   rD   rE   Úexecution_duration_in_millisÚconfigured_timeout_in_secondszgoogle cloud functionsÚurlzgoogle cloud logsÚrequestz	gcp:///{}r3   r4   r5   r6   r7   r9   r:   r;   r1   ÚdataÚincoming_requestÚhttp_bodies)r   r\   r   r]   r   Ú
setdefaultr   rY   Ú_get_google_cloud_logs_urlÚformatrf   r3   rU   rV   rj   r4   ri   r   r   r   r1   r®   r   r   Úremoved_because_raw_datar   )r¤   rT   Ú
final_timeÚ	time_diffrª   r©   r­   rR   r4   rƒ   r¢   r(   r{   s             €€€rˆ   Úevent_processorz6_make_request_event_processor.<locals>.event_processorÝ   so  ø€ Ý”\¥(¤,Ñ/Ô/ˆ
Ø Ñ-ˆ	à'0µ9È!Ð3LÑ3LÔ3LÑ'LÐ$à× Ò  ¨"Ñ-Ô-ˆå$œ[¨Ñ9Ô9Ý$+¤K°Ñ$>Ô$>Ý!(¤Ð-@Ñ!AÔ!AÝ&œ{Ð+<Ñ=Ô=Ý '¤¨MÑ :Ô :Ø,HØ-?ð+
ð +
ˆÐ&Ñ'ð Õ-¨jÑ9Ô9ð&
ˆÐ!Ñ"ð —)’)˜I rÑ*Ô*ˆà$×+Ò+­G¬K¸Ñ,HÔ,HÑIÔIˆ�‰å�9˜hÑ'Ô'ð 	1Ø )Ô 0ˆG�HÑå#Ô.Ñ0Ô0Ô8ˆå�9˜nÑ-Ô-ð 	7Ø$Ô1×8Ò8¸ÈÐ8ÑSÔSˆLÝ*¨>Ñ:Ô:ð 	7Øð >Ý"RØ%1Ø"0Ð1BÔ"CÐDVÔ"Wð#ñ #ô #�Kð #ð >Ø2=˜ Ñ/øà*6�˜Ñ'å�9˜iÑ(Ô(ð 	DÝ!0°Ô1BÑ!CÔ!CˆG�IÑå�9˜fÑ%Ô%ð 	LÝ*¨>Ñ:Ô:ð Là&Ø%Ð&7Ô8¸ÔGðHð Hð '0¤n�G˜F‘OøÝ(Ñ*Ô*ð LØ"+¤.�˜‘�õ #1Ô"IÑ"KÔ"K�˜‘å# GÑ,Ô,ˆˆiÑàˆr�   )r¤   r   rT   r!   r%   r¥   r¡   )r(   r¢   r{   r·   s   ``` rˆ   r`   r`   Ú   s6   øøø€ ð>ð >ð >ð >ð >ð >ð >ð >ð@ Ðr�   rµ   r   c           	      ó  — | t          d¬¦  «        z
  }d}d                     t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        |                      |¦  «        |                     |¦  «        ¬¦  «        }|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.   )ÚprojectrA   ÚregionÚtimestamp_endÚtimestamp_start)r   r³   r   rY   Ústrftime)rµ   Úhour_agoÚformatstringr¬   s       rˆ   r²   r²      s�   € ð �I¨AÐ.Ñ.Ô.Ñ.€HØ'€Lð	9÷
 ‚fÝ”˜MÑ*Ô*Ý”k /Ñ2Ô2ÝŒ{Ð,Ñ-Ô-Ø ×)Ò)¨,Ñ7Ô7Ø ×)Ò)¨,Ñ7Ô7ð ñ ô ð ð €Jr�   )r$   r"   r%   r"   )r(   r   r¢   r   r{   r   r%   r    )9rŠ   ru   Úcopyr   r   r   r   Úosr   Útypingr   rU   Úsentry_sdk.apir	   Úsentry_sdk.constsr
   Úsentry_sdk.data_collectionr   Úsentry_sdk.integrationsr   Ú$sentry_sdk.integrations._wsgi_commonr   Ú.sentry_sdk.integrations.cloud_resource_contextr   Úsentry_sdk.scoper   r   Úsentry_sdk.tracesr   Úsentry_sdk.tracingr   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   r   r   rc   ÚMILLIS_TO_SECONDSr   r   r   r   Úsentry_sdk._typesr   r    r!   r"   rŒ   rX   r`   Ústrr²   r¡   r�   rˆ   ú<module>rÒ      s¯  ðØ Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø WÐ WÐ WÐ WÐ WÐ WØ /Ð /Ð /Ð /Ð /Ð /Ø @Ð @Ð @Ð @Ð @Ð @Ø IÐ IÐ IÐ IÐ IÐ IØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð ØÐ àð /Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7à=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=àˆ�˜8 C¨ HÔ-Ð.Ñ.Ô.€AðVð Vð Vð Vðr
ð 
ð 
ð 
ð 
�[ñ 
ô 
ð 
ð0CØðCØ*/ðCØ?DðCàðCð Cð Cð CðL¨:ð ¸#ð ð ð ð ð ð r�   