
    ɯei|                     R   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlZd dl	m
Z
mZmZ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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 dl*Z*dZ+ ee-      Z.e G d de             ZdddddddZ/ e0e/jc                               Z2 G d d      Z3	 	 	 	 d)de4dee5   deee      deee      dee   ddfdZ6d*de4dee   ddfdZ7de4ddfdZ8d Z9d  Z:d! Z;d" Z<d# Z=d$ Z>d%edee4e
f   fd&Z? G d' d(      Zy# e,$ r dZ+Y w xY w)+    N)Enumunique)	getLogger)AnyDictListOptional)SnowflakeConnection)TelemetryClientTelemetryDataTelemetryField)get_time_millis)	PlanStateget_complexity_score)SnowflakePlan)CompilationStageTelemetryField)DescribeQueryTelemetryField)get_application_nameget_os_nameget_python_versionget_versionis_in_stored_procedureis_interactivegenerate_random_alphanumericTFc                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9y8)9r   messagename
error_codestack_tracesnowpark_performance_datasnowpark_function_usagesnowpark_session_createdsnowpark_cursor_createdsnowpark_sql_simplifier_enabled!snowpark_cte_optimization_enabled1snowpark_eliminate_numeric_sql_value_cast_enabled)snowpark_auto_clean_up_temp_table_enabled&snowpark_large_query_breakdown_enabled&snowpark_reduce_describe_query_enabledsnowpark_error
start_timeduration	func_namemsg	wall_timecpu_timenetwork_bytes_sent_kibnetwork_bytes_recv_kibmemory_rss_kib	error_msgversionpython_versionclient_languageoperating_systeminteractivedatacategorycreated_by_snowpark	api_callssfqidssubcallssaved_table_nameactionusagejoincopycreateupload_filedata_source
session_idsql_simplifier_enabledcte_optimization_enabledlarge_query_breakdown_enabledsnowpark_temp_table_cleanupnum_temp_tables_cleanednum_temp_tables_createdtemp_table_cleaner_enabled0temp_table_cleanup_abnormal_exception_table_name-temp_table_cleanup_abnormal_exception_messagethread_identN):__name__
__module____qualname__MESSAGENAME
ERROR_CODESTACK_TRACETYPE_PERFORMANCE_DATATYPE_FUNCTION_USAGETYPE_SESSION_CREATEDTYPE_CURSOR_CREATEDTYPE_SQL_SIMPLIFIER_ENABLEDTYPE_CTE_OPTIMIZATION_ENABLED-TYPE_ELIMINATE_NUMERIC_SQL_VALUE_CAST_ENABLED%TYPE_AUTO_CLEAN_UP_TEMP_TABLE_ENABLED"TYPE_LARGE_QUERY_BREAKDOWN_ENABLED"TYPE_REDUCE_DESCRIBE_QUERY_ENABLED
TYPE_ERRORKEY_START_TIMEKEY_DURATIONKEY_FUNC_NAMEKEY_MSGKEY_WALL_TIMEKEY_CPU_TIMEKEY_NETWORK_SENT_KIBKEY_NETWORK_RECV_KIBKEY_MEMORY_RSS_KIBKEY_ERROR_MSGKEY_VERSIONKEY_PYTHON_VERSIONKEY_CLIENT_LANGUAGEKEY_OSKEY_IS_INTERACTIVEKEY_DATAKEY_CATEGORYKEY_CREATED_BY_SNOWPARKKEY_API_CALLS
KEY_SFQIDSKEY_SUBCALLSKEY_SAVED_TABLE_NAMEFUNC_CAT_ACTIONFUNC_CAT_USAGEFUNC_CAT_JOINFUNC_CAT_COPYFUNC_CAT_CREATEPERF_CAT_UPLOAD_FILEPERF_CAT_DATA_SOURCE
SESSION_IDSQL_SIMPLIFIER_ENABLEDCTE_OPTIMIZATION_ENABLEDLARGE_QUERY_BREAKDOWN_ENABLEDTYPE_TEMP_TABLE_CLEANUPNUM_TEMP_TABLES_CLEANEDNUM_TEMP_TABLES_CREATEDTEMP_TABLE_CLEANER_ENABLED0TEMP_TABLE_CLEANUP_ABNORMAL_EXCEPTION_TABLE_NAME-TEMP_TABLE_CLEANUP_ABNORMAL_EXCEPTION_MESSAGETHREAD_IDENTIFIER     h/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/snowpark/_internal/telemetry.pyr   r   4   sD    GDJK7353"C$G! 	< 2 -X))Q&)Q&!J!NLMGML33)MK)+F&HL3MJL-ONMMO((J59$C!;77!=: 5 	8 2 'r   r         )to_dfselect_expraggwith_columnwith_columnswith_column_renamedc                   <   e Zd ZdZ eej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  g      Zd
dZd Zd Zdeeef   fdZedee   defd	       Zy)ResourceUsageCollectorzl
    A context manager to collect resource usage metrics such as CPU time, wall time, and memory usage.
    returnNc                      y Nr   selfs    r   __init__zResourceUsageCollector.__init__   s    r   c                 ,   	 t        j                          | _        t        j                         | _        t        rJt        j                         | _        t        j                         j                         j                  | _        | S # t        $ r Y | S w xY wr   )time_start_timeprocess_time_start_cpu_timePS_UTIL_AVAILABLEpsutilnet_io_counters_start_net_io_countersProcessmemory_inforss
