
    ɯei                       d dl Z d dlZd dlZ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 d dlmZmZmZmZ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!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z> erd dl?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZF d dlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZq d dlrmsZs d dltmuZumvZvmwZwmxZx d dlymzZzm{Z{m|Z|m}Z}m~Z~mZ d dlmZmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d lmZmZmZmZmZ d d!lmZmZmZmZ d d"l6mZmZmZ d d#lmZ d d$lmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d% d&ez      Z G d' d(e      Zd)eea   fd*Z	 dUd)ee   d,ed-d.d/eeeef      d0ed1efd2Zd3eeedef      d1efd4Zd3edd1edfd5Zd6eeedef      d7eeedef      d1efd8Z	 dVd9ed3edd:ee   d1efd;Z	 dVd<ee   d=d>d?d@d-d.d/eeef   dAedBedCeee      d1dDfdEZ	 dVdFeebeif   dGeeef   d-d.d/eeef   fdHZ	 dVdFebdGeeef   d-d.d/eeef   fdIZ	 dVdFebdGeeef   d-d.d/eeef   fdJZ	 	 dWdFebdGeeef   d-d.d/eeef   fdKZ	 dVdFebdGeeef   d-d.d/eeef   fdLZ	 dVdMed/eeeef      d1eeee   f   fdNZdMed1ee^   fdOZd+dPdFeadGeeef   d-d.d/eeef   dQed1efdRZdSed-d.fdTZy)X    N)defaultdict)Iterable)Enum)cached_propertypartialreduce)TYPE_CHECKINGAnyDictListNoReturnOptionalUnionTuple)	MagicMock)SelectTableFunction)TableFunctionJoin)DeleteMergeExpressionInsertMergeExpressionTableDelete
TableMergeTableUpdateUpdateMergeExpression)
CurrentRow
FirstValueLag	LastValueLead
RangeFrameRowFrameSpecifiedWindowFrameUnboundedFollowingUnboundedPrecedingWindowExpression)coerce_variant_inputremove_null_wrapper)ImportContextget_fully_qualified_name)EntireWindowIndexerRowFrameIndexeris_rank_related_window_function)SnowparkLocalTestingException)MockAnalyzer)EXCEPT	INTERSECTUNION	UNION_ALL
quote_name)AddAndBinaryExpression
BitwiseAnd	BitwiseOr
BitwiseXorDivideEqualNullSafeEqualToGreaterThanGreaterThanOrEqualLessThanLessThanOrEqualMultiply
NotEqualToOrPow	RemainderSubtract)Join)	AttributeCaseWhen	ColumnSum
ExpressionFunctionExpressionInExpressionIntervalLikeListAggLiteralMultipleExpressionNamedFunctionExpressionRegExpScalarSubquerySnowflakeUDFStarSubfieldIntSubfieldStringUnresolvedAttributeWithinGroup)	PlanState)PlanQueryTypeQuerySnowflakePlanQueryLineInterval)LogicalPlanRangeSaveModeSnowflakeCreateTableSnowflakeTableSnowflakeValues)	Ascending
NullsFirst	SortOrder)AliasCastIsNaN	IsNotNullIsNullNot
UnaryMinusUnresolvedAlias)	AggregateCreateViewCommandPivotSampleProjectSampleBy)
infer_type)generate_random_alphanumericparse_table_name)Column)MockedFunctionRegistrycast_column_to)pandas)MockSelectableMockSelectableEntityMockSelectExecutionPlanMockSelectStatementMockSetStatement)ColumnEmulator
ColumnTypeTableEmulatorget_coerce_result_type)convert_wildcard_to_regexcustom_comparator*fix_drift_between_column_sf_type_and_dtype)Row)BooleanTypeByteTypeDateTypeDecimalType
DoubleType	FloatTypeIntegerTypeLongTypeNullType	ShortType
StringTypeTimestampTypeVariantType_NumericTypec                   &    e Zd Zdddddeded    deeej                  ef      deeeef      de	f
 fdZ
edee   fd	       Zedee   fd
       Zedeeef   fd       Zed        Zedeeee   f   fd       ZdeddfdZdeddfdZ xZS )MockExecutionPlanN)childexpr_to_alias$df_aliased_col_name_to_real_col_namesource_planr   r   r   returnc                D   t         |           || _        || _        d | _        d| _        t               }d|_        t        dd| j
                        g|_	        |g| _
        || _        ||ni | _        |xs t        t              | _        g | _        d | _        d | _        y )N	MOCK_UUIDzSELECT MOCK_TEST_FAKE_QUERY()r   )super__init__r   sessionschema_queryuuidr   sqlr_   query_line_intervalsqueriesr   r   r   dictr   	api_calls_attributes
df_ast_ids)selfr   r   r   r   r   
mock_query	__class__s          _/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/snowpark/mock/_plan.pyr   zMockExecutionPlan.__init__   s     	& 	[
8
+<Q499+M*N
'"|
.;.G]R0EK4E 	1     c                     t        |       S N)describer   s    r   
attributeszMockExecutionPlan.attributes   s    ~r   c                     | j                   D cg c]-  }t        |j                  |j                  |j                        / c}S c c}w r   )r   rG   namedatatypenullable)r   as     r   outputzMockExecutionPlan.output   s/    CG??Sa	!&&!**ajj9SSSs   2Ac                     t         j                  dt         j                  dt         j                  dt         j                  g iS N)r[   PLAN_HEIGHT"NUM_SELECTS_WITH_COMPLEXITY_MERGEDNUM_CTE_NODES'DUPLICATED_NODE_COMPLEXITY_DISTRIBUTIONr   s    r   
plan_statezMockExecutionPlan.plan_state   s:     !!288"##R==r	
 	
r   c                     g S r    r   s    r   post_actionszMockExecutionPlan.post_actions   s    	r   c                 n    t         j                  | j                  t         j                  | j                  iS r   )r\   QUERIESr   POST_ACTIONSr   r   s    r   execution_queriesz#MockExecutionPlan.execution_queries   s.     !!4<<&&(9(9
 	
r   to_addc                 :    | j                   j                  |       y r   )r   update)r   r   s     r   add_aliaseszMockExecutionPlan.add_aliases   s    !!&)r   ast_idc                     | j                   	|g| _         y | j                   d   |k7  r| j                   j                  |       y y r   )r   append)r   r   s     r   add_df_ast_idzMockExecutionPlan.add_df_ast_id   s=    ??"%hDO__R F*OO""6* +r   )__name__
__module____qualname__r`   r   r   r   UUIDstrr   r   propertyr   rG   r   r   r   r[   r
   r   r   r\   r]   r   r   intr   __classcell__r   s   @r   r   r      s0    048<IM 
 +,  TYY^ 45 /7tCH~.F 
6 DO   TY T T 
DC0 
 
   
4tE{(B#C 
 
*$ *4 *+C +D +r   r   c                        e Zd Z G d dee      Zddddddddeeef   deeef   dee   dee   d	ed
   dee	   dee   dee
e      ddf fdZ xZS )MockFileOperationc                       e Zd ZdZdZdZy)MockFileOperation.Operatorputget	read_fileN)r   r   r   PUTGET	READ_FILEr   r   r   Operatorr     s    	r   r   N)local_file_namestage_locationr   r   formatschemaoperatoroptionsr   r   r   r   r   r   r   r   c                    t         
|   |||       || _        || _        || _        | j
                  xs g | _        || _        |	| _        || _        y )N)r   r   r   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   s             r   r   zMockFileOperation.__init__  sU     	;O .,-2r   )r   r   r   r   r   r   r   r   r   r`   r   rG   r   r   r   s   @r   r   r      s     3   *.(,/3-1 $,0 X&
 c3h "# ! +, k*  i) 
 r   r   order_byc                 t    | D cg c](  }t        |t              r|nt        |t                     * c}S c c}w r   )
isinstancerh   rf   )r   orders     r   coerce_order_by_argumentsr     s;      E9-9UIK3PP  s   -5F	result_dfanalyzerr-   r   keep_added_columnsr   c           	         g }g }g }g }| D ]  }	|j                  |	j                  |      }
|
|j                  vr,t        |	j                  |||      ||
<   |j	                  |
       |j	                  |
       |j	                  t        |	j                  t                     |j	                  t        |	j                  t              xs |	j                  t        k(          t        t        t        |||                  D ]*  \  }}}t        t        ||      }|j                  ||      }, ||_        |s|j#                  |      }|S )zqGiven an input dataframe `result_df` and a list of SortOrder expressions `order_by`, return the sorted dataframe.)bykeycolumns)analyzer   r   calculate_expressionr   r   	directionrf   null_orderingrg   reversedlistzipr   r   sort_values	sorted_bydrop)r   r   r   r   r   sort_columns_arraysort_orders_arraynull_first_last_arrayadded_columnsexpexp_namecolumn	ascending
null_first
comparators                  r   handle_order_by_clauser  %  sK    M 
##CII}=9,,,"6		9h#Ih   *!!(+  CMM9!EF$$s((*5X9J9Jj9X	

 *2S#%68MNO* E%	: .	:F
))V)D		E -INN=N9	r   intervalc                 4    | | dk(  st        | t              ryy)a  
    Validates that the input value is valid for use as an interval.
        None -> Unbounded interval either before or after the current row.
        0 -> Use the current row and the bound.
        Interval -> Use the Interval when calculating the bound.
    r   TF)r   rM   )r  s    r   validate_intervalr  J  s     8q=Jx,Jr   c           
          t        di | j                  j                         D ci c]  \  }}|j                         |  c}}S c c}}w )zK
    Negates each value in an interval. Returns a new Interval object.
    r   )rM   values_dictitemslower)r  r   values      r   negate_intervalr  V  sG      191E1E1K1K1M
N:3399;
N 
Ns   Ar  upperc                     | |y| xs
 t               } |xs
 t               }dD ]X  }| j                  j                  |      }|j                  j                  |      }|s|s>|xs d}|xs d}||z   dk7  sS||k\  c S  y)z)
    Returns true if lower >= upper.
    T)YEARQUARTERMONTHWEEKDAYHOURMINUTESECONDMILLISECONDMICROSECOND
NANOSECONDr   )rM   r  r   )r  r  part
lower_part
upper_parts        r   compare_intervalsr+  _  s     }XZEXZE 0 &&**40
&&**40
#qJ#qJZ'A-!Z//)0* r   r  registryc                     |xs t        j                         }| }|j                  j                         D ]  \  }} |j	                  d      |||      }  |S )zn
    Applies an interval object to a datetime column by repeatedly calling dateadd on the interval parts.
    dateadd)r{   get_or_creater  r  get_function)r  r  r,  
