
    ɯei                        d dl Z d dlZd dlZd dl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
mZmZmZmZmZ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mZ d d	lmZ d d
lmZm Z m!Z!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. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZKmLZLmMZMmNZN  eeO      ZPdZQdZRdZS G d  d!e      ZT G d" d#      ZUd$e>d%d&fd'ZVy)(    N)copy)Decimal)	getLogger)	IOAnyDictIterableIteratorListOptionalTupleUnion)Mock)SnowflakeConnection)ResultMetadataSnowflakeCursor)NotSupportedError)escape_quotes
quote_namequote_name_without_upper_casingunquote_if_quoted)	Attribute)SnowflakePlan)SaveMode)DATAFRAME_AST_PARAMETER)SnowparkClientExceptionMessagesDEFAULT_STRING_SIZE)is_in_stored_procedureresult_set_to_rows)AsyncJob_AsyncResultType)SnowparkSessionException)pandas)MockExecutionPlanexecute_mock_plan)ColumnEmulatorTableEmulator)StageEntityRegistry)LocalTestOOBTelemetryService)get_fully_qualified_name)SnowparkLocalTestingException)Row)	ArrayTypeDecimalTypeMapTypeVariantType_IntegralTypeapplicationinternal_application_nameinternal_application_versionc                        e Zd Zd
 fdZd
dZddeddfdZdefdZedefd       Z	e	j                  d
d	       Z	 xZS )MockedSnowflakeConnectionreturnNc                 H    t        |   |i |ddi d | _        d| _        y )Nr3   localtestingT)super__init__	_password_disable_query_context_cache)selfargskwargs	__class__s      e/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/snowpark/mock/_connection.pyr<   z"MockedSnowflakeConnection.__init__@   s+     	$E&EnE,0)    c                 2    ddddi}t        di || _        y )Nzrequest.return_valueFz!Not implemented in MockConnection)successmessage )r   _rest)r?   rA   attrss      rC   connectz!MockedSnowflakeConnection.connectH   s&    " >%
 ]E]
rD   retryc                     d | _         y N)rI   )r?   rL   s     rC   closezMockedSnowflakeConnection.closeQ   s	    
rD   c                     | j                   du S )z.Checks whether the connection has been closed.N)restr?   s    rC   	is_closedz#MockedSnowflakeConnection.is_closedT   s    yyD  rD   c                      yNFrH   rR   s    rC   telemetry_enabledz+MockedSnowflakeConnection.telemetry_enabledX   s    rD   c                     d| _         y rU   )_telemetry_enabled)r?   _s     rC   rV   z+MockedSnowflakeConnection.telemetry_enabled\   s
    "'rD   r8   NT)__name__
__module____qualname__r<   rK   boolrO   rS   propertyrV   setter__classcell__)rB   s   @rC   r7   r7   ?   sa    1#4 4 !4 ! 4   ( (rD   r7   c                      e Zd Z G d d      Zd>deeeef      ddfdZ	 	 	 	 d?dZ		 	 	 	 d?dZ
	 	 	 	 d@d	Z	 	 	 	 	 	 dAd