_start_rss	Exceptionr   s    r   	__enter__z ResourceUsageCollector.__enter__   sw    	#yy{D#'#4#4#6D  .4.D.D.F+"(.."2">">"@"D"D   		s   BB 	BBc                 *   	 t        j                          | _        t        j                         | _        t        rKt        j                         | _        t        j                         j                         j                  | _        y y # t        $ r Y y w xY wr   )r   	_end_timer   _end_cpu_timer   r   r   _end_net_io_countersr   r   r   _end_rssr   )r   exc_typeexc_valexc_tbs       r   __exit__zResourceUsageCollector.__exit__   so    	!YY[DN!%!2!2!4D ,2,B,B,D) & 0 < < > B B !  		s   BB 	BBc                    	 i }| j                   | j                  z
  }| j                  | j                  z
  }t        j
                  j                  |t        j                  j                  |i}t        r| j                  j                  | j                  j                  z
  dz  }| j                  j                  | j                  j                  z
  dz  }| j                  | j                  z
  dz  }|j                  t        j                   j                  |t        j"                  j                  |t        j$                  j                  |i       |S # t&        $ r Y S w xY w)zZ
        Returns:
            A dictionary containing the resource usage metrics.
        g      @)r   r   r   r   r   ri   valuerj   r   r   
bytes_sentr   
bytes_recvr   r   updaterk   rl   rm   r   )r   resource_usager/   r0   network_sentnetwork_recv
memory_rsss          r   get_resource_usagez)ResourceUsageCollector.get_resource_usage   sA   
	N)9)99I))D,@,@@H,,22I++118N !--8811<<= 
 --8811<<=  #mmdoo=G
%%&;;AA<&;;AA<&99??   		s   EE 	EEr?   c                     i }| D ]E  }|j                         D ]0  \  }}|t        j                  v s|j                  |d      |z   ||<   2 G |S )Nr   )itemsr   RESOURCE_USAGE_KEYSget)r?   r   subcallkeyr   s        r   aggregate_usage_from_subcallsz4ResourceUsageCollector.aggregate_usage_from_subcalls   sf     	MG%mmo M
U0DDD*8*<*<S!*Du*LN3'M	M r   )r   N)rS   rT   rU   __doc__	frozensetr   ri   r   rj   rk   rl   rm   r   r   r   r   r   strr   r   staticmethodr   r   r   r   r   r   r      s     $((..''--//55//55--33	

!DcN !F T
 t  r   r   r-   len_subcallsprecallsr?   r   r   c                 Z   | j                   xs | j                  }|r^g |j                  d |  t        j                  j
                  |t        j                  j
                  g |j                  | d  i|_        nE|C|Ag |t        j                  j
                  |t        j                  j
                  g |i|_        |L|j                  d   j                  t        j                  j
                  g       }t        j                  |      }|j                  d   j                  |       y )N)_select_statement_planr=   r   rW   r   ry   r   r   r   r   )dfr-   r   r   r?   r   plans          r   adjust_api_subcallsr      s     +288D
