
    NgO                    f    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dS )    )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dS )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`.

    Nquerystrhostusernamepassword
parametersOptional[Dict[str, Any]]page_content_columnsOptional[List[str]]metadata_columnsc                p    || _         || _        || _        || _        || _        || _        ||ng | _        dS )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)r   r   r   r   r   r   r   )selfr   r   r   r   r   r   r   s           p/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/kinetica_loader.py__init__zKineticaLoader.__init__   sI    $ 
	  $$8!4D4P 0 0VX    returnList[Dict[str, Any]]c                   	 ddl m}m} n# t          $ r t          d          w xY w	 |                                }| j        |_        | j        |_         || j        |          } ||| j                  5 }|j	        
                                fd|D             }d d d            n# 1 swxY w Y   n+# t          $ r}t          d|            g }Y d }~nd }~ww xY w|S )Nr   )GPUdbGPUdbSqlIteratorzZCould not import Kinetica python API. Please install it with `pip install gpudb==7.2.0.9`.)r   optionsc                J    g | ]}t          t          |                     S  )dictzip).0recordcolumn_namess     r   
<listcomp>z1KineticaLoader._execute_query.<locals>.<listcomp>@   s+    VVVFSv%>%> ? ?VVVr   zAn error occurred: )gpudbr    r!   ImportErrorOptionsr   r   r   r   type_mapkeys	Exceptionprint)	r   r    r!   r"   connrecordsquery_resulter)   s	           @r   _execute_queryzKineticaLoader._execute_query.   s   	555555555 	 	 	G  		mmooG#}G#}G5di999D!!$
33 Ww&/4466VVVVgVVVW W W W W W W W W W W W W W W  	 	 	+++,,,LLLLLL	 sD    &AB9 9(B-!B9 -B11B9 4B15B9 9
C!CC!r4   Tuple[List[str], List[str]]c                    | j         r| j         ng }| j        r| j        ng }|)|r't          |d                                                   }|g }|pg |fS )Nr   )r   r   listr/   )r   r4   r   r   s       r   _get_columnszKineticaLoader._get_columnsH   sz     *.)BJD%% 	 594IQ400r'L'#'Q(<(<(>(>#?#? #!#)r+;;;r   Iterator[Document]c              #    K   |                                  }t          |t                    rt          d|            g S |                     |          \  dv r't          |d                                                   |D ]j}d                    fd|                                D                       }fd|                                D             }t          ||          }|V  kd S )Nz$An error occurred during the query: *r   
c              3  4   K   | ]\  }}|v 	| d | V  dS )z: Nr$   )r'   kvr   s      r   	<genexpr>z+KineticaLoader.lazy_load.<locals>.<genexpr>^   sE       % % $1q<P7P7P17P7P7P7P% %r   c                $    i | ]\  }}|v 	||S r$   r$   )r'   r@   rA   r   s      r   
<dictcomp>z,KineticaLoader.lazy_load.<locals>.<dictcomp>a   s*    NNNA=M8M8M18M8M8Mr   )page_contentmetadata)
r6   
isinstancer0   r1   r:   r9   r/   joinitemsr
   )r   r4   rowrE   rF   docr   r   s         @@r   	lazy_loadzKineticaLoader.lazy_loadU   s&     **,,lI.. 	GGGHHHI151B1B<1P1P..&&&#'Q(<(<(>(>#?#?  	 	C99 % % % %(+		% % %  L ONNNNNNHxHHHCIIII	 	r   List[Document]c                D    t          |                                           S )z Load data into document objects.)r9   rL   )r   s    r   loadzKineticaLoader.loade   s    DNN$$%%%r   )NNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r4   r   r   r7   )r   r;   )r   rM   )	__name__
__module____qualname____doc__r   r6   r:   rL   rO   r$   r   r   r   r   
   s          044804Y Y Y Y Y4   4< < < <    & & & & & &r   r   N)
__future__r   typingr   r   r   r   r   r	   langchain_core.documentsr
   )langchain_community.document_loaders.baser   r   r$   r   r   <module>rX      s    " " " " " " = = = = = = = = = = = = = = = = - - - - - - @ @ @ @ @ @]& ]& ]& ]& ]&Z ]& ]& ]& ]& ]&r   