new_columnkvs         r   apply_intervalr4    sb     A1??AHJ$$**, H15X**95aJG
Hr   
order_spec	res_indexzpd.Indexreszpd.api.typing.DataFrameGroupByunbounded_precedingunbounded_followingrange_boundszpd.api.typing.RollingGroupbyc           	           fd} r|j                  t                     D 	cg c]  }	t         |	       }
}	|
d   j                  }g }|rj	                   d   j
                        }|\  }}t        ||   j                  t        t        f      rt        ||   j                  t              rB|t        |t              r0|t        |t              r|rt        |       }|rt        |       }t        |      rt        |      st        d      t        ||      st        d      t        ||
      D ]  \  }}	t!        j"                  dgt%        |	      z  |	j&                        }|D|dk(  r|	|   nt)        |	|   |      }|t!        j"                  |      |	j*                  |   |   k\  z  }|D|dk(  r|	|   nt)        |	|   |      }|t!        j"                  |      |	j*                  |   |   k  z  }|j-                  t/        t!        j0                  |	      j*                  |   |              |S t        ||   j                  t2              rt        |t              st        |t              rt        d	      |
D 	cg c]  }	t!        j0                  |	       }}	t        ||      D ]  \  }}	t!        j"                  dgt%        |	      z  |	j&                        }|||	|   |	j*                  |   |   |z   k\  z  }|||	|   |	j*                  |   |   |z   k  z  }|j-                  t/        |	j*                  |   |              |S t        d
      t        ||
      D ]l  \  }}	t5        |	j&                        j'                  |      }|rdn|}|rt%        |	      dz
  n|} ||d|	      } ||d|	      }|j-                  |	||dz           n |S |j                  t                     }|S c c}	w c c}	w )zyReturn a list of range between window frames based on the dataframe paritions `res` and the ORDER BY clause `order_spec`.c                      d z   cxk  rt              k  r[n  S t         fdD              }t         fdD              }||k(  s	  S  z   d z   cxk  rt              k  rT S   S )Nr   c              3   h   K   | ])  }t        |j                  j                            + y wr   r   r   iloc).0r  _winr   r   idxs     r   	<genexpr>zKhandle_range_frame_indexing.<locals>.search_boundary_idx.<locals>.<genexpr>  s0       %SYY		#-Xs   /2c              3   n   K   | ],  }t        |j                  j                  z             . y wr   r>  )r@  r  rA  r   deltar   rB  s     r   rC  zKhandle_range_frame_indexing.<locals>.search_boundary_idx.<locals>.<genexpr>  s:        %IItyyu5xs   25)lenr  )rB  rE  rA  cur_expr	next_exprr   r   r5  s   ```  r   search_boundary_idxz8handle_range_frame_indexing.<locals>.search_boundary_idx  s    3;*T* 
  % H   &	 I y(
 5LC 3;*T* 
 + 
r   r   )dayz3Mixing numeric and interval frames is not supportedzInvalid window frameTindexsf_typeszCnumeric ORDER BY clause only allows numeric window frame boundarieszDrange_between only operates on numeric or datetime group_by columns.   r   )rollingr)   r  rN  r   r   r   r   r   r   r   rM   r  r,   r+  r  pdSeriesrF  rL  r4  locr   r   	DataFramer   r  )r5  r6  r7  r   r   r8  r9  r:  rI  winordered_windowstypeswindows	group_colr  r  current_rowcondboundcast_windowsrow_idx	start_idxend_idxs   `  ``                  r   handle_range_frame_indexingra    s   "  {{#6#89
 #:sHmL
 
  "++ ((A)<)<mLI'LE5%	*33h5NO uY/88(C*UC*@*UC*@ (eV 4 (eV 4)%05Fu5M7M  )678NOO(+I(G $K99dVc#h%6ciiHD(  %z  	N!/I!F 
 		% 0CGGK4H4S SS(  %z  	N!/I!F 
 		% 0CGGK4H4S SSNN%bll3&7&;&;D&AER!p NK E),55|DeX.*UH2M7]  >MMcS 1MM(+I|(D Q$K99dVc#h%6ciiHD(	Ncggk.B9.MPU.UU (	Ncggk.B9.MPU.UU
 NN=#OPQ< N! 4Z  %(	?$C 	= Ssyy///<!4A'	*=#c(Q,7/	2sC	-gq#>s9w{;<	= N ++134Nm
n  Ns   O9O>r  
input_datac                 	   t        j                         j                  |       }|j                  j                  j                         }||5  |j                  j                         }|j                  j                         }d d d        t        | j                        }	|5  |	|j                  j                  j                  v r|	| _        t        | ||||      cd d d        S 	 d d d        | j                  dk(  rt        d| j                   d      |j                  j                  j!                  | j                  d| j                   dt"               	 t%        t'        j(                  d      |j                        }
|
xs |j,                  }d	|j.                  v r|j0                  }t3        j4                  |      }t3        j6                  |      }t9        j:                  |      }t=        |j>                        }d
D ]  }||v s|jA                  |       ||=  tC        | tD              ri }|D ]  }|| jF                  v stI        |jK                  |d            }d|v}|dk(  r@tM        jN                  | jF                  |   jP                  jS                  dd            ||<   vtU        | jF                  |   ||||      ||<    |f}d}ng }tW        |      D ]  \  }}tI        ||         }d|v}||jX                  k(  rg }| jZ                  |d  D ]i  }tC        |t\              r8|j_                  |j`                  D cg c]  }tU        |||||       c}       K|jc                  tU        |||||             k |j_                  |       	 |jc                  tU        | jZ                  |   ||||              |f}d}	 |dk(  r |di |d   ||d}|S  ||d   ||d}	 |S # 1 sw Y   rxY w# 1 sw Y   xY w# t*        $ rN d }
|j                  j                  j!                  |j                  d|j                   d|t"        nd        Y w xY wc c}w # td        $ r |jc                  d        Y w xY w# tf        $ rH}|
s|rd|j                   dnd}t        jh                  |d|j                   d|        Y d }~S d }~ww xY w)Nzfunctions.call_udfzUnknown function z". UDF by that name does not exist.z	Function zo is not implemented. You can implement and make a patch by using the `snowflake.snowpark.mock.patch` decorator.)external_feature_nameerror_messageraise_errorzsnowflake.snowpark.functionsz% is not supported in snowpark-python.__wrapped__)	_emit_ast_ast rz   ztyping.Optional[dict]'"keep_literalkwargsargsr   )
row_numberrb  z
A patch is provided for 'al  ' which is not supported in Snowpark Python. Please ensure the implementation follows specifications outlined at: https://docs.snowflake.com/en/sql-reference/functions-all and refer to https://github.com/snowflakedb/snowpark-python/blob/main/src/snowflake/snowpark/mock/_functions.py for patterns on creating a compatible patch function for input and output types.z!Error executing mocked function 'z0'. See error traceback for detailed information.re  r   )5r{   r/  r0  r   _connget_lockget_current_schemaget_current_databaser(   r   udf	_registryudf_namehandle_udf_expressionapi_call_sourcer,   log_not_supported_errorNotImplementedErrorgetattr	importlibimport_moduleAttributeErrorimpl__dict__rg  inspect	signaturegetfullargspectypingget_type_hintsr  
parametersremover   rR   named_argumentsr   r   jsonloadsr   replacer   	enumeratevarargschildrenrV   extendexpressionsr   
IndexError	Exceptionraise_from_error) r  rb  r   r   rZ  funcconnection_lockcurrent_schemacurrent_databasery  original_functo_mock_func
signaturesspec
type_hintsparameters_except_astclean_up_parameterto_pass_kwargs
param_name	type_hintrn  	call_argscall_methodto_pass_argsrB  r   rp  cccresulterrextra_err_infos                                    r   handle_function_expressionr    sD    "//1>>sCD&&,,557O| 	G%--@@BN'//DDF	G ,CHHnFVW  	8++//999',X}k	 	9	 "66/#CHH:-OP  	66"%((%chhZ 0C D+	 	7 	

##$BCTYY
 !-DIIL---#//""<0J!!,/D&&|4J !6!673 /!66!(();<-./ #.// 	JS000
z2 >?	'y8 7715++J7;;CCCM2N:. 2F++J7" %%12N:.	  $%	 !"78 +	.HCJsO,I#94Ldll"cd+ A!!T* +,--	 %' !5$&$.$,$11=!"	 0 ! * ( --90 ##D). '',LL-&$))5C+	.X "O	
("XIaLX[ZXF, M) 9Q<KJWF( Mg	G 	G	 	.  
66"&))%dii[0UV/3|+ 	7 	

p	B " . ''-.  
 !T .dii[ 9d e  	 	&66=dii[ I==K<LN	
 	
 M'
sa   5O2#8O?)P Q&,Q+R #R 2O<?P	AQ#"Q#+R	R		S=SSc                    |j                   j                  }| j                  }|j                   j                  j	                         }|5  |j                  |      }|j                  |      }	d d d        t        	      5  t        j                        t        u r2|j                  \  }
}t        j                  |
      j                  |   }n|j                  }t        | j                        t        |j                         k7  r7t#        dt        |j                          dt        | j                               t%        |j&                        }t)        | j                  |j                         D ]  \  }}|j+                  ||      }t-        ||||      }t/        |t0              r|j3                  t4              }t7        |j8                  t;        |d            }|2t#        d|j8                  j<                   d|j>                   d|       tA        |t;        |d            ||<    	 g }|jC                         D ]N  \  }}|jD                  rtG        |D cg c]  }|d u  c}      rd }ntI         ||       }|jK                  |       P tM        |t;        | j<                  | jN                        tQ        | j                   dd	jS                  |jT                         d
jW                               tX              }cd d d        S # 1 sw Y   xY wc c}w # tZ        $ r$}t#        j\                  |d|        Y d }~Ed }~ww xY w# 1 sw Y   y xY w)N	Expected  arguments, but received rK  FzUDF received input type  for column , but expected input type of (, )datasf_typer   dtypePython Interpreter Error: rr  )/r   rw  ry  rs  rt  get_udfget_udf_importsr'   typer  tupler  r  r  rF  r  _input_typesr,   r   rL  r  r   r   r   r   applyr%   r   r  r   r   r   r|   iterrowsstrictanyr&   r   r   r   r2   joinr   r  objectr  r  )r  rb  r   r   rZ  udf_registryry  r  rw  udf_importsmodule_namehandler_nameudf_handlerfunction_inputr   expected_typecol_namecolumn_datacoerce_resultr  _rowr3  r  r7  r  s                             r   rz  rz    s2    ##''L||H&&,,557O	 =""8,"228<= 
{	# F>U"(+%K#11+>GGUK((K s||C$4$4 55/C 0 0122KCPSP\P\L]K^_  'Z-=-=>$'c6F6F$G 	 E=''}=H.z8]K
 -5)//0DE2##Zu%EM $3.{/B/B/K/K.LLY^YcYcXd  eB  CP  BQ  R  (6Zu=(N8$%	,	 D(113 $3::##&>QqDy&>"?!F0c1BCFF#$ !"3<<>||nAdii
0B0B&C%DAFLLN C MF F	= =n '?  	)::%?u#E 	CF FsV   	#L?F,M,-LL$BL MLL	M
&M MM