^^Nl]+
 ##))9++113TT^^\MN5S3T
 
	("6

 ##))9++11;X;
 >>"%)).*E*E*K*KRP/MMhWNN2n-r   c                     | j                   xs | j                  }|xs i }|j                  j                  t        j
                  j                  |i|       y r   )r   r   r=   appendr   rW   r   )r   r-   r   r   s       r   add_api_callr     sH    +288D#)rNNN>..44iR>RSr   c                 |    | j                   xs | j                  }t        j                  j                  |ig|_        y r   )r   r   r   rW   r   r=   )r   r-   r   s      r   set_api_call_sourcer     s1    +288D%**00)<=DNr   c                 B     t        j                          fd       }|S )Nc                  6    	  | i | y # t         $ r Y y w xY wr   )r   )argskwargsfuncs     r   wrapzsafe_telemetry.<locals>.wrap  s'    	$!&! 		s    		functoolswrapsr   r   s   ` r   safe_telemetryr     s%    __T  Kr   c                 B     t        j                          fd       }|S )Nc            
         | d   j                   }t               }|j                         5 }	 t               5 } 
| i |}d d d        j	                         }|j
                  sH|j                  j                  j                  |j                  t        | d   j                               	 d d d        | d   j                  xs | d   j                  }g |j                  t        j                  j                   d
j"                   i|}|j$                  |d   t        j&                  j                   <   t)        j*                         |d   t        j,                  j                   <   |j                  j                  j/                  d
j"                   t        j0                  j                   |j2                  D 	cg c]  }	|	j4                   c}	       S # 1 sw Y   xY w# |j
                  sH|j                  j                  j                  |j                  t        | d   j                               w w xY w# 1 sw Y   xY wc c}	w )Nr   rH   r:   
