
    dh%              
          S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
JrJrJrJrJr  \
(       a  S SKJr  S SKJr  S SKJrJr  SrS	S
SS.rSrSr\R6                  " \5      rSSS\4S jr\ " S S5      5       r \ " S S5      5       r!SSS\\"\4   S\ 4S jr#SSS\"SSS\\"\4   S\!4
S jr$S\S   S\4S  jr%g)!    N)	dataclass)StringIO)TYPE_CHECKINGAnyDictListLiteralOptional)WorkspaceClient)FunctionInfo)StatementParameterListItemStatementState__execution_args__30sd   i   )wait_timeout	row_limit
byte_limit UC_TOOL_CLIENT_EXECUTION_TIMEOUT120functionr   returnc                 @    SSK Jn  U R                  UR                  :g  $ )Nr   ColumnTypeName)databricks.sdk.service.catalogr   	data_type
TABLE_TYPE)r   r   s     g/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/tools/databricks/_execution.py	is_scalarr       s    =!:!:::    c                   0    \ rS rSr% \\S'   \S   \S'   Srg)ParameterizedStatement    	statementr   
parameters N)__name__
__module____qualname____firstlineno__str__annotations__r   __static_attributes__r'   r!   r   r#   r#       s    N122r!   r#   c                   ~    \ rS rSr% SrSr\\   \S'   Sr	\\
S      \S'   Sr\\   \S'   Sr\\   \S'   S	\4S
 jrSrg)FunctionExecutionResult&   zm