ee   dee   dee   dee   dee   deej                     fdZdededefdZdefdZd ZdBdZdefdZdCdededee   fdZdedee   fdZ	 	 	 	 	 dDded ed!ed"ed#ed$ed%edeeeef      fd&Z	 	 	 	 	 	 dEd'ee   d ed(ed!ed"ed#ed$ed%ed)edeeeef      fd*Zddddej>                  dfded+ed,ed-ed.ed/ed0ee    de!eeef   e"f   fd1Z#	 	 dFd2e$d+ed,edeeef   fd3Z%dddej>                  dfd4e&d+ed,ed.ed/ed5ede!e'e(   d6e)e(   e)d6   f   fd7Z*d8eeef   fd9Z+e jX                  jZ                  dddej>                  fd4e d+ed,ed.ed/ede.eee!e'e   d6e$e)d6   ef   f   e'e/   f   fd:       Z0d4e de.e'e(   e'e1   f   fd;Z2d4e defd<Z3e4defd=       Z5y)GMockServerConnectionc                   f   e Zd ZddZdeeee   f   defdZdeeee   f   defdZ	deeee   f   de
fdZ	 ddeeee   f   de
d	ed
eee      dee   f
dZdeeee   f   ddfdZdedeeee   f   defdZdeeee   f   defdZdeeee   f   dee   fdZdeeee   f   dee
   fdZy)*MockServerConnection.TabularEntityRegistryr8   Nc                 l    i | _         i | _        || _        | j                  j                         | _        y rN   )table_registryview_registryconnget_lock_lock)r?   rj   s     rC   r<   z3MockServerConnection.TabularEntityRegistry.__init__d   s-    "$D!#DDI++-DJrD   namec                     | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|| j                  v cd d d        S # 1 sw Y   y xY wNschemadatabase)rl   rj   _get_current_parameterr+   rh   r?   rm   current_schemacurrent_databasequalified_names        rC   is_existing_tablez<MockServerConnection.TabularEntityRegistry.is_existing_tablej   si     =!%!A!A(!K#'99#C#CJ#O !9.*:" &)<)<<= = =   AA((A1c                     | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|| j                  v cd d d        S # 1 sw Y   y xY wro   )rl   rj   rr   r+   ri   rs   s        rC   is_existing_viewz;MockServerConnection.TabularEntityRegistry.is_existing_views   si     <!%!A!A(!K#'99#C#CJ#O !9.*:" &););;< < <rx   c                 V   | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|| j                  v r1t        | j                  |   j                  d            cd d d        S t        d| d      # 1 sw Y   y xY w)Nrp   rq   T)dropzObject 'z#' does not exist or not authorized.)rl   rj   rr   r+   rh   r   reset_indexr,   rs   s        rC   
read_tablez5MockServerConnection.TabularEntityRegistry.read_table|   s     !%!A!A(!K#'99#C#CJ#O !9.*:" "T%8%88++N;GGTGR  8"4&(KL  s   A9BBB(tablemodecolumn_namesc                 	   | j                   5  |j                  D ]H  }||   j                  j                  r||   j	                         j                         s?t        d       | j                  j                  d      }| j                  j                  d      }t        |||      }t        |      }|t        j                  k(  r|| j                  v r| j                  |   |j                  j                         }j                  j                         }	|sct        |      t        |	      k7  rt        d| d|	       t!        |j"                  d         |_        t!        j"                  d         _        nt%        |      t%        |	      z
  x}
r'dj'                  d |
D              }t        d	| d
      g }t%        |	      t%        |      z
  D ]N  }|   j                  j                  r"d ||<   |   j                  |j(                  |<   >|j+                  |       P |r'dj'                  d |D              }t        d| d
      t-        j.                  |gd      | j                  |<   |	| j                  |   _        j(                  | j                  |   _        n%|| j                  |<   n|t        j0                  k(  r || j                  vr|| j                  |<   n|t        j2                  k(  r|| j                  |<   n|t        j4                  k(  r.|| j                  v rt        d| d      || j                  |<   n||t        j6                  k(  rZ|| j                  v r;| j                  |   t%        |j                  j                               }t%        j                  j                               }	|j9                  |	      rgt;        fdt%        |	|z
        D              rGt%        |	|z
        D ]5  }t=        d g|j"                  d   z  |   j                  t>              ||<   7 nAt        d|j                  j                          dj                  j                                j@                  |_         |jC                  j                        }|| j                  |<   nt        d|       tE        d| d      gcd d d        S # 1 sw Y   y xY w)Nz$NULL result in a non-nullable columnrp   rq   z9Cannot append because incoming data has different schema z than existing table    z', 'c              3   2   K   | ]  }t        |        y wrN   r   .0ids     rC   	<genexpr>zIMockServerConnection.TabularEntityRegistry.write_table.<locals>.<genexpr>   s      :">@$5b$9:"   z#table contains invalid identifier ''c              3   2   K   | ]  }t        |        y wrN   r   r   s     rC   r   zIMockServerConnection.TabularEntityRegistry.write_table.<locals>.<genexpr>   s      :"(* %6b$9:"r   z&NULL result in a non-nullable column 'T)ignore_indexzTable  already existsc              3   P   K   | ]  }|   j                   j                    y wrN   )sf_typenullable)r   coltarget_tables     rC   r   zIMockServerConnection.TabularEntityRegistry.write_table.<locals>.<genexpr>   s,      J # )-55>>Js   #&r   )datar   dtypez;Cannot truncate because incoming data has different schema )columnszUnrecognized mode: z successfully created.)status)#rl   r   r   r   isnullanyr,   rj   rr   r+   r   r   APPENDrh   to_listlenrangeshapesetjoinsf_typesappendr$   concatIGNORE	OVERWRITEERROR_IF_EXISTSTRUNCATEissubsetallr'   objectsf_types_by_col_indexreindexr-   )r?   rm   r   r   r   columnrt   ru   input_schemaexisting_schemainvalid_colsidentifiersinvalid_non_nullable_colsmissing_colr   r   s                  @rC   write_tablez6MockServerConnection.TabularEntityRegistry.write_table   s     c#mm F!&M11::!&M002668;B  "&!A!A(!K#'99#C#CJ#O /nFVWU8??*t222'+':':4'@',}}'<'<'>*6*>*>*F*F*H+"<0C4HH&C&_`l_m  nC  DS  CT  %U'" !" -2%++a.,AEM389K9KA9N3OL0/2</@3CW/WW|W.4kk :"DP:" /" 'D&I+VW$X'" !" 9;5/2?/Cc,FW/W R#/#<#D#D#M#M9=E+$6BN(3C&&-g %*NN;$? %>$D$D[$QR  9.4kk :".G:" /" 'D&L[MYZ$['" !" 5;MM)515++D1 =L++D19=I=R=R++D1:49++D1X__,4#6#6649++D1X///05D''-X555t222;$TF/:  5:++D1X...t222'+':':4'@'*5==+@+@+B'C*-l.B.B.J.J.L*M'00Ac J'*?\+I'JJ G (+?\+I'J "-;*.%++a.)@,8,=,E,E*0."c
" #@"]^c^k^k^s^s^u]v  wL  NZ  Nb  Nb  Nj  Nj  Nl  Lm  !n#  7C6X6X3 %l6J6J K05D''-7:MdV8TUUv-CDECc c cs   )S+!S+RS++S4c                 V   | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|| j                  v r| j                  j                  |        | j                  j                  di | d d d        y # 1 sw Y   y xY w)Nrp   rq   rH   )rl   rj   rr   r+   rh   pop!notify_mock_query_record_listener)r?   rm   rA   rt   ru   s        rC   
drop_tablez5MockServerConnection.TabularEntityRegistry.drop_table   s     F!%!A!A(!K#'99#C#CJ#O /nFVW4...''++D1 <		;;EfEF F Fs   B	BB(execution_planreplacec                 (   | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|s|| j                  v rt        d| d      || j                  |<   d d d        y # 1 sw Y   y xY w)Nrp   rq   View r   rl   rj   rr   r+   ri   r,   )r?   r   rm   r   rt   ru   s         rC   create_or_replace_viewzAMockServerConnection.TabularEntityRegistry.create_or_replace_view  s      :!%!A!A(!K#'99#C#CJ#O /nFVW44+=+=#=7%v_8UVV+9""4(: : :s   A2BBc                 $   | j                   5  | j                  j                  d      }| j                  j                  d      }t        |||      }|| j                  v r| j                  |   cd d d        S t        d| d      # 1 sw Y   y xY w)Nrp   rq   r   z does not existr   )r?   rm   rt   ru   s       rC   
get_reviewz5MockServerConnection.TabularEntityRegistry.get_review  s     S!%!A!A(!K#'99#C#CJ#O /nFVW4-----d3S S 4eD64QRRS Ss   A B7BBc                     | j                   5  | j                  |      r| j                  |      cddd       S 	 ddd       y# 1 sw Y   yxY w)zWMethod to atomically read a view if it exists. Returns None if the view does not exist.N)rl   rz   r   r?   rm   s     rC   read_view_if_existsz>MockServerConnection.TabularEntityRegistry.read_view_if_exists  sI      ((.??40       "AAAc                     | j                   5  | j                  |      r| j                  |      cddd       S 	 ddd       y# 1 sw Y   yxY w)zYMethod to atomically read a table if it exists. Returns None if the table does not exist.N)rl   rw   r~   r   s     rC   read_table_if_existsz?MockServerConnection.TabularEntityRegistry.read_table_if_exists#  sI      ))$/??40    r   )rj   rd   r8   NrN   )r\   r]   r^   r<   r   strr	   r_   rw   rz   r(   r~   r   r   r   r-   r   r   r%   r   r   r   r   rH   rD   rC   TabularEntityRegistryrf   b   s   	.	=%Xc]0B*C 	= 	=	<sHSM/A)B 	<t 	<	5hsm);#< 	 	* 15j	Xc]*+j	 !j	 	j	
 #49-j	 #Yj	X		F5hsm);#< 		F4 		F	:-	: Xc]*+	: 		:	S5hsm);#< 	SAR 	S	c8C=01	'(		c8C=01	m$	rD   r   Noptionsr8   c                    t               | _        t               | _        |xs i | _        | j                  j                  di       }d| _        t        j                         | _	        i | _
        t               | _        t               | _        t        j                  |       | _        t#        |       | _        |j'                  ddddd      | j                  _        | j                  j                  dt*        j,                  j.                  j0                  j2                        | _        | j                  j                  dt*        j,                  j.                  j0                  j6                        | _        | j                  j                  dt*        j,                  j.                  j0                  j:                        | _        | j                  j                  dt*        j,                  j.                  j0                  j>                        | _         | j                  j                  d	t*        j,                  j.                  j0                  jB                        | _"        | j                  j                  d
t*        j,                  j.                  j0                  jF                        | _$        tK        tM        jN                               | _(        | j                  j                  dd      | _)        tU        jV                         | _,        | jR                  s
t[               r"| jX                  j]                          d| _0        y | jX                  j_                  | jP                         d| _0        y )Nsession_parametersTF))ENABLE_ASYNC_QUERY_IN_PYTHON_STORED_PROCS/_PYTHON_SNOWPARK_USE_SCOPED_TEMP_OBJECTS_STRING*_PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER_STRING*PYTHON_SNOWPARK_GENERATE_MULTILINE_QUERIESaccount	warehouseuserrq   rolerp   disable_local_testing_telemetry)1r7   _connr   _cursor_optionsget_thread_safe_session_enabled	threadingRLockrl   _lower_case_parametersr   _query_listeners_telemetry_clientrd   r   entity_registryr)   stage_registryupdate_session_parameters	snowflakesnowparkmock
_constantsCURRENT_ACCOUNT_active_accountCURRENT_WAREHOUSE_active_warehouseCURRENT_USER_active_userCURRENT_DATABASE_active_databaseCURRENT_ROLE_active_roleCURRENT_SCHEMA_active_schemar   uuiduuid4_connection_uuid _disable_local_testing_telemetryr*   get_instance_oob_telemetryr   disablelog_session_creation_suppress_not_implemented_error)r?   r   session_paramss      rC   r<   zMockServerConnection.__init__,  s   .0
v2**+?D,0)__&
&(# #!%3II$O1$7)7)>)>=BCG>B>B	*


&  $}}00y))..99II 
 "&!2!2++00;;MM"
 !MM--I&&++66CC
 !% 1 1	**//::KK!
 !MM--I&&++66CC
 #mm//i((--88GG
 !$DJJL 1040A0A-u1