DataFrame.action_r=   r>   )_sessiondictquery_historyr   r   2_collect_snowflake_plan_telemetry_at_critical_path_conn_telemetry_clientsend_plan_metrics_telemetryrH   get_plan_telemetry_metricsr   r   r=   r   rW   r   rS   rI   r   	threading	get_identr   send_function_usage_telemetryr{   queriesquery_id)r   r   sessionr   r   resource_usage_collectorresultr   r=   qr   s             r   r   z&df_collect_api_telemetry.<locals>.wrap   s   q'""""$ 
		+- 31I!4262F3!9!L!L!NQQMM33OO#*#5#57QF P 
	 Aw((9DGMM
^^
  &&*T]]O(DWW
	 ** 	!1177	
 @I?R?R?T	!^55;;<''EEdmm_%**00(5(=(=>1AJJ>	 	F 	
 53 3 QQMM33OO#*#5#57QF P  R
	 
	4 ?sA   I
G(	G G(AI>IG%	 G((AH>>IIr   r   s   ` r   df_collect_api_telemetryr     s&    __T B Kr   c                 B     t        j                          fd       }|S )Nc            
         | d   j                   j                  }t               }|j                         5 }	 t	               5 } | i |}d d d        j                         }|j                  sR|j                  j                  j                  |j                  t        | d   j                   j                               	 d d d        | d   j                   j                  xs | d   j                   j                  }t        |       dkD  r't        | d   t               rj"                  dk(  r| d   nd }||j%                  dd       }g |j&                  t(        j*                  j,                  dj"                   t(        j.                  j,                  |i|}	|j                  j                  j1                  dj"                   t(        j2                  j,                  |	j4                  D 
cg c]  }
|
j6                   c}
       S # 1 sw Y   xY w# |j                  sR|j                  j                  j                  |j                  t        | d   j                   j                               w w xY w# 1 sw Y   xY wc c}
w )	Nr   r   r   save_as_table
table_namezDataFrameWriter.r   r   )
_dataframer   r   r   r   r   r   r   r   r   rH   r   r   r   len
isinstancer   rS   r   r=   r   rW   r   rz   r   r{   r   r   )r   r   r   r   r   r   r   r   r  r=   r   r   s              r   r   z'dfw_collect_api_telemetry.<locals>.wrapF  sU   q'$$--""$ 
		+- 31I!4262F3!9!L!L!NQQMM33OO#*#5#57Q8J8J8P8PQ P 
	 Aw!!33OtAw7I7I7O7O 4y1}47C(0 G  	 L$7J
^^
 ##))-=dmm_+M3399: !
	 	''EEdmm_%**00(5(=(=>1AJJ>	 	F 	
 C3 3 QQMM33OO#*#5#57Q8J8J8P8PQ P  R
	 
	B ?sB   I<
H	H
H"AI</J	H	HA I99I<<Jr   r   s   ` r   dfw_collect_api_telemetryr  E  s&    __T& &P Kr   c                 B     t        j                          fd       }|S )Nc                     t               5 } | i |}d d d        j                  xs |j                  }j                  t        v rt        |j                        t        j                     k\  rt        j                     }|j                  | d  }|j                  d |  |_        |j                  j                  t        j                  j                  dj                   t        j                  j                  |ij                                |S |R|j                  j                  t        j                  j                  dj                   ij                                |S # 1 sw Y   [xY wNr   )r   r   r   rS   APIS_WITH_MULTIPLE_CALLSr  r=   API_CALLS_TO_ADJUSTr   r   rW   r   ry   r   )r   r   r   rr   len_api_calls_to_adjustr?   r   s          r   r   zdf_api_usage.<locals>.wraps  sZ   #% 	&)Ad%f%A	&""-agg MM55DNN#':4=='II&9$--&H#~~'>&>&?@H!^^,E.E-EFDNNN!!"''--DMM?/K"//55x /AAC  NN!!"''--DMM?/K.AAC 7	& 	&s   	E..E8r   r   s   ` r   df_api_usager  r  s%    __T < Kr   c                 B     t        j                          fd       }|S )Nc                      t               5 } | i |}d d d        t        j                  j                  dj                   ij                         _        |S # 1 sw Y   IxY wr  )r   r   rW   r   rS   r   _df_api_call)r   r   r   r  r   s       r   r   z1df_to_relational_group_df_api_usage.<locals>.wrap  so    #% 	&)Ad%f%A	& %%DMM?'C
&99;
 	& 	&s   	AA&r   r   s   ` r   #df_to_relational_group_df_api_usager    s%    __T  Kr   c                 B     t        j                          fd       }|S )Nc                     t               5 } | i |}d d d        j                  xs |j                  }| d   j                  r(|j                  j                  | d   j                         |j                  j                  t        j                  j                  dj                   ij                                |S # 1 sw Y   xY w)Nr   zRelationalGroupedDataFrame.)r   r   r   r  r=   r   r   rW   r   rS   r   )r   r   r   r  r   r   s        r   r   z+relational_group_df_api_usage.<locals>.wrap  s    #% 	&)Ad%f%A	&""-agg7NN!!$q'"6"67##))-H+X*==?	
 	& 	&s   	CCr   r   s   ` r   relational_group_df_api_usager    s%    __T  Kr   r   c                 Z   i }	 | j                   |t        j                  j                  <   | j                  }|t
        j                     |t        j                  j                  <   |t
        j                     |t        j                  j                  <   |t
        j                     |t        j                  j                  <   |t
        j                     |t        j                  j                  <   | j                  j                         D ci c]  \  }}|j                  | c}}|t        j                   j                  <   t#        |       |t        j$                  j                  <   |S c c}}w # t&        $ r1}t)        |      |t        j*                  j                  <   Y d }~|S d }~ww xY wr   )uuidr   	PLAN_UUIDr   
plan_stater   PLAN_HEIGHTQUERY_PLAN_HEIGHT"NUM_SELECTS_WITH_COMPLEXITY_MERGED-QUERY_PLAN_NUM_SELECTS_WITH_COMPLEXITY_MERGEDNUM_CTE_NODESQUERY_PLAN_NUM_DUPLICATE_NODES'DUPLICATED_NODE_COMPLEXITY_DISTRIBUTION2QUERY_PLAN_DUPLICATED_NODE_COMPLEXITY_DISTRIBUTIONcumulative_node_complexityr   QUERY_PLAN_COMPLEXITYr   #COMPLEXITY_SCORE_BEFORE_COMPILATIONr   r   ERROR_MESSAGE)r   r:   r  r   r   es         r   r   r     s}   DJ?Cyy+55;;<__
GQ!!H
+==CCD
 yCCD 	*XX^^	

 y../ 	*IIOO	

 yHHI 	*]]cc	
 04/N/N/T/T/VL
!+eCIIuL
+AAGGH
 !& 	*NNTT	
 KL
  JCFq6+99??@KJs+   DE0 E*#AE0 *E0 0	F*9&F%%F*c                   \   e Zd ZdeddfdZd;dedee   fdZde	dee	e