Result of executing a function.
We always use a string to present the result value for AI model to consume.
Nerror)SCALARCSVformatvalue	truncatedr   c                     U R                   R                  5        VVs0 sH  u  pUc  M
  X_M     nnn[        R                  " U5      $ s  snnf N)__dict__itemsjsondumps)selfkvdatas       r   to_jsonFunctionExecutionResult.to_json2   sB    #'==#6#6#8J#8!A#8Jzz$ Ks
   A	A	r'   )r(   r)   r*   r+   __doc__r2   r
   r,   r-   r5   r	   r6   r7   boolrB   r.   r'   r!   r   r0   r0   &   sS    
  E8C=15FHW_-.5E8C= $Ix~$   r!   r0   json_paramsc           	         SSK Jn  SSKJn  / n/ n[	        U 5      (       a   UR                  SU R                   S35        OUR                  SU R                   S35        U R                  b  U R                  R                  c  U(       a   S5       eGO/ nSnU R                  R                   GH  nUR                  U;  a*  UR                  b  S	nM%  [        S
UR                   S35      eSn	U(       a  XR                   S3-  n	XR                     n
UR                  UR                  UR                  UR                  4;   aW  [         R"                  " U
5      nU	SUR                   SUR$                   S3-  n	UR                  U" UR                  US95        OUR                  UR&                  :X  a4  U	SUR                   S3-  n	UR                  U" UR                  U
S95        O<U	SUR                   3-  n	UR                  U" UR                  XR$                  S95        UR                  U	5        GM     UR                  SR)                  U5      5        UR                  S5        SR)                  U5      n[+        XS9$ )Nr   r   )r   zSELECT (zSELECT * FROM z8Function has no parameters but parameters were provided.FTz
Parameter z is required but not provided. z => zfrom_json(:z, 'z'))namer6   z
unbase64(:):)rJ   r6   type,)r%   r&   )r   r   databricks.sdk.service.sqlr   r    append	full_nameinput_paramsr&   rJ   parameter_default
ValueError	type_nameARRAYMAPSTRUCTr<   r=   	type_textBINARYjoinr#   )r   rF   r   r   partsoutput_paramsargsuse_named_argsp
arg_clause
json_valuejson_value_strr%   s                r   get_execute_function_sql_stmtrd   7   sP    >EEMwx112!45~h&8&8%9;<$(=(=(H(H(P 	
F	
; &&11Avv[(&&2%)N$$QVVH,JK   
!VVHD/1J(0
;;"(("&&"))#  &*ZZ
%;NKxs1;;-r"JJJ!((2nU [[N$9$99Jqvvha"88J!((2jQ AaffX,.J!((2!"z
 J'M 2N 	SXXd^$	LLI!IPPr!   wsr   warehouse_idr&   c           	      	    SSK nSSKJn  UR                  (       a`  UR                  R
                  (       aE  [        S UR                  R
                   5       5      (       a  [        S[         S[         S35      e0 [        En[        R                  " U R                  R                  5      R
                  n[        S	 UR                  5        5       5      (       d|  [        5       n	UR!                  [        0 5      n
U
R#                  5        H!  u  pX;   a  XU'   M  U	R%                  U5        M#     U	(       a   [        S
U	 SUR'                  5        S35      e[)        X#5      nU R                  R                  " S!UR*                  UUR
                  S.UD6nUR,                  (       Gaq  [/        UR,                  R0                  5      (       GaL  UR2                  (       Ga:  UR2                  nSnSn[5        [6        R8                  R;                  [<        [>        5      5      nUU:  a  [A        SU-  UU-
  5      n[B        RE                  SU SU S35        [F        RH                  " U5        U R                  RK                  U5      nUR,                  b$  [/        UR,                  R0                  5      (       d  OUU-  nUS-  nUU:  a  M  UR,                  (       a?  [/        UR,                  R0                  5      (       a  [M        SU S[<         S[>         S3S9$ UR,                  c
   SU 35       eUR,                  R0                  URN                  :w  aE  UR,                  RP                  nUc
   SU 35       e[M        URR                   SURT                   3S9$ URV                  nUc   eURX                  nURZ                  nUc   S5       eUR\                  n[_        U5      (       aF  SnU(       a2  [a        U5      S:  a#  [a        US   5      S:  a  [c        US   S   5      n[M        SUUS9$ URd                  nUb  URf                  c   S5       eURf                   Vs/ sH  nURh                  PM     nnUc  / nURj                  Rm                  UUS9n[o        5       nURq                  USS9  [M        S URs                  5       US9$ ! [         a  n[        S5      UeSnAff = fs  snf )"zD
Execute a function with the given arguments and return the result.
r   NzTCould not import pandas python package. Please install it with `pip install pandas`.r   c              3   F   #    U H  nUR                   [        :H  v   M     g 7fr9   )rJ   EXECUTE_FUNCTION_ARG_NAME.0r`   s     r   	<genexpr>#execute_function.<locals>.<genexpr>   s!      
5 FF//5s   !zRParameter name conflicts with the reserved argument name for executing functions: z. Please rename the parameter .c              3   j   #    U H*  nUR                   UR                  UR                  4;   v   M,     g 7fr9   )kindVAR_POSITIONALVAR_KEYWORDrk   s     r   rm   rn      s/      8A 	
1##Q]]338s   13z,Invalid parameters for executing functions: z. Allowed parameters are: )r%   rf   r&      z	Retrying z. time to get statement execution status after z	 seconds.   z+Statement execution is still pending after z[ seconds. Please increase the wait_timeout argument for executing the function or increase z? environment variable for increasing retrying time, default is )r2   zStatement execution failed: z>Statement execution failed but no error message was provided: z: z9Statement execution succeeded but no result was provided.r3   )r5   r6   r7   z9Statement execution succeeded but no schema was provided.)columnsF)indexr4   r'   ):pandasImportErrorrO   r   rR   r&   anyrT   rj   DEFAULT_EXECUTE_FUNCTION_ARGSinspect	signaturestatement_executionexecute_statementvaluessetpopr;   addkeysrd   r%   statusjob_pendingstatestatement_idintosenvirongetr   (DEFAULT_UC_TOOL_CLIENT_EXECUTION_TIMEOUTmin_loggerdebugtimesleepget_statementr0   	SUCCEEDEDr2   
error_codemessagemanifestr7   result
data_arrayr    lenr,   schemarv   rJ   	DataFramefrom_recordsr   to_csvgetvalue)re   rf   r   r&   pder   execute_statement_argsallowed_execute_statement_argsinvalid_paramspassed_execute_statement_argsr?   r@   parametrized_statementresponser   	wait_time	retry_cntclient_execution_timeoutwaitr2   r   r7   r   r   r6   r   crv   pdf
csv_buffers                                  r   execute_functionr   y   s    : 	!!,, 
**55
 
 

 34 5++D*EQH
 	
 ? =>%,%6%6
00&j #  /668   (27PRT(U%1779DA2,-q)""1%	 :
 >~>N O++I+N+N+P*QQRT  ;8P%%77 (22!)44 !	H ;x'<'<==(BWBWBW,,		#&JJNN08$
  22q)|%=	%IJDMMI; '  $vY0 JJt--;;LIH&k(//:O:O.P.PINI 22 ??{8??+@+@AA*CI; O,,L+M NQ;<I	G  ??&Q*Fxj(QQ& 8 88%%  	
LXJW	
  '0@0@/AEMM?-STT  H""I__F C ""J#j/A-#jm2Dq2H
1a()E&5I
 	
 !fnn&@ 	
G	
@ $*>>2>a166>2Jll''
G'DZ


:U
+&
 3 3 5
 	
e  ;
 	X 3s   S "S)
S&S!!S&r   r   c                 B    SSK Jn  XR                  UR                  4;   $ )Nr   rh   )rO   r   PENDINGRUNNING)r   r   s     r   r   r      s    9++^-C-CDDDr!   )&r|   r<   loggingr   r   dataclassesr   ior   typingr   r   r   r   r	   r
   databricks.sdkr   r   r   rO   r   r   rj   r{   r   r   	getLoggerr(   r   rE   r    r#   r0   r,   rd   r   r   r'   r!   r   <module>r      s/      	  !  D D.;U0 ! 
 $F  +0 (


H
%; ;4 ; 3 3 3
       ?Q?Q+/S>?Q?QD


 
 S#X	

 
DEx 01 Ed Er!   