MMc                    |j                   j                  }| j                  }|j                  |      }t	        |j                  |            5  t        |j                        t        u r2|j                  \  }}	t        j                  |      j                  |	   }
n|j                  }
t        | j                        t        |j                        k7  r7t!        dt        |j                         dt        | j                               t#        |j$                        }t'        | j                  |j                        D ]  \  }}|j)                  ||      }t+        ||||      }t-        |t.              r|j1                  t2              }t5        |j6                  t9        |d            }|2t!        d|j6                  j:                   d|j<                   d|       t?        |t9        |d            ||<    	  |
       }|j@                  }|jC                         D ]M  \  }}|jD                  r-tG        |D cg c]  }|d u  c}      r|jI                  d        ? |jH                  |  O |jK                  |       |jM                         }tO        |gt9        | j:                  | jP                        tS        | j                   dd	jU                  |jV                         d
jY                               tZ              }cd d d        S c c}w # t\        $ r$}t!        j^                  |d|        Y d }~8d }~ww xY w# 1 sw Y   y xY w)Nr  r  rK  FzUDAF received input type r  r  r  r  r  r  r  rr  )0r   udafry  get_udafr'   get_udaf_importsr  handlerr  r  r  r  r  rF  r  r  r,   r   rL  r  r   r   r   r   r  r%   r   r  r   r   r   r|   aggregate_stater  r  r  
accumulatemergefinishr   r   r2   r  r   r  r  r  r  )r  rb  r   r   rZ  udaf_registry	udaf_namer  r  r  
udaf_classr  r   r  r  r  r  AggregationAccumulatorsome_agg_stater  r  r3  r  r7  r  s                            r   handle_udaf_expressionr    s'    $$))MI!!),D	}55i@	A D&(,		%K"00=FF|TJJ s||D$5$5 66/C 1 1233LSQTQ]Q]M^L_`  'Z-=-=>$'d6G6G$H 	 E=''}=H.z8]K
 -5)//0DE2##Zu%EM $3/0C0C0L0L/M\Z_ZdZdYe  fC  DQ  CR  S  (6Zu=(N8$%	,	%/\"3CCN(113 <3;;33'?aT	'?#@*55d;5*55s;< #((8+224F !X"3<<>||nAdii
0B0B&C%DAFLLN C ID DZ (@$  	)::%?u#E 	D DsJ   F,M;>L9LB=LML	L>L94M9L>>MM
c           
         |j                   j                  }| j                  }|j                  |      }|j	                         }	t        |	d      rt        |	j                  d      r|j                         }
|
j                  D cg c]  }|j                  d       c}|
_        |	j                  |
      }|rEt        j                  |
j                  |
j                  D ci c]  }||dz   
 c}      |fd      }|S t        g       }|j                  j                  }|j                  j                   D ci c].  }|j"                  t%        |j&                  |j(                  	      0 }}t+        |j                  j                         D ci c]'  \  }}|t%        |j&                  |j(                  	      ) }}}| j,                  r| j,                  }|rt/        |j                        |z   }t1        |      t1        |j                        t1        |j                  j                        z   k(  sJ d
       |j3                  |j4                         |j3                  |j6                         t        |	d      rg }t1        |      dk(  r| j8                  rt;        d | j8                  D              sJ d       t=        d | j8                  D              }|j>                  rd g}ntA         |	jB                  |       }|D ]  }|jE                  t=        |              n|jG                         D ]  \  }}|j>                  rtI        |D cg c]  }|d u  c}      rd }0tA         |	jB                  |       }|D ]O  }|r1|jE                  t=        |jJ                        t=        |      z          6|jE                  t=        |             Q  t        ||||      }|j                  D cg c]  }|j                  d       c}|_        t        |	d      r|	j                          |S c c}w c c}w c c}w c c}}w c c}w c c}w )Nend_partition_sf_vectorized_inputrl  _Rr   rO  axis)r  r   r   zBnon-unique identifiers found, can't carry out table function join.processr   c              3   <   K   | ]  }t        |t                y wr   )r   rP   r@  args     r   rC  z)handle_udtf_expression.<locals>.<genexpr>  s      14JsG,s   z4Arguments must be literals when no data is provided.c              3   4   K   | ]  }|j                     y wr   r  r  s     r   rC  z)handle_udtf_expression.<locals>.<genexpr>  s     ;3SYY;s   r  r   rN  sf_types_by_col_index)&r   udtf	func_nameget_udtfr  hasattrr  copyr   striprQ  concatrenamer   _output_schemanamesfieldsr   r   r   r   r  aliasesr  rF  r   rN  r  rp  allr  r  r&   r  r   r  r  values)r  rb  r   r   rZ  join_with_input_columnsudtf_registry	udtf_namer  r  dfr  r  r7  output_columnsfrN  rB  r  rp  r  
result_rowr  r  r3  s                            r   handle_udtf_expressionr  U  s    $$))MI!!),D llnG w(W5. __,.JJ7qaggcl7
$$R(" 99#DAAq4xK#DEtLSTD  
 ,,22 ((//
 FFJ

QZZHH
 
 $D$7$7$>$>?!
Q QZZ!**EE!
 !
 ;; [[N"!*"4"45FN~&#j.@.@*AC##))E +  TST  OOJ//0!(()I)IJ 7I&D :!# 8;  JIJ  ;#((;;;; 6D0$1GHF&, 7
E*$567 )113 	?FAs{{ss+C!AI+C'D!%!4_W__c5J!K*0 ?J6 $E#**,=j@Q,Q R $E*,= >	?	?  &!&;	C 25=A1773<=CK 7O,!!#
s 8 $E
!
T ,D" >s$   P)P.83P3,P8P>
+Qc           
         |j                   j                  }| j                  }|j                  |      }t	        |j                  |            5  t        |j                        t        u r2|j                  \  }}	t        j                  |      j                  |	   }
n|j                  }
t        | j                        t        |j                        k7  r7t        dt        |j                         dt        | j                               t!        |j"                        }t%        | j                  |j                        D ]  \  }}|j'                  ||      }t)        ||||      }t+        |t,              r|j/                  t0              }t3        |j4                  t7        |d            }|2t        d|j4                  j8                   d|j:                   d|       t=        |t7        |d            ||<    	  |
|j>                   }|j@                  r|jB                  jD                  }|jB                  jF                  D ci c].  }|j:                  t7        |j8                  |jH                        0 }}tK        |jB                  jF                        D ci c]'  \  }}|t7        |j8                  |jH                        ) }}}| jL                  r| jL                  }t!        ||||	      }cd d d        S c c}w c c}}w # tN        $ r$}t        jP                  |d
|        Y d }~>d }~ww xY w# 1 sw Y   y xY w)Nr  r  rK  Fz%Stored procedure received input type r  r  r  r  r  rr  ))r   sproc
sproc_name	get_sprocr'   get_sproc_importsr  r  r  r  r  r  rF  r  r  r,   r   rL  r  r   r   r   r   r  r%   r   r  r   r   r   r|   r  _is_return_tabler  r  r  r   r  r  r  r  )r  rb  r   r   rZ  sproc_registryr  r  r  r  sproc_handlerr  r   r  r  r  r  r7  r  r  rN  rB  r  r  s                           r   handle_sproc_expressionr    s$    %%++NJ$$Z0E	~77
C	D B