f   fd	Zed
efd       Ze	 d;de	de	dede	fd       Zede	dede	fd       Zedefd       Ze	 	 d<de	de	deee	      deee	      fd       Zd Zd Zde	deddfdZde	ddfdZde	deddfdZde	deddfd Zde	deddfd!Zded"e	d#ee	e
f   ddfd$Zded"e	d%e	d&e	ddf
d'Zded(ee	e
f   ddfd)Zde	d*ed+ed,eddf
d-Z de	d.e	d/e	ddfd0Z!ded1ed2efd3Z"ded4efd5Z#de	deddfd6Z$ded7e	d8ed9eeee	         fd:Z%y)=r   connr   Nc                     t               rd n|j                  | _        t               | _        t               | _        t               | _        t               | _
        t               | _        d| _        d | _        d| _        y )NTi  )r   
_telemetry	telemetryr   sourcer   r5   r   r6   r   osr   _enabledstored_proc_meter#clean_up_stored_proc_meter_interval)r   r'  s     r   r   zTelemetryClient.__init__  sd    *,D$// 	 01'M#5#7"},. "&370r   r.   	timestampc                 ~   | j                   st        j                  d       y |s
t               }| j                  r)t        ||      }| j                  j                  |       y | j                  t        d      }| j                  j                  d| t        j                  |dd      d	      j                  d
       t        | j                  j                        | j                  k\  rD| j                  j                   5  | j                  j                  j#                          d d d        y y y # 1 sw Y   y xY w)Nz0Telemetry client is disabled, skipping telemetry)r   r0  
   zsnowflake.snowpark.client.gaugeF),:)ensure_ascii
separatorsr:   )descriptionunit   )r-  _loggerinfor   r*  PCTelemetryDatatry_add_log_to_batchr.  r   create_gaugejsondumpssetr  _instrument_id_instrumentr/  _instrument_id_instrument_lockclear)r   r.   r0  telemetry_datagauge_ids        r   sendzTelemetryClient.send  s   }}LLKL')I>>,SINNNN//?##/3B7H""//1(< JJs:V 0  c D**DDE;;< ++JJ M**DDJJLM M< 0M Ms   %D33D<telemetry_typec                    t         j                  j                  | j                  t        j
                  j                  | j                  t        j                  j                  | j                  t        j                  j                  | j                  t         j                  j                  |t        j                  j                  | j                  rt        j                  i}|S t        j                   i}|S r   )PCTelemetryField
KEY_SOURCEr   r+  r   ro   r5   rp   r6   rr   r,  KEY_TYPErs   r   r<  TRUEFALSE)r   rH  r   s      r   _create_basic_telemetry_dataz,TelemetryClient._create_basic_telemetry_data  s    ''--t{{&&,,dll--33T5H5H!!''%%++^--33"" 6E5I5I	
  !&&	
 r   r<   c                 l   i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  t               t        j                  j                  |rt        j                  nt        j                  ii}| j                  |       y r   )rO  r   r\   r   rt   re   r   rv   r<  rM  rN  rG  )r   r<   r   s      r   send_session_created_telemetryz.TelemetryClient.send_session_created_telemetry  s    

//3399

 ##))--33_5F66<<& ?N>R>R$**	,	

 			'r   r;   r-   r,   sfqidc                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |t        j                  j                  |t        j                  j                  t        j                         i|rt        j                  j                  |ini i}| j                  |       y)am  
        Sends performance telemetry data.

        Parameters:
            category (str): The category of the telemetry (upload file or data source).
            func_name (str): The name of the function.
            duration (float): The duration of the operation.
            sfqid (str, optional): The SFQID for upload file category. Defaults to None.
        N)rO  r   rZ   r   rt   ru   rg   rf   r   r   r   rJ  	KEY_SFQIDrG  )r   r;   r-   r,   rR  r   s         r   send_performance_telemetryz*TelemetryClient.send_performance_telemetry(  s    
//44::
 ##))++118,,22I++1180066	8K8K8M	,
 AF$..44e<2,	
 			'r   c                 ^    | j                  t        j                  j                  |||       y )N)r;   r-   r,   rR  )rU  r   r   r   )r   r-   r,   rR  s       r   send_upload_file_perf_telemetryz/TelemetryClient.send_upload_file_perf_telemetryC  s/     	''#88>>	 	( 	
r   telemetry_json_stringc                 r   i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  t        j                  j                  t        j                  j                  t        j                  |      ii}| j                  |       y r   )rO  r   rZ   r   rt   ru   r   rV   r?  r@  rG  )r   rX  r   s      r   send_data_source_perf_telemetryz/TelemetryClient.send_data_source_perf_telemetryN  s    
//44::
 ##))++11>3V3V3\3\&&,,djj9N.O,	
 			'r   function_categoryr=   r>   c                    t         j                  j                  |t         j                  j                  |i}|||t         j                  j                  <   |||t         j
                  j                  <   i | j                  t         j                  j                        t         j                  j                  |i}| j                  |       y r   )
