
    h%              
       r   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
mZmZmZmZmZ e
rd dlmZ d dlmZ d dlmZmZ dZd	d
ddZdZdZ ej6                  e      ZdddefdZe G d d             Z e G d d             Z!dddee"ef   de fdZ#ddde"dddee"ef   de!f
dZ$ded   defd Z%y)!    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                 @    ddl m} | j                  |j                  k7  S )Nr   ColumnTypeName)databricks.sdk.service.catalogr   	data_type
TABLE_TYPE)r   r   s     m/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/tools/databricks/_execution.py	is_scalarr       s    =!:!:::    c                   (    e Zd ZU eed<   ed   ed<   y)ParameterizedStatement	statementr   
parametersN)__name__
__module____qualname__str__annotations__r    r!   r   r#   r#       s    N122r!   r#   c                   t    e Zd ZU dZdZee   ed<   dZee	d      ed<   dZ
ee   ed<   dZee   ed<   defd	Zy)
FunctionExecutionResultzy
    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                     | j                   j                         D ci c]  \  }}|	|| }}}t        j                  |      S c c}}w N)__dict__itemsjsondumps)selfkvdatas       r   to_jsonzFunctionExecutionResult.to_json2   sC    #'==#6#6#8J!QAM1JJzz$ Ks
   
AA)r&   r'   r(   __doc__r.   r
   r)   r*   r1   r	   r2   r3   boolr>   r+   r!   r   r-   r-   &   sS    
  E8C=15FHW_-.5E8C= $Ix~$   r!   r-   json_paramsc                    ddl m} ddlm} g }g }t	        |       r |j                  d| j                   d       n|j                  d| j                   d       | j                  | j                  j                  
|rJ d       g }d}| j                  j                  D ]  }|j                  |vr(|j                  d	}!t        d
|j                   d      d}	|r|	|j                   dz  }	||j                     }
|j                  |j                  |j                  |j                  fv rYt!        j"                  |
      }|	d|j                   d|j$                   dz  }	|j                   ||j                  |             n|j                  |j&                  k(  r7|	d|j                   dz  }	|j                   ||j                  |
             n@|	d|j                   z  }	|j                   ||j                  |
|j$                               |j                  |	        |j                  dj)                  |             |j                  d       dj)                  |      }t+        ||      S )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'))namer2   z
unbase64(:):)rE   r2   type,)r$   r%   )r   r   databricks.sdk.service.sqlr   r    append	full_nameinput_paramsr%   rE   parameter_default
ValueError	type_nameARRAYMAPSTRUCTr8   r9   	type_textBINARYjoinr#   )r   rA   r   r   partsoutput_paramsargsuse_named_argsp
arg_clause
json_valuejson_value_strr$   s                r   get_execute_function_sql_stmtr_   7   sX    >EEMwx112!45~h&8&8%9;<$(=(=(H(H(P 	
F	
 &&11 &	(Avv[(&&2%)N$$QVVH,JK   
!QVVHD/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&	(N 	SXXd^$	LLI!I-PPr!   wsr   warehouse_idr%   c           	      V	   	 ddl }ddlm} |j                  rV|j                  j
                  r@t        d |j                  j
                  D              rt        dt         dt         d      i t        }t        j                  | j                  j                        j
                  }t        d	 |j                         D              sut               }	|j!                  t        i       }
|
j#                         D ]   \  }}||v r|||<   |	j%                  |       " |	r t        d
|	 d|j'                          d      t)        ||      } | j                  j                  d!|j*                  ||j
                  d|}|j,                  rVt/        |j,                  j0                        r6|j2                  r)|j2                  }d}d}t5        t6        j8                  j;                  t<        t>                    }||k  rtA        d|z  ||z
        }tB        jE                  d| d| d       tG        jH                  |       | j                  jK                  |      }|j,                  t/        |j,                  j0                        sn||z  }|dz  }||k  r|j,                  r=t/        |j,                  j0                        rtM        d| dt<         dt>         d      S |j,                  
J d|        |j,                  j0                  |jN                  k7  rG|j,                  jP                  }|
J d|        tM        |jR                   d|jT                         S |jV                  }|J |jX                  }|jZ                  }|J d       |j\                  }t_        |      rBd}|r0ta        |      dkD  r"ta        |d         dkD  rtc        |d   d         }tM        d||      S |jd                  }||jf                  J d       |jf                  D cg c]  }|jh                   }}|g }|jj                  jm                  ||      }to               }|jq                  |d       tM        d |js                         |      S # t        $ r}t        d      |d}~ww xY wc c}w )"zL
    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   B   K   | ]  }|j                   t        k(    y wr5   )rE   EXECUTE_FUNCTION_ARG_NAME.0r[   s     r   	<genexpr>z#execute_function.<locals>.<genexpr>   s"      
 FF//
s   zRParameter name conflicts with the reserved argument name for executing functions: z. Please rename the parameter .c              3   d   K   | ](  }|j                   |j                  |j                  fv  * y wr5   )kindVAR_POSITIONALVAR_KEYWORDrf   s     r   rh   z#execute_function.<locals>.<genexpr>   s0       	
1##Q]]33s   .0z,Invalid parameters for executing functions: z. Allowed parameters are: )r$   ra   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 )r.   zStatement execution failed: z>Statement execution failed but no error message was provided: z: z9Statement execution succeeded but no result was provided.r/   )r1   r2   r3   z9Statement execution succeeded but no schema was provided.)columnsF)indexr0   r+   ):pandasImportErrorrJ   r   rM   r%   anyrO   re   DEFAULT_EXECUTE_FUNCTION_ARGSinspect	signaturestatement_executionexecute_statementvaluessetpopr7   addkeysr_   r$   statusjob_pendingstatestatement_idintosenvirongetr   (DEFAULT_UC_TOOL_CLIENT_EXECUTION_TIMEOUTmin_loggerdebugtimesleepget_statementr-   	SUCCEEDEDr.   
error_codemessagemanifestr3   result
data_arrayr    lenr)   schemarp   rE   	DataFramefrom_recordsr   to_csvgetvalue)r`   ra   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waitr.   r   r3   r   r   r2   r   crp   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9 	&DAq22,-&q)""1%		&
 >~>N O++I+N+N+P*QQRT  ;8ZP7r%%77 (22!)44 !	H ;x'<'<=(BWBW,,		#&JJNN08$
  22q)|%=	%IJDMMI; '  $vY0 JJt--;;LIH&k(//:O:O.PINI 22 ??{8??+@+@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	
@ $*>>2a16622Jll''
G'DZ


:U
+&
 3 3 5
 	
e  ;
 	X 3s   R	 R&		R#RR#r   r   c                 B    ddl m} | |j                  |j                  fv S )Nr   rc   )rJ   r   PENDINGRUNNING)r   r   s     r   r   r      s!    9^++^-C-CDDDr!   )&rv   r8   loggingr   r   dataclassesr   ior   typingr   r   r   r   r	   r
   databricks.sdkr   r   r   rJ   r   r   re   ru   r   r   	getLoggerr&   r   r@   r    r#   r-   r)   r_   r   r   r+   r!   r   <module>r      s1      	  !  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!   