- ;GGI004J4L'') 05, 44T5J5JK/4,rD   c                 :    | j                   j                  |       y rN   )r   addr?   listeners     rC   add_query_listenerz'MockServerConnection.add_query_listener_  s     	!!(+rD   c                 :    | j                   j                  |       y rN   )r   remover   s     rC   remove_query_listenerz*MockServerConnection.remove_query_listenerd  s     	$$X.rD   c                     | j                   5  | j                  D ]  } |j                  |fi |  	 d d d        y # 1 sw Y   y xY wrN   )rl   r   _notify)r?   query_recordrA   r   s       rC   notify_query_listenersz+MockServerConnection.notify_query_listenersi  sJ     ZZ 	9 11 9   889	9 	9 	9s	   %<Aexternal_feature_nameinternal_feature_nameerror_messageparameters_inforaise_errorwarning_loggerc           	      v    | j                   s-| j                  j                  ||||| j                  ||       yy)a}  
        send telemetry to oob service, can raise error or logging a warning based upon the input

        Args:
            external_feature_name: customer facing feature name, this information is used to raise error
            internal_feature_name: optional internal api/feature name, this information is used to track internal api
            error_message: optional error message overwrite the default message
            parameters_info: optionals parameters information related to the feature
            raise_error: Set to an exception to raise exception
            warning_logger: Set logger to log a warning message
        )r	  r
  r  r  connection_uuidr  r  N)r   r   log_not_supported_errorr   )r?   r	  r
  r  r  r  r  s          rC   r  z,MockServerConnection.log_not_supported_errorp  sF    ( 3377&;&; /+ $ 5 5'- 8  4rD   rm   default_valuec                     | j                   5  | j                  j                  r&| j                  j                  j                  ||      n|	 cd d d        S # 1 sw Y   y xY wrN   )rl   r   r   r   )r?   rm   r  s      rC   "_get_client_side_session_parameterz7MockServerConnection._get_client_side_session_parameter  sQ    ZZ 	 ::11 

..224G"	 	 	s   ?AAc                      y)Nr   rH   rR   s    rC   get_session_idz#MockServerConnection.get_session_id  s    rD   c                     | j                   S rN   )rl   rR   s    rC   rk   zMockServerConnection.get_lock  s    zzrD   c                     | j                   5  | j                  r| j                  j                          d d d        y # 1 sw Y   y xY wrN   )rl   r   rO   rR   s    rC   rO   zMockServerConnection.close  s5    ZZ 	#zz

  "	# 	# 	#s	   '=Ac                 6    | j                   j                         S rN   )r   rS   rR   s    rC   rS   zMockServerConnection.is_closed  s    zz##%%rD   Tparamquotedc                 ,   	 | j                   5  t        | d| d       }d d d        r"t        |      dk\  r|d   |d   cxk(  rdk(  r|S  ||j                         n|}|r|rt	        |      S t        |      S d S # 1 sw Y   ]xY w# t        $ r Y y w xY w)N_active_   r   ")rl   getattrr   upperr   r   AttributeError)r?   r  r  rm   s       rC   rr   z+MockServerConnection._get_current_parameter  s    	 ?txw%7>?D	Q47d2h+E#+E ,F $(#34::<D   4D9 't,	 ? ?  		s9   B A;*B 
#B .
B 9B ;B B 	BBqueryc                 l    t        | j                  |      d         }t        |      dkD  r|d   d   S d S )Nr   r   )r    	run_queryr   )r?   r$  rowss      rC   _get_string_datumz&MockServerConnection._get_string_datum  s7    !$.."7"?@ Y]tAwqz44rD   Fpathstage_locationdest_prefixparallelcompress_datasource_compression	overwritec                 2    | j                  dt               y )Nz MockServerConnection.upload_file)r	  r  r  NotImplementedError)r?   r)  r*  r+  r,  r-  r.  r/  s           rC   upload_filez MockServerConnection.upload_file  s     	$$"D+ 	% 	
rD   input_streamdest_filename	is_in_udfc
                    |r$| j                  dddt        |      it               t        ddd t        d d d      t        d	dd t        d d d      t        d