r   rg   r   ru   rw   rx   rO  r[   rt   rG  )r   r-   r[  r=   r>   r:   r   s          r   r   z-TelemetryClient.send_function_usage_telemetry[  s     ((..	''--/@
  7@D--3344:D**001
//2288
 ##))4	
 			'r   c                 X    | j                  dt        j                  j                         y )Nname_alias_in_join)r   r   r}   r   r   s    r   send_alias_in_join_telemetryz,TelemetryClient.send_alias_in_join_telemetrys  s!    ** .">">"D"D	
r   c                 X    | j                  dt        j                  j                         y )Ncopy_pattern)r   r   r~   r   r   s    r   send_copy_pattern_telemetryz+TelemetryClient.send_copy_pattern_telemetryx  s!    **N88>>	
r   rH   rI   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   r^   r   rt   r   r   rG  )r   rH   rI   r   s       r   send_sql_simplifier_telemetryz-TelemetryClient.send_sql_simplifier_telemetry}  sw    
//::@@
 ##))))//55;;=S,	
 			'r   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  dii}| j                  |       y )NT)rO  r   r_   r   rt   r   r   rG  )r   rH   r   s      r   send_cte_optimization_telemetryz/TelemetryClient.send_cte_optimization_telemetry  sv    
//<<BB
 ##))))//77==t,	
 			'r   r   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   r`   r   rt   r   rG  r   rH   r   r   s       r   /send_eliminate_numeric_sql_value_cast_telemetryz?TelemetryClient.send_eliminate_numeric_sql_value_cast_telemetry  sw    
//LLRR
 ##))))//LLRRTY,	
 			'r   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   ra   r   rt   r   rG  rh  s       r   'send_auto_clean_up_temp_table_telemetryz7TelemetryClient.send_auto_clean_up_temp_table_telemetry  sv    
//DDJJ
 ##))))//DDJJE,	
 			'r   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   rb   r   rt   r   r   rG  rh  s       r   $send_large_query_breakdown_telemetryz4TelemetryClient.send_large_query_breakdown_telemetry  sv    
//AAGG
 ##))))//<<BBE,	
 			'r   	plan_uuidcompilation_stage_summaryc                    i | j                  t        j                  j                        t        j
                  j                  t        j                  j                  |t        j                  j                  t        j                  j                  t        j                  j                  |i|i}| j                  |       y r   )rO  r   !TYPE_COMPILATION_STAGE_STATISTICSr   r   rt   r   ru   CAT_COMPILATION_STAGE_STATSr  rG  )r   rH   rn  ro  r   s        r   (send_query_compilation_summary_telemetryz8TelemetryClient.send_query_compilation_summary_telemetry  s    

//.PPVV

 ##))))//++113Q3m3m3s3s.88>>	, ,	,	

 			'r   
error_typeerror_messagec                    i | j                  t        j                  j                        t        j
                  j                  t        j                  j                  |t        j                  j                  t        j                  j                  t        j                  j                  |t        j                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   rq  r   r   rt   r   ru   CAT_COMPILATION_STAGE_ERRORr  
ERROR_TYPEr$  rG  )r   rH   rn  rt  ru  r   s         r   -send_query_compilation_stage_failed_telemetryz=TelemetryClient.send_query_compilation_stage_failed_telemetry  s    
//.PPVV
 ##))))//++113Q3m3m3s3s.88>>	.99??.<<BBM,	
 			'r   r:   c                 P   i | j                  t        j                  j                        t        j
                  j                  t        j                  j                  |t        j                  j                  t        j                  j                  i|i}| j                  |       y r   )
rO  r   rq  r   r   rt   r   ru   CAT_SNOWFLAKE_PLAN_METRICSrG  )r   rH   r:   r   s       r   r   z+TelemetryClient.send_plan_metrics_telemetry  s    	
//.PPVV	
 ##))))//++113Q3l3l3r3r, ,		
 			'r   rO   rM   rN   c           
         i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |t        j                  j                  |t        j                  j                  |ii}| j                  |       y r   )