u$(-

%K%33K@II,WM!JJM s||E$6$6 77/C 2 2344McRUR^R^N_M`a  'Z-=-=>$'e6H6H$I 	 E=''}=H.z8]K
 -5)//0DE2##Zu%EM $3;K<O<O<X<X;YYefkfpfpeq  rO  P]  O^  _  (6Zu=(N8$%	,	!6!67C%%!&!5!5!;!; #1188 FFJ

QZZPP  #,E,@,@,G,G"H)Q QZZ!**MM)% ) ;;%([[N#*%*?	 EB BT)  	)::%?u#E 	{B BsV   F,L7;A	L3K<7$L,L*L1L7<L	L4L/*L7/L44L77M planc                 \    dd l } j                  t         t        t        f      r# j
                   j                  j                  }n  j                  }|j                  j                  j                  }|j                  j                  j                         }t        t              rt        j                  j                  D cg c]  }|j                    c}j                  D ci c]-  }|j                   t#        |j$                  |j&                        / c}t(              }|j*                  D ]e  }|j,                  |   }	|j,                  |   ||   _        t        |	j$                  t0              rD||   j3                  |j4                  d       ||<   g |S t        t6              rt9        j:                        S t        t<              r*j>                  xs g }
j@                  }jB                  }jD                  }jF                  }jH                  }jJ                  }jL                  }t9        |      }|
t               S g g g }i }|
D ]  }t        |tN              r|jQ                         D cg c]  \  }}|	 c}}z  tS        |j*                        z  |tS        |jT                  r|jT                  jW                         n|j,                  jW                               z  }|jY                  |jZ                         t        |t\              r|j^                  rt        |j^                  tN              r|j^                  j`                  D ]n  }|jc                  |      }je                  |       tg        |||      }je                  |       |je                  |j.                         |jh                  ||<   p yt        |tj              r'jm                  |jn                  |j                         }n|jc                  |d      }tg        |||      }je                  |       je                  |       |je                  |j.                         |jh                  ||<   t        |tj              s0t        |j^                  tp              sLts        |j                         }||j^                  jn                  <   jQ                         D ]$  \  }}||j^                  j                   k(  s ||<   &  tu        jv                  d      }t        |ty        |      D ci c]  \  }}||
 c}}t{        |      D ci c]  \  }}||
 c}}      _        |_-        |r#tg        ||      j}                  d	         |rt        ||      |#|j                  |d  j                  |
      |rj                         |rj                  |      S t        t              rsj                  d   }t9        t        |j                  j                              } t        dt        j                              D ]  }j                  |   }!|!j                  }"t9        t        |!j                  j                              }#t        | j*                        t        |#j*                        k7  r=t        dt        | j*                         dt        |#j*                         d|dz          | j*                  |#_        |"t        t        fv rWtu        jv                  | |#gd      } |"t        k(  r | j                         j                  d      n| } |#j,                  | _        '|"t        t        fv r| j                         j                  d      jC                  d       j                         dkD  r=| j                  | j                         j                  d      j                  dd        } |#j                         j                  d      j                         }$| j                         j                  d      }%|"t        k(  rW| | j                  |#jV                  j                               j                  d      jV                  |$|%jV                  z  z     } nT|"t        k(  rK| j                         } | j,                  }tu        jv                  | |#|#g      j                  d      } || _        | j                         } |j                  j                  j                  d|" t              j                  dt        |"      it                | S t        t              rj                  j                   }&|j                  |&      }||S |j                  |&      }'|'t9        |'      } | S t        |&      }(dj                  |(d d D )cg c]  })|)j                  d       c})      }t        d| d      t        t              rTt9        j^                        }*j                  szj                  snt        |*      r<t        |*j                  d   j                         j                  |*j,                        S t        d t(        |*j*                  |*j,                        S j                  D cg c])  } j                  j                  jc                  |d      + }+}t        t        |+            D cg c]  }dt        |dz          d  },}t        t        |,            D ]  }j                  |   }-t        |-tj              rt        |-j^                  t              r:t        |-j^                  j                        }.t        |.|*|d      }*|-j^                  }-t        |-j^                  t              rt        |-j^                  j$                  t0              r|*j                  t        |*j*                        |,|   t        |-j^                  j                  gt        |*      z  t#        |-j^                  j$                  |-j^                  j&                        !             ?t        |-j^                  t        t        t        f      rH|*j                  t        |*j*                        |,|   t        d gt        |*      z  t(        d "             |j                  j                  j                  d#t        |-j^                        j                   t              j                  t        |-      j                  t        |-j^                        j                  d$t               At        |-tp        t\        f      rT j                  j                  jc                  |-      }	 |*j                  t        |*j*                        |,|   |*|          |j                  j                  j                  d#t        |-      j                   t              j                  d&t        |-      j                  it                i i j                  D cg c]k  } j                  j                  jc                  |      t        t        |t                    tg        ||* j                  j                        j.                  fm c}t{              D ]  \  }/\  }}}0|0|<   |0|/<    g }1	 j                  D ]  }t        |t              rHt        |j$                  t0              r.dt        |j                         d }2|1je                  |*|2          [ j                  j                  jc                  |      }t        |t        t        f      r>tg        ||* j                  j                        }3t        |3      t        |*      k(  r|3|*|<   |1je                  |*|           	 |*j                  |1xs d( dd)      }4j                  D cg c]2  }ts         j                  j                  jc                  |d            4 c}t        t                    D cg c]  }t        |       },}t        |,t(        *      g d+t        f fd,}5|4j                  s	 |5|*       n9|4j                  jQ                         D ]  \  }}6|*j                  |6   }7 |5|7        t              r[t        t        d               D ]A  }8t        t        t                    D 9cg c]
  }9|9   |8    c}9t(        -      }:|:|,|8   <   C _        _*        _        S t        t              rt        t        j                  j                  t        j                              D ;cg c]  };|; c};t#        t               d      !      }8t        |8d.gd.|8j.                  it(              S t        t              rt        d/ j                  D              S t        t               ri }<i }=t9        j                  |<      j                  d      }>t9        j                  |=      j                  d      }?t        j                  d0d       }@|@}At        |AtR              r-Ar(AD cg c]  }ts        |j                                }A}n6d }An3t        At              rAj                   }Ant        At              rd }And }Aj                  j                  }B|Bj                  d1      rBd2d  }BBj                  d3      rBd4d  }BBd5k(  rd6}BnBd7k(  rd8}Bnd9Bv rd:}Bnd;Bv rd<}Bnd=Bv rd>}Bd?j                  j                  v rAA?|>j*                  j                  |?j*                        jV                  j                         }AAd>}B|>j                  |?ABj                         @      j,                  jY                  |>j,                         j,                  jY                  |?j,                         |Ar|j                  d      t        AtR              rZAj*                  j                         D 8cg c]	  }8|8Avs|8 c}8z   }C|C   |CD 8ci c]  }8|8j,                  |8    }}8|_        t        |<j                               j                  |=j                               }Di |<|=jQ                         D ci c]  \  }}|Dvr|| }E}}jY                  |E       j                  rLfdA}Ftg        j                  |      j}                  d	      j,                  }d;j                  j                  v r|> F|>         nd=j                  j                  v r|> F|>          nd6j                  j                  v rr|> F|>          }Gd |G|?j*                  <   tu        jv                     |Ggd      |?j*                  jV                  D ]   }H||H   }It#        |Ij$                  d      ||H<   " n/d8j                  j                  v rq|? F|?          }Jd |J|>j*                  <   tu        jv                     |Jgd      |>j*                  jV                  D ]   }K||K   }It#        |Ij$                  d      ||K<   " nd:j                  j                  v r|> F|>          }Gd |G|?j*                  <   |? |F|?          }Jd |J|>j*                  <   tu        jv                     |G|Jgd      |jQ                         D ]  \  }2}Lt#        |Lj$                  d      ||2<     n   |_        jC                  j!                         d       S t        t"              rt%        |      S t        t&              rNt9        j(                        } |j+                  j,                  | j.                  j0                  B      S t        t2              rj                   }&|j                  |&      }||S |j                  |&      }'|'t9        |'      } | S t        |&      }M|MdC   }NdD|Nv rIdENv rE|j+                  Nt        dgdgdgdF      t4        j6                         |j                  |N      S t        M      dkD  rMdG   n|j                  j9                         }Ot        M      dHkD  rMdI   n|j                  j;                         }Pt        d|PddC  dOddC  dNddC  d      t        t<              rt9        j^                        } j>                  r+j>                  dk  sj>                  dJkD  rt        dK      | jA                  j>                  d n tC        j>                  t        |             jD                  jF                  L      S t        tH              rt9        j^                        }  j                  j                  jc                  jJ                        }8tM        dM jN                  jQ                         D cg c]!  \  }}| | |8   |k(     jA                  |N      # c}}      }| j,                  |_        |S t        tP              rLt9        j^                        }j                   }Q|jS                  j^                  |Qj2                         |S t        tT              r>|5  |jW                  j,                        }RdOtY               z   }S|Rj                  d|St        t        |R                   jZ                  ryt9        jZ                        }TRj                  |Td dP@      }U|Uj,                  jY                  |Rj,                         |Uj,                  jY                  |Tj,                         |U}VnR}Vj\                  rtg        j\                  V|      j}                  d	      Rj_                  t`        d      j                  |V   |Rj*                     j_                  t`        d            }Wt#        tc               d      |W_        |R|W   }X|V   }VnR}XdQ }Y	 Vje                  Y      }ZZRj*                     jk                  dR      }[	 Xje                  Y      j_                  t`        d      }\[\   }]|]jC                  dS       j                         }^Zj                  Xj*                  dTU      j                  }_Vjl                  |_   j                  d      }`|Vj,                  |`_        jn                  jQ                         D ]^  \  }a}b|jc                  |a      }Rjl                  `S      j                  }ctg        |b|`|      }d|c|d_T        |d|Rjl                  |`|S   |f<   ` Rj                  Sd      }R|j+                  j,                  |Rt4        jp                         d d d        ts        t        `      ^      gS t        tt              r|5  |jW                  j,                        }RjZ                  ryt9        jZ                        }TRj                  |Td dP@      }U|Uj,                  jY                  |Rj,                         |Uj,                  jY                  |Tj,                         |U}VnR}Vj\                  rtg        j\                  V|      j}                  d	      |V   }VRj_                  t`        d      j                  |V|Rj*                     j_                  t`        d            }Wt#        tc               d      |W_        |R|W    }enRj                  d      }e|j+                  j,                  et4        jp                         d d d        ts        t        R      t        e      z
        gS t        tv              r|5  |jW                  j,                        }RdOtY               z   }SdVtY               z   }ft9        jx                        }T|Rj                  d|St        t        |R                   |Tj                  d|ft        t        |T                   |Rj                  |Td dP@      }U|Uj,                  jY                  |Rj,                         |Uj,                  jY                  |Tj,                         tg        jz                  |U|      }g|gj|                  dk(  rt        g Uj*                        }gUg   j                  d      }h|Uj,                  |h_        g }idx}jx}k}lt               }mt               }nt               }oj~                  D ]   }pt        |pt              rd}kpj\                  r/tg        pj\                  h|      j}                  d	      |h   }`nh}``|`S   j                  oj                  n            jV                      }`pjn                  jQ                         D ]^  \  }a}b|jc                  |a      }Rjl                  `S      j                  }ctg        |b|`|      }d|c|d_T        |d|Rjl                  |`|S   |f<   ` `j                         D ]  \  }}9oj                  |9S           4t        pt              rd}lpj\                  r/tg        pj\                  h|      j}                  d	      |h   }Vnh}VRj_                  t`        d      j                  V|Rj*                     j_                  t`        d            }Wt#        tc               d      |W_        |R|W   j                         D ]  \  }}9nj                  |9S           RW    }R"t        pt              s5d}jTj_                  t`        d      j                  h|Tj*                     j_                  t`        d            }Wt#        tc               d      |W_        |T|W    }qpj\                  r.tg        pj\                  q|      j}                  d	      |q   }qq|qf   j                  m      jV                      }q|qj                         D ]  \  }}9mj                  |9f           t        g Rj                  Sd      j*                  t(        *      }r|Rj,                  |r_        pj                  rt               }sty        pj                  |pjV                        D ]  \  }}|jc                  |      }|rj*                  vrt        dW| dX      sj                  |       tg        |q|      }dt        |djV                  t(        r|   j.                  Y      |r|<    t        rj*                        j                  s      D ]#  }tr|t   j3                  |j4                  d dZ       % nt        pjV                        t        rj*                        k7  r7t        d[t        rj*                         d\t        pjV                               ty        rj*                  pjV                        D ]  \  }8}tg        |q|      }d|dr|8<    ije                  r       # Rj                  Sd      }Rir+tu        jv                  Rgiz         }u|Rj,                  |u_        nR}u|j+                  j,                  ut4        jp                         d d d        g }ujruje                  t        m             kruje                  t        o             lruje                  t        n             ts        u gS t        t              rt9        j^                        }*t        j                        dk(  sJ d]       j                  d   }vt        |vj                        dk(  sJ d^        j                  j                  jc                  vj                  d         }w|vj                   j                         t        j                  t        t        tB        t        d_vr$t        j                  t        d` d              j                  j                  jc                  j                        }xt        j                  t              r%j                  D cg c]  }|j                   }y}n]j                  g }ynM|j                  j                  j                  daj                   t              j                  t        b       j                  D zcg c]'  }z j                  j                  jc                  |z      ) }{}z|{xs& |*j                         D 8cg c]  }8|8wxhvs
|8 c}8}6t)               fdc}|j                  rj                  j                  nd }}ddk(  r}xs d}}|*j                  xw||6e      }~|~j                  dZ       yr~tS        |6      yz      }~t        ~j*                        t        |6      z
  D ]  }~|   j}                        }|j3                  d i      j3                  d }i      jV                  t        |*w   j.                  f      |~|<   ts        t        |            }|~j                  ||idg       |~j,                  j                  |      |~j,                  |<    t{        ~j*                        D ci c]  \  }}|~|   j.                   c}}~_*        |~S t        t              r8t9        j                  d         }*t        j                  |*|dh      }|S t        t              rt         j                  g |d d      S |j                  j                  j                  dit              j                   t              j                  t        b       y c c}w c c}w c c}}w c c}}w c c}}w c c})w c c}w c c}w # t        $ r t        d%|       w xY wc c}w # t        $ r}t        d'|      d }~ww xY wc c}w c c}w c c}9w c c};w c c}w c c}8w c c}8w c c}}w c c}}w # tf        $ r Vji                  Y      }ZY zw xY w# tf        $ r, Xji                  Y      j_                  t`        d      }\Y jw xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   'xY wc c}w c c}zw c c}8w c c}}w )jNr   )r   rN  r  T)parse_local_namerO  r  )r  rN  r  Fr  )nr   zbSQL compilation error: invalid number of result columns for set operator input branches, expected z, got z in branch ignore_indexr  c                     | S r   r   xs    r   <lambda>z#execute_mock_plan.<locals>.<lambda>  s     r   rK  )keepzSetStatement operator r   rd  internal_feature_nameparameters_inforf  .   z"'zObject 'z#' does not exist or not authorized.rM  )r  r  r   rN  )