dd t        ddd      t        ddd t        ddd      t        ddd t        d d d      t        ddd t        d d d      t        ddd t        d d d      t        ddd t        d d d      g| j
                  _        | j                  j                  ||||      S )Nz%upload_stream with auto_compress=Truez"MockServerConnection.upload_streamr-  r	  r
  r  r  sourcer  F)rm   	type_codedisplay_sizeinternal_size	precisionscaleis_nullabletargetsource_sizer   target_sizer.  target_compressionr   rG   )r/  )	r  r   r2  r   r   r   descriptionr   upload_stream)
r?   r4  r*  r5  r+  r,  r-  r.  r/  r6  s
             rC   rE  z"MockServerConnection.upload_stream  sb    ((&M&J!0#m2D E/	 )  !1! !1! "!1! "!1! )!1! )!1! !1! !1!AI$
 T ""00.-9 1 
 	
rD   	to_pandasto_iteris_ddl_on_temp_objectblock	data_typeasync_job_planc                 4    | j                  ddt               y )NRunning SQL querieszMockServerConnection.run_queryr	  r
  r  r1  )	r?   r$  rF  rG  rH  rI  rJ  rK  rA   s	            rC   r&  zMockServerConnection.run_query2  s      	$$"7"B+ 	% 	
rD   results_cursorc                    |rU	 |r5t        t        j                  t        |      |j	                  d            nt        |j                  d      |      }n|rt        |      n|j                         }||j                  dS # t        $ r  |rt        |      n|j                         }Y 7t        $ r  t        $ r#}t        j                  t        |            d }~ww xY w)N)rO  T)split_blocks)r   sfqid)map	functoolspartial_fix_pandas_df_fixed_typefetch_pandas_batchesfetch_pandas_allr   iterfetchallKeyboardInterruptBaseExceptionr   SERVER_FAILED_FETCH_PANDASr   rR  )r?   rO  rF  rG  data_or_iterexs         rC   _to_data_or_iterz%MockServerConnection._to_data_or_iterE  s       !))5n ';;;N	 3&77T7J& 2 )0^$^5L5L5N  %~/C/CDD % ,3D(9P9P9R  %   5PPG s   AB &C ,C =CC plancase_sensitivepandas.DataFramec                    | j                   j                         rt        dd      |s$| j                  dddt	        |      it
               g }t        ||j                        }	t        |	t              rd|	j                  D ]  }
