
    hO                    ^    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
 d dlmZ  G d de      Zy)    )annotations)AnyDictIteratorListOptionalTuple)Document)
BaseLoaderc                  b    e Zd ZdZ	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d	dZd
dZ	 	 	 	 ddZddZddZy)KineticaLoaderaR  Load from `Kinetica` API.

    Each document represents one row of the result. The `page_content_columns`
    are written into the `page_content` of the document. The `metadata_columns`
    are written into the `metadata` of the document. By default, all columns
    are written into the `page_content` and none into the `metadata`.

    Nc                z    || _         || _        || _        || _        || _        || _        ||| _        yg | _        y)aX  Initialize Kinetica document loader.

        Args:
            query: The query to run in Kinetica.
            parameters: Optional. Parameters to pass to the query.
            page_content_columns: Optional. Columns written to Document `page_content`.
            metadata_columns: Optional. Columns written to Document `metadata`.
        N)queryhostusernamepassword
parameterspage_content_columnsmetadata_columns)selfr   r   r   r   r   r   r   s           r/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/document_loaders/kinetica_loader.py__init__zKineticaLoader.__init__   sE    $ 
	  $$8!4D4P 0VX    c           
        	 ddl m}m} 	 |j	                         }| j
                  |_        | j                  |_         || j                  |      } ||| j                        5 }|j                  j                         }|D cg c]  }t        t        ||             }}d d d        |S # t        $ r t        d      w xY wc c}w # 1 sw Y   S xY w# t        $ r}	t        d|	        g }Y d }	~	|S d }	~	ww xY w)Nr   )GPUdbGPUdbSqlIteratorzZCould not import Kinetica python API. Please install it with `pip install gpudb==7.2.0.9`.)r   optionszAn error occurred: )gpudbr   r   ImportErrorOptionsr   r   r   r   type_mapkeysdictzip	Exceptionprint)
r   r   r   r   connrecordscolumn_namesrecordquery_resultes
             r   _execute_queryzKineticaLoader._execute_query.   s    	5	mmoG#}}G#}}Gdii9D!$

3 Ww&//446NUVFSv%> ?VVW +  	G 	  WW 	  	's+,L		sS   B+ AC $CCC!C +C CCC C 	C9C44C9c                    | j                   r| j                   ng }| j                  r| j                  ng }||rt        |d   j                               }|g }|xs g |fS )Nr   )r   r   listr"   )r   r+   r   r   s       r   _get_columnszKineticaLoader._get_columnsH   sq     *.)B)BD%% 	 594I4I400r'L#'Q(<(<(>#? #!#)r+;;;r   c              #    	K   | j                         }t        |t              rt        d|        g S | j	                  |      \  	}d	v rt        |d   j                               	|D ]c  }dj                  	fd|j                         D              }|j                         D ci c]  \  }}||v s|| }}}t        ||      }| e y c c}}w w)Nz$An error occurred during the query: *r   
c              3  <   K   | ]  \  }}|v s| d |   yw)z: N ).0kvr   s      r   	<genexpr>z+KineticaLoader.lazy_load.<locals>.<genexpr>^   s,      % $1q<P7P1#Rs%s   )page_contentmetadata)
r-   
isinstancer%   r&   r0   r/   r"   joinitemsr
   )
r   r+   r   rowr:   r7   r8   r;   docr   s
            @r   	lazy_loadzKineticaLoader.lazy_loadU   s     **,lI.8GHI151B1B<1P..&&#'Q(<(<(>#?  	C99 %(+		% L *-NA=M8M1NHNxHCI	 Os   B%C(C5C:Cc                4    t        | j                               S )z Load data into document objects.)r/   rA   )r   s    r   loadzKineticaLoader.loade   s    DNN$%%r   )NNN)r   strr   rD   r   rD   r   rD   r   zOptional[Dict[str, Any]]r   Optional[List[str]]r   rE   )returnList[Dict[str, Any]])r+   rG   rF   zTuple[List[str], List[str]])rF   zIterator[Document])rF   zList[Document])	__name__
__module____qualname____doc__r   r-   r0   rA   rC   r5   r   r   r   r   
   s     044804YY Y 	Y
 Y -Y 2Y .Y44<0<	$< &r   r   N)
__future__r   typingr   r   r   r   r   r	   langchain_core.documentsr
   )langchain_community.document_loaders.baser   r   r5   r   r   <module>rP      s"    " = = - @]&Z ]&r   