U
    hP                     @  sx   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ er\d dlmZ eeZG dd dZdS )    )annotationsN)TYPE_CHECKINGAnyDictListOptional)Document)
Connectionc                   @  s4   e Zd ZdZdddddddZd	d
dddZdS )OracleSummaryztGet Summary
    Args:
        conn: Oracle Connection,
        params: Summary parameters,
        proxy: Proxy
    Nr	   zDict[str, Any]zOptional[str])connparamsproxyc                 C  s   || _ || _|| _d S )N)r   r   summary_params)selfr   r   r    r   J/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/utilities/oracleai.py__init__"   s    zOracleSummary.__init__r   z	List[str])docsreturnc           	   
   C  sB  zddl }W n, tk
r8 } ztd|W 5 d}~X Y nX |dkrFg S g }zd|j_| j }| jrv|jd| jd t|t	rg }|
|j}|jd|t| j|d |dkr|d	 n|t	|  nt|tr6g }|
|j}|jd|jt| j|d |dkr"|d	 n|t	|  nt|trg }|D ]}|
|j}t|t	r|jd
|t| j|d n2t|tr|jd
|jt| j|d ntd|dkr|d	 n|t	|  qJntd|  |W S  tk
r< } z&td|  t  |   W 5 d}~X Y nX dS )a  Get the summary of the input docs.
        Args:
            docs: The documents to generate summary for.
                  Allowed input types: str, Document, List[str], List[Document]
        Returns:
            List of summary text, one for each input doc.
        r   NzIUnable to import oracledb, please install with `pip install -U oracledb`.Fz&begin utl_http.set_proxy(:proxy); end;)r   z
                    declare
                        input clob;
                    begin
                        input := :data;
                        :summ := dbms_vector_chain.utl_to_summary(input, json(:params));
                    end;)datar   Zsumm aQ  
                            declare
                                input clob;
                            begin
                                input := :data;
                                :summ := dbms_vector_chain.utl_to_summary(input, 
                                            json(:params));
                            end;zInvalid input typezAn exception occurred :: )oracledbImportErrordefaultsZ
fetch_lobsr   cursorr   execute
isinstancestrvarZDB_TYPE_CLOBjsondumpsr   appendgetvaluer   Zpage_contentr   	Exceptioncloseloggerinfo	traceback	print_exc)	r   r   r   eresultsr   summarydocexr   r   r   get_summary)   s    	
 






zOracleSummary.get_summary)N)__name__
__module____qualname____doc__r   r.   r   r   r   r   r
      s    r
   )
__future__r   r   loggingr'   typingr   r   r   r   r   Zlangchain_core.documentsr   r   r	   	getLoggerr/   r%   r
   r   r   r   r   <module>	   s   
 