keep_aliasz<local_test_internal_>)r  r  r  r  r  zAggregate expression )agg_exprzagg_expr.childinvalid identifier r#  z9This is not a valid group by expression due to exception c                      yNTr   r  s    r   r  z#execute_mock_plan.<locals>.<lambda>{  s    r   )r   sortdropna)r   r  	cur_groupc           	      f   g }rpt              D ]b  \  }\  }}}|r)|j                  j                  |   j                         5| j                  rB|j                  | j
                  d   |          d t        j                  t              d        D ]  \  }}t        || j                  j                        }t        |t              ri| j                  dkD  sj                  s|j                  |j                  d          |j                  x	|t              z      <   |t              z   <   | j                  dkD  sj                  s|j                  |       t!        t#        |      d      x	|t              z      <   |t              z   <   	 
j                  |       y )Nr   Tr   )r  r   grouping_expressionsr  emptyr?  aggregate_expressionsrF  r   r   	_analyzerr   r   sizeiatr  r   rw   )r)  r  rB  expr
is_literalr  r  cal_exp_rescolumn_expsr   r  r   r  result_df_sf_Typesresult_df_sf_Types_by_col_idxr   s           r   aggregate_by_groupsz.execute_mock_plan.<locals>.aggregate_by_groups  s   F2;K2H ?.C.$
A!k&F&Fs&K&Q&QR&__innQ&7&=>	? &11#k2B2DE S 3LL**!	 k>: ~~)1Q1Qkooa&89
 $++	,&c+&6 675c+.. !~~)1Q1Qk2
 #";/$	&c+&6 675c+../8 KKr   r  r  z"ID"c              3   2   K   | ]  }t        |        y wr   )r   )r@  cols     r   rC  z$execute_mock_plan.<locals>.<genexpr>  s     US^C0Us   using_columnszUSING    zNATURAL    z
LEFT OUTERLEFTzRIGHT OUTERRIGHTFULLOUTERSEMIINNERANTICROSSNATURAL)onhowc                     | j                  t        d      j                     | j                     j                  t        d            }t	        t               d      |_        |S )NrO  T)r  r  isinr   r   r   r  )base_dfret	conditionr   s     r   
outer_joinz%execute_mock_plan.<locals>.outer_join0  sS    mmE1-22i(9??qI )=
r   )column_namesr   SNOWPARK_TEMP_TABLEREADONLY)ABC   i zTparameter value out of range: size of fixed sample. Must be between 0 and 1,000,000.)r  fracrandom_statec                 4    t        j                  | |gd      S )NTr  )rQ  r  r  ys     r   r  z#execute_mock_plan.<locals>.<lambda>  s    Aq6= r   )rY  row_id_crossc                 \    t        | t        t        f      rt        j                  |       S | S r   )r   r   r  r  dumps)cells    r   flatten_object_cell_funcz3execute_mock_plan.<locals>.flatten_object_cell_func  s$    dT4L1::d++r   )r(  c                     | dkD  S )NrO  r   r  s    r   r  z#execute_mock_plan.<locals>.<lambda>  s
    A r   first)subsetr  source_row_id_zinvalid identifier 'rk  r  r  )inplacez7Insert value list does not match column list expecting z	 but got zGDataframe plan should fail before this if one aggregate isn't supplied.z6Aggregate functions should take exactly one parameter.)avgcountmaxminsumz'Unsupported pivot aggregation function zPivot values from rd  r  rf  c                 v    | j                         j                         rS     | j                               S r   )isnullr  r(  )r  agg_function_nameagg_functionssentinels    r   agg_functionz'execute_mock_plan.<locals>.agg_function9  s>     ==?&&(  6]#45fmmoFr   rk  )r   r  aggfuncrL  )r  )r   ri  )r  zMocking SnowflakePlan )numpyr   r   r   r^   r   r   r/  r   rs  entity_registryrt  re   r   r  r   r   r   r   r   r  r   rN  r  r   r  nanr   execute_mock_planexecution_planr   
projectionfrom_wherer   limit_offset	distinct_exclude_colsrV   r  r  r  r  r   _null_rows_idxs_maprp   r   r  r   r   r   _null_rows_idxsri   r   expr_idrG   r2   rQ  r  r  r  fillnar  r?  headdrop_duplicatesr  r   set_operands
selectable_sessionrangerF  r   r,   r0   r1   reset_indexr.   r/   rq  r  rk  rL  r  rK  ravelr|  r  r   r   r}  r   entityread_table_if_existsread_view_if_existsry   r  r  rq   r.  r,  to_frameTrZ   r   order_by_colsrP   insertr   r  rO   rK   r5   KeyErrorboolrR   groupbyindicesra   startendr   stepr   ru   project_listrF   leftrightr~  	join_typer  rz   r   
startswithintersectiontolistr  r  setkeysjoin_conditionnotnar   execute_file_operationrc   querywrite_table
table_namemoderP  rd   rb   IGNOREru  rv  rt   	row_countsamplerm  probability_fractionseedrv   r;  r   	fractionsrr   create_or_replace_viewr   
read_tablerx   source_datarN  r  r  r   mapr  applymapvalue_countsrS  assignments	OVERWRITEr   r   r   source	join_exprr0  clausesr   unionr  addr   r   
differencers   
aggregatesr  
statisticsmeanrl  rn  r  
ValueErrorpivot_columnpivot_valuesr   grouping_columnsdefault_on_nullpivot_tabler  popr   r  table_functionr   	func_expr)r  r   npr   rx  r  r  tablecolumn_namer  r|  r}  r~  r   r  r  r  r  from_dfrN  null_rows_idxs_mapr  r  decolumn_seriesquoted_namer2  r3  r  ifirst_operandres_dfoperandr   cur_dfany_null_rows_in_cur_dfnull_rows_in_res_dfentity_namer{  db_schema_tabler(  child_rfaggregate_columnsintermediate_mapped_columnr#  r  rB  column_typeby_column_expressionr  materialized_columnchildren_dfsr8  r  r)  r;  r  series_datanumL_expr_to_aliasR_expr_to_aliasr  r  r<  rH  rI  reordered_colscommon_columnsnew_expr_to_aliasrO  unmatched_leftright_columnctunmatched_rightleft_columncol_typeobj_name_tupleobj_name
obj_schemaobj_database	view_nametargetROW_IDr  cartesian_productintermediatematchedmatched_rowsrc  flatten_intermediaterows_value_counts	key_indexmatched_countmulti_joinspd_indexrows_to_updateattrnew_exprtarget_indexnew_valrows_to_keepSOURCE_ROW_IDr  join_resultinserted_rowsinsert_clause_specifiedupdate_clause_specifieddelete_clause_specifiedinserted_row_idxdeleted_row_idxupdated_row_idxclauseunmatched_rows_in_sourcerows_to_insertinserted_columnsunspecified_colr7  agg
agg_columnr  r  r  r  ru  defaultr  res_colfilled
quoted_colr  r   rr  rs  r5  r   rN  r  r   r6  r7  rt  r   s   ``                                                                                                                                  @@@@@@@@@@@r   rz  rz    s4+    **$*M:;&&<<))==&&,,<<O&&,,557O+/%0%7%78QVV8DODVDV?@
1::qzz:: 
 !== 	NKnn[1G).)DE+&g..=%*;%7%?%?%Mk"		N
 +67 !;!;]KK+231<1G1G1M2
*5*;*;&1&7&7/:/C/C + 2 2 + 2 2%//	"-":":#E=9? ?" /	?C#t$w}}7tq!77400D44 1188: ))002 
 #))'*E*EF30IIsyy$/.. TA"*"2"21m"DKNN;/$87Hm%M KK.OOM$9$9:6C6S6S&{3T c5)"/"3"3CKK"JK"*"2"2]T #3 #K !5(M! {+M* 5 562?2O2O";/cE+!#))Y7&0&:;Fcii&7&78$1$7$7$9 ?DAq CIINN23>a 0?[/	?b YYt!$!'*7H'=>tq!ad>4=h4G"HDAq1a4"H
	
 $	(:	%,UIxWI!)"2"2"2"?@I.)X}I !%NN673	!0I!113I!|<I+/0#003"(($$ 
 q#k6678 7	A!..q1G''H&!'"4"4k6J6JKF 6>>"c&..&993xy|  ~D  ~L  ~L  zM  yN  NT  UX  Y_  Yg  Yg  Uh  Ti  it  uv  yz  uz  t{  |  $^^FNE9--FF#3$G  5( **,88d8C 
 #)//fi00 MMO''Q'/55kBHHJQN#[[v}}/B/B/B/J/P/PQRQS/T[UF*0--/*=*=1*=*E*I*I*K'&,mmo&9&9q&9&A#y(#V]]%8%8%:;??Q?GOO36I6P6PPF '#335F%H  YY'?@PP" Q F '/FO  //1  &&>>,B8**M*.{*;*D*D%/X$? 3	 ? e7	p +34!((--44[AL(<<[I%&~}EFM*;78KL$**U+LM+ug@A
 	
 +y)$[%6%6F1144 x= hmmA.779;;hFWFWX	 # $,,%..		 #88
 LL""**35*A
 

 <AEVAW;X&
67#CAJ<q1&
" &
 s567 E	A"88;H(E*hnnk:$= 44%M  6%x=% H  (~~Hhnng6:NN++\< OOH,,-215&"*.."6"6!7#h-!G$. ( 7 79P9P%	  NNW.@BR$S OOH,,-215&"&#h-!7"($( $$**BB0Ed8>>FZFcFcEd.e.2;.?.H.H(,X(?(?.28>>.B.K.K) %8 C  Hy/&BC"ll44<<XF	OOH,,-215 -   &&>>,A$x.BYBYAZ*[*.{*;*D*D"DN$;$;% !4 ? }E	N  (*% #77	
  &&..s3ZW-.$4<<#9#9='	
 3<K2H 	=.C.+q+   2=)#.		=  "	"77 Gc7+
