
    ɯei                         d dl 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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  G d d	e      Z G d
 de      Zy)    )
ModuleType)AnyCallableDictIterableListOptionalTupleUnion)
build_udtfwith_src_position)process_registration_inputs)TempObjectType)DataTypePandasDataFrameType
StructType)UDTFRegistrationUserDefinedTableFunction_validate_output_schema_namesc                   8     e Zd Zdddd	 fdZdeddfdZ xZS )
MockUserDefinedTableFunctionFT)strictuse_session_importsreturnNc                ^    t        |   |i | || _        t               | _        || _        y N)super__init__r   set_importsr   )selfr   r   argskwargs	__class__s        _/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/snowpark/mock/_udtf.pyr   z%MockUserDefinedTableFunction.__init__   s-    $)&)#6     absolute_module_pathc                 H    d| _         | j                  j                  |       y )NF)r   r    add)r!   r'   s     r%   
add_importz'MockUserDefinedTableFunction.add_import   s    #( ./r&   r   N)__name__
__module____qualname__r   strr*   __classcell__r$   s   @r%   r   r      s     %* 70s 0t 0r&   r   c            4           e Zd Zd" fdZdedefdZ	 	 	 	 	 	 	 	 	 	 	 	 	 d#ddddddd	eee	eef   f   d
ee
ee   df   deee      deee      dee   dee   deeeee	eef   f         deeeeef         dedededededeee      deeeef      dedee   dee   deeeef      deeeef      dededed edef2d!Z xZS )$MockUDTFRegistrationr   Nc                 `    t        |   |i | t               | _        t	               | _        y r   )r   r   dict	_registryr   _session_level_imports)r!   r"   r#   r$   s      r%   r   zMockUDTFRegistration.__init__!   s/    $)&) F 	
 '*e#r&   namec                      | j                   |   S r   )r6   )r!   r8   s     r%   get_udtfzMockUDTFRegistration.get_udtf*   s    ~~d##r&   FT)native_app_paramsstatement_paramsskip_upload_on_content_matchis_permanent	_emit_asthandleroutput_schemar   input_typesinput_namesstage_locationimportspackagesreplaceif_not_existsparallelr   secureexternal_access_integrationssecrets	immutablemax_batch_sizecommentr;   r<   api_call_sourcer=   r>   r?   c          	      <   d\  }}|j                  d      y|rP| j                  j                  j                         }t	        |j
                  j                  |      }|j                  }|d   }t        ||||||      }|| j                  |<   |S t        |t              rt        |j                         |}d }nkt        |t              rt        |j                         |}d }nAt        |t               rt#        |      }t        |       d }nt%        dt'        |       d      t)        | j                  t*        j,                  |||||      \  }} }!}}}"|r| j                  j                  j                         }t	        |j
                  j                  |      }|j                  }t/        ||fi d|d|d	|d
|d|d|d|	d|
d|d|d|d|d|d|d|d|d|d|d| j                  d|| t        |||||||      }|| j                  |<   |S )N)NN_registered_object_name)_ast_ast_idzs'output_schema' must be a list of column names or StructType or PandasDataFrameType instance to create a UDTF. Got .)rA   rA   rB   r8   rD   rE   rF   rG   rH   rI   rN   r   rJ   rK   rL   rM   rO   r<   r>   session)rF   rS   rT   )get_session
_ast_batchbindr   exprudtfuidr   r6   
isinstancer   r   namesr   	col_namesr   tuple
ValueErrortyper   r   TABLE_FUNCTIONr   )#r!   r@   rA   rB   rC   r8   rD   rE   rF   rG   rH   rI   r   rJ   rK   rL   rM   rN   rO   r;   r<   rP   r=   r>   r?   r#   astast_idstmtobject_namer\   return_typeis_pandas_udfis_dataframe_inputopt_arg_defaultss#                                      r%   _do_register_udtfz&MockUDTFRegistration._do_register_udtf-   s   : !V::/0<}}//446'		= !:;K/D +/DNN;'KmZ0)-*=*=>'K M':;)-*A*AB'K M8
 "-0M)-8K F  GK  LY  GZ  F[  [\  ]  (MM))'
	
 ==++002D#DIINND9CXXF , (	
   .   "   , "  .   .J   !" $#$  %& "2'( *)* +, )4/4 ,
 '+{#r&   r+   )NNNFF   FFNNFNN)r,   r-   r.   r   r/   r   r:   r   r   r
   r   r   r	   r   r   r   boolintr   r   rm   r0   r1   s   @r%   r3   r3       s   ,$S $%= $ )-?C;?#<@,0(,!%'C* 7;59-2"5CxsCx01C Z#8MMNC d8n-	C
 d3i(C smC !C $uS%S/%9:;<C 4c:o 678C C C C C C '/tCy&9C  $sCx.)!C" #C$ !%C& #'C* $DcN3+C, #4S>2-C. /C0 '+1C2 3C4 5C8 
"9Cr&   r3   N)typesr   typingr   r   r   r   r   r	   r
   r   &snowflake.snowpark._internal.ast.utilsr   r   &snowflake.snowpark._internal.udf_utilsr   "snowflake.snowpark._internal.utilsr   snowflake.snowpark.typesr   r   r   snowflake.snowpark.udtfr   r   r   r   r3    r&   r%   <module>ry      sH     N N N P N = N N 	0#; 	0P+ Pr&   