t        |	j                  |
   j                  t        t        t        f      s6dd	lm} |	j%                         D ]  \  }}||
   gt        ||
   t&              r(t'        t)        ||
   j+                                     ||
<   t-        j.                  ||
   |d
d      |	j0                  ||
f<   r||	j2                  |
   v rdnd |	j0                  ||
f<     |	j                  D cg c]  }t5        |       }}g }|	j6                  r@t)        |	j6                  j9                               }|D cg c]  }|	j6                  |    }}n&|	j                  D 
cg c]  }
|	j                  |
    }}
|	j;                  dd       D ]  }t=        j>                  j@                  | jC                  |      jE                         } |tG        |      D cg c]X  \  }}t        ||   j                  tH              r4|2tK        djM                  |||   j                  jN                              n|Z c}} }||_(        |jS                  |        nt        |	tT              r|	D cg c]  }| }}|rVtW        jX                         }|	j                  D ]!  }|	|   j[                         |t5        |      <   # t]        |	      }|r|gn|} | j^                  di | |rta        |      S |S c c}w c c}w c c}
w c c}}w c c}w )NzBCannot perform this operation because the session has been closed.1404)
error_codez	Async jobzMockServerConnection.executerI  r8  r   )CUSTOM_JSON_ENCODERr  T)clsindent	sort_keysnullF)indexrm   	{0:.{1}f}rH   )1r   rS   r#   r  r   r2  r&   expr_to_alias
isinstancer(   r   r   datatyper.   r0   r1   snowflake.snowpark.mockrg  iterrowsdictsorteditemsjsondumpsloc_null_rows_idxs_mapr   r   keys
itertuplesr-   _builderbuildset_case_sensitiveto_row	enumerater/   r   formatr>  _fieldsr   listr$   	DataFrametolistrV  r   rY  )r?   ra  rF  rG  rI  rJ  rb  rA   r'  resr   rg  idxrowcol_namer   rz  keyr   pdr
row_structivr	pandas_dfs                            rC   executezMockServerConnection.executek  si    ::!*T!  ((&1&D!(#e* 5/	 )  d&8&89c=){{ LL%..G[0Q L$'LLN Ss8/)#c(D9+/s3x~~7G0H+IC04

 #C$7'(*.	1CGGCH- +.1H1H1M*MSW  GGCH-6 DG;;Ox(2OGOD ((c77<<>?FJKsC55c:KK9<E#CLL-EE~~E~= !LL&&0''7VX 
 ! %.cN !Aq	  *(1+*>*>L ! $K$6$6q(1+:N:N:T:T$UV "##
 &C %!& T""#!A#D#((*IKK P9<X9M9M9O	+H56P,S1D %D6$D 	/..88$tDz.$._ P LE $s   7M3 M8'M=AN/	NrA   c                     dt        t        j                               i}t        |v r|t           |d<   d|v r|d   |d<   ddlm}  | j                   |dd      fi | y )N	requestIddataframeAstdataframe_uuidr   QueryRecordMOCK	MOCK-PLAN)r   r   r   r    snowflake.snowpark.query_historyr  r  )r?   rA   notify_kwargsr  s       rC   r   z6MockServerConnection.notify_mock_query_record_listener  sg    $c$**,&78"f,,23J,KM.)v%.45E.FM*+@###K$DVVrD   c                 4    | j                  ddt               y )NrM  z#MockServerConnection.get_result_setrN  r1  )r?   ra  rF  rG  rI  rJ  rA   s          rC   get_result_setz#MockServerConnection.get_result_set  s     , 	$$"7"G+ 	% 	
rD   c           
      b   t        ||j                        }|j                         D cg c]N  \  }}t        t	        |j                               |j                  r|j                  n|j                  |         P }}}g }t        t        |            D ]  }g }	t        |      D ]  \  }
}|j                  ||
f   }t        |j                  j                  t              r;|9t        dj!                  ||j                  j                  j"                              }|	j%                  |        |j%                  t'        |	         dt)        t+        j,                               i}t.        |v r|t.           |d<   d|v r|d   |d<   ddlm}  | j4                   |dd	      fi | ||fS c c}}w )
N)rm   rp  rm  r  r  r  r   r  r  r  )r&   rn  ru  r   r   stripr   r   r   r   r  ilocro  rp  r/   r   r  r>  r   r-   r   r   r   r   r  r  r  )r?   ra  rA   r  column_namecolumn_datarJ   r'  r  valuesjattrvaluer  r  s                  rC   get_result_and_metadataz,MockServerConnection.get_result_and_metadata  s     d&8&89 -0IIK

 )[  1 1 34 #**  ''k2

 

 s3x 	&AF$U+ 	%4At}}55{C)##**5$--2H2H2N2NOE e$	% KKV%	& %c$**,&78"f,,23J,KM.)v%.45E.FM*+@###K$DVVU{K