rO  r   r   r   rt   r   r   r   r   rG  )r   rH   rO   rM   rN   r   s         r   !send_temp_table_cleanup_telemetryz1TelemetryClient.send_temp_table_cleanup_telemetry  s    

//66<<

 ##))))//99??A[66<<>U66<<>U	,	

 			'r   r  exception_messagec                 P   i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |t        j                  j                  |ii}| j                  |       y r   )	rO  r   r   r   rt   r   r   r   rG  )r   rH   r  r~  r   s        r   4send_temp_table_cleanup_abnormal_exception_telemetryzDTelemetryClient.send_temp_table_cleanup_abnormal_exception_telemetry  s    	
//66<<	
 ##))))//OOUUWaLLRRTe,		
 			'r   lower_boundupper_boundc                 T   i | j                  t        j                  j                        t        j
                  j                  t        j                  j                  |t        j
                  j                  t        j                  j                  ||fiii}| j                  |       y r   )	rO  r   3TYPE_LARGE_QUERY_BREAKDOWN_UPDATE_COMPLEXITY_BOUNDSr   r   rt   r   COMPLEXITY_SCORE_BOUNDSrG  )r   rH   r  r  r   s        r   3send_large_query_breakdown_update_complexity_boundszCTelemetryClient.send_large_query_breakdown_update_complexity_bounds  s    
//.bbhh
 ##))))//''--2JJPP##S0,	
 			'r   	thread_idc                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   r]   r   rt   r   r   rG  )r   rH   r  r   s       r   send_cursor_created_telemetryz-TelemetryClient.send_cursor_created_telemetry-  sv    
//2288
 ##))))//0066	,	
 			'r   c                    i | j                  t        j                  j                        t        j                  j                  t        j
                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   rc   r   rt   r   rG  rh  s       r   $send_reduce_describe_query_telemetryz4TelemetryClient.send_reduce_describe_query_telemetry9  sv    
//AAGG
 ##))))//AAGG,	
 			'r   sql_texte2e_timer   c           
         i | j                  t        j                  j                        t        j
                  j                  t        j                  j                  |t        j                  j                  |t        j                  j                  |t        j                  j                  |ii}| j                  |       y r   )rO  r   TYPE_DESCRIBE_QUERY_DETAILSr   r   rt   r   SQL_TEXTE2E_TIMErY   rG  )r   rH   r  r  r   r   s         r   send_describe_query_detailsz+TelemetryClient.send_describe_query_detailsG  s    

//+GGMM

 ##))))//+44::H+44::H+77=={	,	

 			'r   r   )NN)&rS   rT   rU   r
   r   r   r	   intrG  r   r   rO  r   boolrQ  floatrU  rW  r   rZ  r   r   r_  rb  rd  rf  ri  rk  rm  rs  ry  r   r}  r  r  r  r  r  r   r   r   r   r     s4   80 8T 86M M# M23 4S>  $   KO(+7<EH 4 

(-
69
 
 
T 
 
 
 *.&*  DI&	
 c# .



7;	
# 
$ 
&*	&*	&*	  $(S>	
 
&*-;>OR	"%)#s(^	 %) "%	
 "% 
(  	
 
$,/>A&
 
 
&*	  	
 d8C=12r   r   )NNNNr   )@r   r?  r   enumr   r   loggingr   r   typingr   r   r   r	   snowflake.connectorr
   snowflake.connector.telemetryr   PCTelemetryClientr   r<  r   rJ  snowflake.connector.time_utilr   ?snowflake.snowpark._internal.analyzer.query_plan_analysis_utilsr   r   4snowflake.snowpark._internal.analyzer.snowflake_planr   9snowflake.snowpark._internal.compiler.telemetry_constantsr   4snowflake.snowpark._internal.analyzer.metadata_utilsr   "snowflake.snowpark._internal.utilsr   r   r   r   r   r   r   r   r   ImportErrorrS   r:  r
  listkeysr	  r   r   r  r   r   r   r   r   r  r  r  r  r   r   r   r   <module>r     s         , , 3 
 : O   H
 F'T F' F'\     3 8 8 :; R Rr #'%)%)%).. 3-. tDz"	.
 tDz". TN. 
.DT TXd^ Tt T>s >t >	#L*Z F&] tCH~ @B BS  s   .D D&%D&