3<<0V!6s399~6FaHH(//0BC"&,,"8"8"@"@"EK!#(:<S'TU.B4<<+A+A=/+
 23s8}D4GH[1(//0EFG(  ''#7eE ( 
 #88
 t||--55ce5LM
 7<CL6I%Jc!f%J"%J!*DFS	(	 = (	  (	 T ##)*2288: /
7$MM'2	 $I./ t9Sa\* I,49#d)4DES$s)C.E  >I	4S9:I 0	*G	'#	+u% !%%{K<L<L8M  xz51
 "Hckk*	
	 +w'UK<T<TUUU+t$ !1!1?COO P 
 "+"3"3_EQQ R 
   5 5Mb$578j+88F#B 
 BB ##''>>(#ab'C>>*%ab'C,CM!Cs]Cs]Cs]C ..222rz**5==9@@GGIB:CJJ		  
	 	!!$--0!!%..1!--4-8I"d#!##,#4#4#;#;#='BC' " &n5	DRSSC!3!3C!88SS%-	"_1134AA  "

!! eg
1 & qD
 
 	./%% -**Ixf5f!  !))H..222 D!12	;00444 *T"2!23	;00444!%z$'7&7!804u}}-IIy)>:	 %*MM$8$8 KL!,/B-7T-JH\*K K11555"'E):(:";04-IIy)?;$	 $(<<#6#6 JK!+.B,6r{{D,IH[)J K11555!%z$'7&7!804u}}-"'E):(:";04-IIy)>?K!%	 +3..*: M&Hh)3H4E4Et)LHX&M &i0	!)Iy0$77+01%k8<<+34";#4#4mD**""$11	 + 
 	
 +~.!&&44[AL(<<[I%&~}EFM)+6!"%
 !H,x1G''QCqc<=
 #77AA >"Q& 2!!446 	 >"Q& 2!!668 	
 ,|Ab)*!Jq,<+=Qx"~>NNqr
 	
 +v&";#4#4mD  !!A%)>)>)G/f  }} ((0 ..F<11$))  
 	
 +x(";#4#4mDll$$,,[__== (11779Aq vc{a'(//Q/7
 oo	+01#K$5$5}E$$	..y+*=*=	
 +{+  Y	$//0F0FGF!=!??FMM!VU3v;%78&&*;+B+BMR$*LLDgL$N!!**11&//B!**11&//B0%$$0))<=&u&%  !,,ua055 +FNN;AA%K #-[]D"A%g+I6%W'3'7'78P'Q$ !5V^^ D Q Q !R !(,,-EFLLUTUV	
 .M (--o>DDFK
 ,;;#++' < e  *--h7CC D N '3&;&;N# #."9"9"?"?"A Jh&..t]C%zz.*@AGG.nh !-BI

>&1;>?J [[a[0F ''&&0B0BoY	t C'566	K	-  	$//0F0FGF&&*;+B+BMR$*LLDgL$N!!**11&//B!**11&//B0% $$0))<=&u&%   ,I6 ,,ua055 066ua@ #-[]D"A%wh/%{{1~ ''&&h6H6H9	> CK#l"33455	K	,  p	Y$//0F0FGF!=!??F,/K/MMM&{'9'9=IF MM!VU3v;%78MM!]E#f+,>? &V' J&&--foo>&&--foo>1%%'8(MN ""a'!.r;L;T;T!U+N;GGTGRK#4#=#=K  M +00# 0''"u!eO!eO%-- B9f&;<.2+''$8",,k8]% &u&- " *5Y)?)4%3'/o33ODE &N +1*<*<*B*B*D Rh&.&6&6t]&K'-zz.2H'I'O'O"6$nh# )5JQ

>&#9;#FGR #1"9"9"; 93'++CK89  (=>.2+''$8",,k8]% &u&- " (39'='2$ll5!499$V^^4::5!DG '1&EGO #)/":":"< 93'++CK89 $WH-F(=>.2+$ll5!499#FNN399%CG '1&EGO/5wh/?, ''$8",,4$)	%
 !&u&- " 4LI3V0 0H1-@./ 0, #;"C"C"E A3(,,S-?@A &3FKKQK$?$G$Gv&N /5ooN+{{+.5($'V]]$C DAq*2*:*:1m*LK*.2H2HH&C&:;-q$I'" !" -00=&: !#;X}'G
 ;I '&,(6{(C(K(K;N;7& 03>3I3I/J/U/U,0 O +?;CC "d D  v}}-^5K5K1LL"?"YZ]^l^t^tZuYvv  AD  EK  ER  ER  AS  @T  !U#  '*.*@*@&--&P :FC&: !#;X}'G 3:N3/	: "((8EB9J [[a[0F ii= 89% ''(>(>XEWEWXap	Yf "JJs+,-"JJs?+,"JJs?+,S	{	K	'$[%6%6F &&'1,	UT	U,$$Q'"	DC	D"\\++33CLLOD
HHNN,??
 M1)::=>O=PPQR ||--55k6N6NOk..91<1I1IJ#CIIJLJ%%-L""::(:;;S;S:T&U&*;&7&@&@/ ;  8C7S7S
23DLL""**1-
 
 # 
#==?'
c*l9S.SC'

 8	 2=1L1LK''--RV 	
 'lG%%  	 & 
 	4( DML89F 6>>*S\9 	GGG_++H5F >>8T"23;;T7OLSSD,T8J;O;W;WXF7O $CL1JMM7J"7MF*0//*=*=g*FFOOJ'	G  8A7P(
*3!VAvf~%%%(
$ 	K!2	3$[%9%9!%<mL (&&$(
 	K!4	5%NNB-u
 	
 22 6tK7H7Q7Q6RS";/88' 3 [" 9D 8d ?"HP M(
&
x   7-k]; "	
F  	/KA5Q 	
 &Kv F> 9f' T
V~ " W'3'<'<=U'V$W " (112JKQQ1	iY	 Y	|	 	Fp	Y p	Yv K
'
h(
s  Bs
<2Bs#Bs(
Bs.,Bs4Bs:8.Bs?>Bt*,Bt	A0Bt$/C6Bt) A7BuBBuE%Bu
G-	BuK4!BuS	Bu!SBu!S#Bu&UBu+k&Bu1nFBwt
Bu7t Bwt=(Bvu%D;Bw{FBw BO	Bw-Q(M Bw-f$Bw:h&,Bw?i+Bxi7Bxo-Bx	t	Bt!t)	But2Bu u Buu7BvvBwvBvvBwv2BwwBwwBwwBwwBww Bw*w-Bw7c           	         t        |       }g }|j                  D ]  }t        ||   j                  j                  t
              rC|j                  t        ||   j                  r||   j                  ndt               d             n||   j                  j                  }t        |t        t        t        f      rt               }nt        |t              rt               }nt        |t               r)|j"                  dk(  r|j$                  dk(  rt               }nut        |t              re|j&                  xs  | j(                  j*                  j,                  |_        |j&                  | j(                  j*                  j,                  k(  |_        |j                  t        ||   j                  |||   j                  j0                                |S )NNULLT&   r   )rz  r   r   r  r   r   r   rG   r   r   r   r   r   r   r   r   r   	precisionscalelengthr   rs  max_string_size_is_max_sizer   )r  r  rM  r  	data_types        r   r   r     sr   t$F
C^^ "fQi''00(;JJ&,QinnF1INN&*,PT q	))22I)h	;%GH$J	Iy1&L	9k2''2-OOq($J	Iz2$$J(:(:(J(J   $$(:(:(J(JJ & JJ1INN1I%%..9"F Jr   rm  rn  c                `B   GH ddl Ht        j                         }t         t              r*	 ||j                   j                   j                           S t         t        t        f      rq j                  rU|j                  j                  j                  dt               j                  dt!         j                        it"               	 | j                     S t         t(        t*        f      rt-         j.                  |||      S t         t0        t2        f      rt5         |||      S t         t6              rst-         j8                  |||      }t;        t=                j8                  j>                        |_          |jC                  d      | jD                   jF                  	      S t         tH              r<tK         jL                        }tO        ||||d
      }t-         j.                  |||      S t         tP              rEt-         j.                  |||      }	|	jS                  d       }
t;        tU               d      |
_         |
S t         tV              rEt-         j.                  |||      }	|	jS                  d       }
t;        tU               d      |
_         |
S t         tX              r~t-         j.                  |||      }	g }
|	D ];  }||
j[                  d       	 |
j[                  t]        j^                  |             = tc        |
td        t;        tU               d            S t         tf              r.t-         j.                  |||      ji                  tj              }	|	 S t         t              r|jm                   |      S t         tn              r|st         jp                  t<              r#t=        ts         jt                               _8        tc        tw        ts        |            D cg c]  } jt                   c}t;         jp                   jt                  du       td              }
|jx                  |
_<        |
S  jt                  S t         tz              rNt}        t-         j~                  |||            }t         j                  t              s"t}        t-         j                  |||            }n j                  }t         t              r||z  }|S t         t              r||z  }|S t         t              r$t        |t              rt        |||      S ||z   }|S t         t              r-t        |t              rt        |t        |      |      S ||z
  }|S t         t              r||z  }|S t         t              r||z  }|S t         t              r||k(  }|j                  r|j                  rxd||jS                  d       |jS                  d       z  <   d||jS                  Hfd      |jS                  Hfd      z  <   d
||j                         |j                         z  <   |j                  |d       }d||<   |S t         t              r||k7  }|S t         t              r||k\  }|S t         t              r||kD  }|S t         t              r||k  }|S t         t              r||k  }|S t         t              r#t        |t              s|s||z  }|S ||z  |z  }|S t         t              r#t        |t              s|s||z  }|S ||z  |z  }|S t         t              r|j                         |j                         z  |j                         z  |j                         z  }|j                         |j                         z  |j                         |j                         z  z  }tc        d
gts        |      z  tj        t;        tU               d
            }d
||<   ||    ||    k(  || <   d||<   |S t         t              r||z  }|S t         t              r||z  }|S t         t              r||z  }|S |j                  j                  j                  dt               j                   t               j                  t"               S t         t              r? j                  D cg c]  }t-        ||||       }}t        tb        j                  |      S t         t              rt-         j.                  |||      }
|
 S t         t              rt-         j                  |||      }t-         j                  |||      } j                  dnt-         j                  |||      }t        |||d      }dtj        fd}|jS                  |d      }t;        tU               d      |_         |S t         t              rt-         j                  |||      }t-         j                  |||      }|jS                  d       }t        j                  ||gd      jS                  d d      }t;        tU               d      |_         |S t         t              rt-         j                  |||      }tc        d
gts        |      z  td        |jx                         }
t;        tU               d      |
_          j                  D ]@  }t-        ||||      }t        |tb              rt        |tb              r|
|j                  |      z  }
Gt        |t              r&|
|j                  |j                  dddf         z  }
}|j                  j                  j                  d!t        |      j                   d"t               j                  d#t        |      j                  it"               |jS                  t        d      j                  |jS                  t        d            }t;        tU               d
      |_         |
|z  }
C |
S t         t              rt         j                  |      S t         t              r>t               }
 j                  D ]#  }t-        ||||      |
|jm                  ||      <   % |
S t         t              rt-         j.                  |||      }t        |t;         j                  d       j                        }
|
|j                  j                  j                  d$t         j                        j                   t               j                  d%t         j                        j                  it"               |
S t         t              r|}tc        dgts        |      z  |jx                  &      }  j                  D ]f  }!t-        |!d   |||      j                  d
'      }"t-        |!d   |||      }#| j@                  |#j@                  | _         nt        |"      r| j@                  jp                  |#j@                  jp                  k7  rt        | j@                  |#j@                        xs  t        | j@                  |#j@                        }$|$9t'        d(| j@                  jp                   d)|#j@                  jp                         t        | |$      } t        |#|$      }#||"   jx                  }%|#|%   | |%<   ||jx                  j                  |%          }ts        |      dk(  sg n ts        |      dkD  r j                  rt-         j                  |j                  d*      ||      }#|jx                  |#_<        | j@                  |#j@                  | _         n| j@                  jp                  |#j@                  jp                  k7  rgt        | j@                  |#j@                        }$|$9t'        d(| j@                  jp                   d)|#j@                  jp                         t        |#|$      }#|#|jx                     | |jx                  <   | S t         t              rG j                  }& j                  }'|'j                   st        |&tH              r\|'j                   }(t        |&tH              r!tK        |&jL                        }(|&j.                  }&tO        |(|||t        |&t0                    })n&t        |&      rt'        d+t!        |&       d,      |})|)}
|
jx                  }*|'j                  r~t        t        j                  |'j                  D  cg c]  } | j                   c}             }+|
j                  |+d
d
-      }
g }*|
D ]  },|*t        |,d   jx                        z  }*  |*}-|'j                  rt        |'j                  t              s͐t        |&      sVt        |'j                   |*|
||dd
      }.t        |.t              st        |.j                         jx                        }-nt               }/|
j                  |/      }0|0D 1cg c]  }1|)j                  |1jx                      }.}1t        |0j                         jx                        }-nt        |'j                  j                  t              r`t!        |'j                  .      }/|
j                  |/      }
t        |
j                         jx                        }*|
D 1cg c]  }1|1 }.}1nt        |'j                  j                  t"              r|'j                  j$                  }2|'j                  j&                  }3d}4t        |2tn        t        t        f      st        |3tn        t        t        f      r7ts        |'j                         dkD  rt'        d/      d0 }5 |5|2       |5|3      f}4t        |'j                   |*|
||t        |2t(              t        |3t*              |4      }.t        |&t0        f      rg }6t-        |-.      D ]-  \  }7}1t5        |&|1|||7      }|7g|_<        |6j[                  |       / |6rt        j                  |6      n
tc        g       }8|8j/                  |*       |6r%|6d   j@                  |8_         |8j3                         S t;        t1               d      |8_         |8j3                         S t        |&t4        t6        f      rd}9|&j8                  t        |&t4              rdnd1z  }:|&j:                  };g }6t-        |*.      D ](  \  }7}1t        |1jx                        jy                  |7      }<|<|:z   }=|=dk  s|=ts        |1      k\  rt-        |&j<                  |1||      }>|9s|>j@                  }9ni|9jp                  |>j@                  jp                  k7  rEt        |9jp                  t0              r|>j@                  }9nt        |>j@                  jp                  t0              s|j                  j                  j                  d2t        |9jp                        j                   d3t        |>j@                  jp                        j                   t               j                  t        |&      j                  t!        t        |>j@                  jp                        j                        t!        t        |9jp                        j                        d4t&               |6j[                  |>j                  d          |;r|:dk(  rt-        |&j                  |1j                  |=g   ||      }>t-        |&j                  |1||      j@                  }?|9s|?}9nn|9|?k7  rht        |9jp                  t<              rt        |?jp                  t<              s3t        |9jp                  t0              r|>j@                  }9n
t        |>j@                  jp                  t0              s|j                  j                  j                  d2t        |9jp                        j                   d3t        |>j@                  jp                        j                   t               j                  t        |&      j                  t        |>j@                  jp                        j                  t        |9jp                        j                  d4t&               |6j[                  |>j                  d          |:dkD  rdnd1}@|<|@z   }Ad}Btc        dgt;        t1               d      td        5      }C|Cj                  d   }DdAcxk  rts        |1      k  rkn nht-        |&j                  |1j                  Ag   ||      }C|Cj                  d   }D|DBdz  }B|Bt?        |:      k(  rnA@z  }Ad|Acxk  rts        |1      k  rfn |9sCj@                  }9ni|9jp                  Cj@                  jp                  k7  rEt        |9jp                  t0              rCj@                  }9nt        Cj@                  jp                  t0              s|j                  j                  j                  d2t        |9jp                        j                   d3t        Cj@                  jp                        j                   t               j                  t        |&      j                  t!        t        |Cj@                  jp                        j                        t!        t        |9jp                        j                        d6t&               |6j[                  D       + tc        |6td        7      }8|*|8_<        |9r|9nt;        t1               d      |8_         |8j3                         S t        |&t@              r|&j:                  };g }6.D ]  }1|;sC|6j[                  t-        |&j                  |1j                  dg   ||      j                  d          Htw        ts        |1            D ]J  }At-        |&j                  |1j                  |Ag   ||      j                  d   }E|E9|6j[                  E         |6j[                  d        tc        |6td        t-        |&j                  |||      j@                        }8|*|8_<        |8j3                         S t        |&tB              r+|&j:                  };g }6.D ]  }1|;sO|6j[                  t-        |&j                  |1j                  ts        |1      dz
  g   ||      j                  d          Ttw        ts        |1      dz
  d1d1      D ]J  }At-        |&j                  |1j                  |Ag   ||      j                  d   }E|E9|6j[                  E         |6j[                  d        tc        |6td        t-        |&j                  |.d   ||      j@                        }8|*|8_<        |8j3                         S |j                  j                  j                  d8t        |&      j                   t               j                  d9t        |&      j                  it"               nzt         tD              rt-         j.                  |||      }Ft!         jF                        GGjI                  d:d;      Gtw        ts        |F            D cg c]  }F|   GF|   v r
F|   G   | c}F_        |FjS                  Gfd<      }
t;        tM               |Fj@                  j>                        |
_         |
S t         tN              r\t-         j.                  |||      }F|FjS                   fd=      }
t;        tM               |Fj@                  j>                        |
_         |
S t         tP              r+ jR                  rtU         |||      S tW         |||      S |j                  j                  j                  d>t               j                   t               j                  t"               y# t        $ r | j                     cY S w xY w# t        $ rG 	 | j                  j%                  d         cY S # t        $ r t'        d j                         w xY ww xY w# t`        $ r |
j[                  d
       Y :w xY wc c}w c c}w c c} w c c}1w c c}1w c c}w )?z
    Returns the calculated expression evaluated based on input table/column
    setting keep_literal to true returns Python datatype
    setting keep_literal to false returns a ColumnEmulator wrapping the Python datatype of a Literal
    r   NzSQL Text Expressionzexp.is_sql_textr  rl  r$  listagg)is_distinct	delimiterFc                     t        | d u       S r   r  r  s    r   r  z&calculate_expression.<locals>.<lambda>  s    4T	? r   Tc                     t        | d u      S r   r,  r  s    r   r  z&calculate_expression.<locals>.<lambda>  s    4+> r   r"  r+  )r  r  r  c                 
    | d u S r   r   r  s    r   r  z&calculate_expression.<locals>.<lambda>8	  s
    d r   c                 
    | d u S r   r   r  s    r   r  z&calculate_expression.<locals>.<lambda>8	  s    AQUI r   c                 2    | d uxr j                  |       S r   isnanr  r  s    r   r  z&calculate_expression.<locals>.<lambda>;	  s    $)F288A; r   c                 2    | d uxr j                  |       S r   r1  r3  s    r   r  z&calculate_expression.<locals>.<lambda><	  s    ATM,Ibhhqk r   c                     t        | t        t        f      xr/ t        |t        t        f      xr t        |       t        |      k(  S r   )r   r  r  r\  s     r   r  z&calculate_expression.<locals>.<lambda>B	  s<    ZD%=9 )q4-0)!Ha( r   rh  zBinary Expression ro  )LHSPATTERNFLAGSr   c                    | d   }| d   }| d   }d}|r]dx}x}}|j                         D ]<  }|dk(  rd}|dk(  rt        j                  }!|dk(  r'|dk(  s-t        j                  }> ||z  |z  }|j	                  d	      sd	| n|}	|	j                  d
      s|	 d
n|	}		 t        j                  |	       t        t        j                  |	||            S # t        j                  $ r t        d|       w xY w)Nr6  r7  r8  r   r  r  ms^$zInvalid regular expression )flags)r  reISr  endswithcompileerrorr,   r  match)
r  	input_strraw_patternflag_stringr>  case	multilinenewliner  _patterns
             r   _match_patternz,calculate_expression.<locals>._match_pattern	  s(   E
Ii.Kg,KE-...y7$**, 
'ACx c!ttc c"$$$
' y(72 *5)?)?)D!K=!+  .6->->s-C(1~H

8$ 9EBCC 88 31+? s   "C "C:rO  r  c                 *    t        t        |             S r   )r   r   r  s    r   r  z&calculate_expression.<locals>.<lambda>	  s    &?A&G r   c                 x    t        j                  | j                  d   t        | j                  d               d uS )NrO  r   )r?  rE  r?  r   r  s    r   r  z&calculate_expression.<locals>.<lambda>	  s*    bhhqvvay#affQi.9E r   )r  rL  zIN expression with type z on the rightrhszCast to zexp.torK  r  z2CaseWhen expressions have conflicting data types: z != r  zWindow function type [z+] requires ORDER BY in window specification)r'  as_index)
frame_specz3range_between requires exactly one order_by column.c                     t        | t              r| j                  S t        | t              ryt        | t              r| j
                  S t        | t              rt        |       S y )Nr   )r   rP   r  r   ro   r   rM   r  )r\  s    r   	get_boundz'calculate_expression.<locals>.get_boundz
  sO    !%1${{*!%4 !%4${{*!%2.u55r   r   zCoercion of detected type z
 and type )window_functionzsub_window_res.sf_type.datatypecalculated_sf_type.datatype)r  r  )rU  zcalc_expr.sf_type.datatyperV  r9  zWindow Function rU  z''rk  c                     | | vrd S |    S r   r   )r  fields    r   r  z&calculate_expression.<locals>.<lambda>  s    !)uA~$ 1U8 r   c                 Z    | j                   t        |       k\  rd S | j                      S r   )rX  rF  )r  r  s    r   r  z&calculate_expression.<locals>.<lambda>  s&    ai399A+>d AciiL r   zMocking Expression )rw  r{   r/  r   rG   r   r  r   r  rY   is_sql_textr   rs  r|  r  r   r   r}  r  r,   rp   ri   r   r   rK   rR   r  rO   r;  r   r   r   r  r0  r)  r*  rZ   r   r  r  rm   r  r   rl   rk   r   mathr2  	TypeErrorr   r  rn   astyper  r   rP   r   rF  r  r  rL  r5   r   r  r  rM   r@   r9   r3   r4  rE   r  rD   rC   r;   hasnansisnarq  combinerA   r=   r<   r?   r>   r4   r   rB   r:   r7   r8   r6   rI   exprsr   r  ro   rS   r2  patternr  rN   rQ  r  rL   r   r  rK  r?  r  rT   rz  r  rQ   r  rj   r|   totry_rH   branchesr  r  r   