s   AF+c                 <     | j                   |fddi|\  }}|d   S )NrG  TrR  )r  )r?   ra  rA   
result_setrY   s        rC   get_result_query_idz(MockServerConnection.get_result_query_id%  s-    +++DI$I&I
A'""rD   c                     t         S rN   r   rR   s    rC   max_string_sizez$MockServerConnection.max_string_size*  s    ""rD   rN   )r   z.snowflake.snowpark.query_history.QueryListenerr8   N)r  z,snowflake.snowpark.query_history.QueryRecordr8   N)NNNNNNrZ   r[   )    TAUTO_DETECTF)r  r  Tr  FF)FF)6r\   r]   r^   r   r   r   r   r   r<   r  r  r  rs  typeloggingLoggerr  r  intr  rk   rO   r_   rS   rr   r(  r3  r   bytesrE  r"   ROWr   r   r!   r&  r   r`  r%   r   r-   r
   r  r   	Decoratorwrap_exceptionr   r   r  r   r  r  r`   r  rH   rD   rC   rd   rd   a   s   H HT15c3h 8 15D 15f,H,	,
/H/	/
9J9	9 04/3'+*.&*37'}  (}  }	
 "$ d^ !0>s 3 SV  #
&4 &C  RU (5s 5x} 5 ""/

 
 	

 
 
  
 
 
$sCx.	!
( ""/_
i_
 _
 	_

 _
 _
 _
  _
 _
 _
 
$sCx.	!_
H  &+&6&:&: 

 
 	

  $
 
 $
 !

 
tCH~x'	(
,  	$E'$E $E 	$E
 
c3h$ER  &6&:&:#g/g/ g/ 	g/
 g/ $g/ g/ 
S	%x}h?Q6RR
g/RW$sCx. W ++  &6&:&:

 
 	

 
 $
 
S	"+,			
 	^
	

 ,
6)!)	tCy$y/)	*)V# #C #
 # # #rD   rd   	table_resr8   rc  c                 D   t        j                         }| j                  D ]  }| j                  |   }t	        |      }t        |j                  t              r|j                  j                  |j                  j                  dk(  rt        | |   j                        j                  d      s|j                  j                  dk  r| |   j                  d      ||<   |j                  j                  dk  r| |   j                  d      ||<   |j                  j                  dk  r| |   j                  d      ||<   #| |   j                  d	      ||<   <t        |j                  t              rU	 | |   j                  r,t        j                   | |   j#                         d
      ||<   n| |   j                  d	      ||<   | |   j#                         ||<    |S # t$        $ r/ t        j                   | |   j#                         d
      ||<   Y w xY w)Nr   r  r  int8r  int16   int32int64integer)downcast)r$   r  r   r   r   ro  rp  r/   r=  r>  r   r   
startswithastyper2   hasnans
to_numericr  OverflowError)r  pd_dfr  col_sf_typepd_df_col_names        rC   rV  rV  /  s   E%%  A((2*84{++[9$$..:$$**a/	(+112==eD ##--2(1((;(B(B6(Jn%%%//14(1((;(B(B7(Kn%%%//14(1((;(B(B7(Kn%(1((;(B(B7(Kn%,,m<
X&..,2,=,=!(+224y-E.) -6h,?,F,Fw,OE.) %.h$7$>$>$@E.!A AD L ! (.(9(9h'..09)n%s   8AG''4HH)WrT  rv  r  r   r   r   decimalr   r   typingr   r   r   r	   r
   r   r   r   r   unittest.mockr   "snowflake.snowpark.mock._constantsr   snowflake.connector.connectionr   snowflake.connector.cursorr   r   snowflake.connector.errorsr   4snowflake.snowpark._internal.analyzer.analyzer_utilsr   r   r   r   0snowflake.snowpark._internal.analyzer.expressionr   4snowflake.snowpark._internal.analyzer.snowflake_planr   9snowflake.snowpark._internal.analyzer.snowflake_plan_noder   &snowflake.snowpark._internal.ast.utilsr   *snowflake.snowpark._internal.error_messager   .snowflake.snowpark._internal.server_connectionr   "snowflake.snowpark._internal.utilsr   r    snowflake.snowpark.async_jobr!   r"   snowflake.snowpark.exceptionsr#    snowflake.snowpark.mock._optionsr$   snowflake.snowpark.mock._planr%   r&   ,snowflake.snowpark.mock._snowflake_data_typer'   r(   'snowflake.snowpark.mock._stage_registryr)   "snowflake.snowpark.mock._telemetryr*   snowflake.snowpark.mock._utilr+   "snowflake.snowpark.mock.exceptionsr,   snowflake.snowpark.rowr-   snowflake.snowpark.typesr.   r/   r0   r1   r2   r\   loggerPARAM_APPLICATIONPARAM_INTERNAL_APPLICATION_NAME"PARAM_INTERNAL_APPLICATION_VERSIONr7   rd   rV  rH   rD   rC   <module>r     s            R R R  ) > F 8  G N N J V N D B 3 N V G K B L &  
8	 " "= %C "( 3 (DK# K#\$ $;M $rD   