else_valuer  r$   rU  window_specr5  r+   partition_specr  r   fromkeysr  rR  r!   ra  rk  r)   rP  rS  
frame_typer    r*   r   r  r  r#   r"   r  reindexr   
sort_indexr   r   r  ignore_nullsr  absr   r   rX   rX  r  r  r   rW   rU   is_aggregate_functionr  rz  )Ir  rb  r   r   rn  r,  lhsr  ordered_datachild_columnr7  r  r  r  r  r1  rL  either_isna	both_isnar  colsrG  r>  	argumentsrM  r  rP  rb  valexistsr  	remainingoutput_datarI  rN  r  r  
true_indexrU  rg  r5  orderedr6  r  rr  rX  indexerrP  wr  r  r:  rT  res_colsrZ  r  calculated_sf_typer  rm  r^  
offset_idxsub_window_rescur_windows_sf_typerE  cur_idx	cur_count	calc_exprtarget_valuetarget_exprr;  rX  r  sI   `                                                                      @@r   r   r     s    %335H#y!	(m//SXXFGG #+Y78??""::&;&*3i&8&8!2C4H I/	 ; 	Vchh'' #/0#CIIz8]SS#*,CDE)#z8]SS#w"377J-P sww/?/?@/x$$Y/mm
 	

 #{#1#2C2CD-:x
 $CII|X}UU#v+IIz8]
   !:; 5
#y!+IIz8]
   !>? 5
#u+IIz8]
   	&D|

4 &JJtzz$/0	& FJ{}d,K
 	
 #s+IIz8]

&, 	 }#*+]33#w#,,
3)#cii.9 ).s:)?@Acii@"3<<#))t:KLC
 #((CIJyy#'(9 :xO
 #))X.>$SYY
HmTE
 IIEc8$J` _ V$J\ [ S!%*%dE8<<!E\
R Q X&%*%dOE,BHMMJJ I Y'JF E S!uJB A W%J||  JJ23ekkBU6VV  JJFGkk"IJK GL
:??,z/@/@/BBCLL)E !%Ju\ [ Z(JX W /0JT S [)JP O _-JL K X&JH G S! j-8
  D ? Ulj0 D ; R  j-8
  8 3 Ulj0 8 / ]+))+

4t{{}Du||~UKuzz|38VWI'#d)#";=%8J
 ',J{#'+[L'9UK<=P'PJ|$$(Jy!  Y'J  Z(J  Z(J  ""::(:49;M;M:N&O&*3i&8&8/ ; 
 	C	# YY
 !J-H
 
 n(($//#z""399j(MRt#v"388Z=Q*KKX}

 ~~% %
Hm 	 "#+PU"VW	!	D4 !	DF a8#KM48#t"388Z=Q"3;;
HmT))GHC>288EA 9 
 $KM48#|$"3;;
HmTeWs3x/vZEUEUV 5:: 	#C&sJ-PC#~.c>2-C]3!Q$ 88C$$**BB0HcI[I[H\\i.j.23i.@.@).S	0B0B(C$7	 C  5!,11#))E12EF!+KM5!AFl#	#$ 
#~& =99#)*o 	A6J:x7C  M23	 
#t%ciiX}UVZ%=sxxH;""::(0cff1F1F0G&H&*3i&8&8!)4<+@+@ A/	 ;  
#x 	$dVc*o%=ZEUEUVLL 	D,QX}f5f!  )a*hVE""*&+mm#Y##,,0F0FF 6''! !P+K,?,?O  !(7L[M`M`MiMiLjjnoto|o|  pF  pF  oG  H  #1m"LK*5-@E"9-33J&+J&7K
#!9??#7#7
#C"CDI9~"7	: y>A#..(%%4%0	E $//EK""*&+mm#$$--1G1GG 6''! !(7L[M`M`MiMiLjjnoto|o|  pF  pF  oG  H  +5-@E+0+AK	(#'(--oo !!Z%M$//J/;767T7TU
"1"7"7 -?-?AG -_=/(_)=(>>ij  !GII	 %%;;U;U&VCsxx&VWXD++  C
 I .T!A$**--	.
 %%Z""$8.
 3?C5**! "'40#GMMO$9$9:H-/++g.9@AA7;;qww/AA   5 56..998D%1G1GHG++g&CSYY[../I"%&Qq&G&..99:F**00E**00EL%':x!@AZX6F {--.27M 	  !*% 0)E2BC1&&5"455"45	G o(:'<=H"%h"8 (Q3#Q- !,}'( .6bii)>";MGOOI&"*1+"5"5 %%'' #-XZ">%%''$5!%$++6BF +77LH"%i"9 C2Qqww--- %v-
>Z3q6%9%9'// %	&N .-;-C-C*+448N8N8W8WW%&8&A&A8L1?1G1G. ",N,B,B,K,KX!V$,,22JJ9$$();)D)D$E$N$N#O",T.2H2H2Q2Q-R-[-[,\7^ 7;3i6H6H7;O7L7U7UGJ(,^-C-C-L-L(M(V(VH& DG(,-?-H-H(I(R(RD&1" -J K   OON$7$7$:;%1%9',,
|, %	&N +?',, %	+
 g ( .-@*+/BB&'9'B'BJO *+>+G+G T &&8&A&A8L1?1G1G. ",N,B,B,K,KX!V$,,22JJ9$$();)D)D$E$N$N#O",T.2H2H2Q2Q-R-[-[,\7^ 7;3i6H6H7;O7L7U7UGK(6(>(>(G(GH&&.hCG(:(C(CD&&.h1" -J K   OON$7$7$:; "(!AE%oG !I !/
8:t(DF!I $->>!#4Lw/Q/$8+00FFG9-$)	%	 (1~~a'8'3%NI(CK7 %5( w/Q/ .-6->->*+44	8I8I8R8RR%&8&A&A8L1:1B1B. ",%--66" %,,22JJ9$$();)D)D$E$N$N#O",T)2C2C2L2L-M-V-V,W7Y 7;3i6H6H7;O7L7U7UBE(,Y->->-G-G(H(Q(QC& DG(,-?-H-H(I(R(RD&1" -J K   OOL1GC2H %VG &GM & #
D1 O
 %%''4*77LH .#OO,+00FFA3K$)	
 $q" $)Q= .&:+00FFG9-$)	'
 $q'" '2$OOK8!. !--.. %,#((!	
 '	G &GM%%''3*77LH .#OO,+00FFCFQJ<0$)	
 $q" $)Q!R#< .&:+00FFG9-$)	'
 $q'" '2$OOK8!. !--.. %,#((AJ!	
 '	G &GM%%''""::(8o9N9W9W8X&Y&*3i&8&8!2D4I4R4R S/	 ;  
C	("399j(MRCIIdC( s3x
5z%U#E
5!)	 
 iiST 0D0DE
	C	%"399j(MRiiP
 !0D0DE
	C	&$$)#z8]SS(j(MRR22 3DI4F4F3GH"3i00' 3 S  	( chh''		(  	VV!#((.."566 V36I#((4TUUV	V` ! &JJu%&$ AJ
T 'WD B 'L	
s   (BB  BB ,$BC1 BDBDE!BDI'!BD!L+	BD&|BD+B BBBBBB	BC.B(BCCBC.C"BC*C*BC.C1BDDBDr   c                 F   | j                   t        j                  j                  k(  rD|j                  j
                  j                  j                  | j                  | j                        S | j                   t        j                  j                  k(  rP|j                  j
                  j                  j                  | j                  | j                  | j                        S | j                   t        j                  j                  k(  r[|j                  j
                  j                  j                  | j                  | j                  | j                   || j                        S |j                  j
                  j#                  d| j                   j$                          y )N)r   target_directoryr   zFile operation )rd  )r   r   r   r   r   rs  stage_registryr   r   r   r   r   r   r   r   r   r   r|  r  )r   r   s     r   r  r    sV   099===%%4488'')C)C
 	
 
		!2!;!;!?!?	?%%4488&55(88'' 9 
 	

 
		!2!;!;!E!E	E%%44>>&&
 	
 22 /0D0D0J0J/KL 3 r   )Fr   r&  )r  r  r  r[  r?  r  r  r   collectionsr   collections.abcr   enumr   	functoolsr   r   r   r	   r
   r   r   r   r   r   r   unittest.mockr   6snowflake.snowpark._internal.analyzer.select_statementr   4snowflake.snowpark._internal.analyzer.table_functionr   <snowflake.snowpark._internal.analyzer.table_merge_expressionr   r   r   r   r   r   7snowflake.snowpark._internal.analyzer.window_expressionr   r   r   r   r   r   r    r!   r"   r#   r$   "snowflake.snowpark.mock._udf_utilsr%   r&   snowflake.snowpark.mock._utilr'   r(   %snowflake.snowpark.mock._window_utilsr)   r*   r+   "snowflake.snowpark.mock.exceptionsr,   !snowflake.snowpark.mock._analyzerr-   4snowflake.snowpark._internal.analyzer.analyzer_utilsr.   r/   r0   r1   r2   7snowflake.snowpark._internal.analyzer.binary_expressionr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   6snowflake.snowpark._internal.analyzer.binary_plan_noderF   0snowflake.snowpark._internal.analyzer.expressionrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   ?snowflake.snowpark._internal.analyzer.query_plan_analysis_utilsr[   4snowflake.snowpark._internal.analyzer.snowflake_planr\   r]   r^   r_   9snowflake.snowpark._internal.analyzer.snowflake_plan_noder`   ra   rb   rc   rd   re   5snowflake.snowpark._internal.analyzer.sort_expressionrf   rg   rh   6snowflake.snowpark._internal.analyzer.unary_expressionri   rj   rk   rl   rm   rn   ro   rp   5snowflake.snowpark._internal.analyzer.unary_plan_noderq   rr   rs   rt   ru   rv   'snowflake.snowpark._internal.type_utilsrw   "snowflake.snowpark._internal.utilsrx   ry   snowflake.snowpark.columnrz   "snowflake.snowpark.mock._functionsr{   r|    snowflake.snowpark.mock._optionsr}   rQ  )snowflake.snowpark.mock._select_statementr~   r   r   r   r   ,snowflake.snowpark.mock._snowflake_data_typer   r   r   r   r   r   r   snowflake.snowpark.rowr   snowflake.snowpark.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r  r+  r4  ra  r  rz  r  r  r  rz  r   r   r  r   r   r   <module>r     s/  
     	    # $  6 6 S S S # V R     Y Q 
 M>      * H     , V   
	 	 	  ? - U 9   
 '   $@+ @+F) <Z(8   %"9o"" " DcN+	"
 " "J	x})= > 	4 	h 8 !E(C-()!2:53;O2P!	!N 26 -. 	2 *.tYtt 
*t 	t
 S>t t t 5:&t $tx ^	!#::	;^m^34^ ^ S>	^L T	Tm^34T T S>	Tx O	Om^34O O S>	On  q	qm^34q q S>	qr M	Mm^34M M S>	Md /3g
gDcN+g =$s)#$gT#&$ &i &^ A	Am^34A A S>	A A AH(9 ^ r   