a
    bgO                     @  sX   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 deZdS )    )annotations)AnyDictIteratorListOptionalTuple)Document)
BaseLoaderc                	   @  sf   e Zd ZdZdddddddddddZd	d
ddZd	ddddZdd
ddZdd
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strzOptional[Dict[str, Any]]zOptional[List[str]]queryhostusernamepassword
parameterspage_content_columnsmetadata_columnsc                 C  s:   || _ || _|| _|| _|| _|| _|dur0|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`.
        Nr   )selfr   r   r   r   r   r   r    r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/document_loaders/kinetica_loader.py__init__   s    zKineticaLoader.__init__zList[Dict[str, Any]])returnc              
     s   zddl m}m} W n ty.   tdY n0 zr| }| j|_| j|_|| j|d}||| j,}|j	
   fdd|D }W d    n1 s0    Y  W n6 ty } ztd|  g }W Y d }~n
d }~0 0 |S )Nr   )GPUdbGPUdbSqlIteratorzZCould not import Kinetica python API. Please install it with `pip install gpudb==7.2.0.9`.)r   optionsc                   s   g | ]}t t |qS r   )dictzip).0recordZcolumn_namesr   r   
<listcomp>@       z1KineticaLoader._execute_query.<locals>.<listcomp>zAn error occurred: )Zgpudbr   r   ImportErrorOptionsr   r   r   r   Ztype_mapkeys	Exceptionprint)r   r   r   r   connrecordsquery_resulter   r!   r   _execute_query.   s$    

4zKineticaLoader._execute_queryzTuple[List[str], List[str]])r+   r   c                 C  sT   | j r| j ng }| jr| jng }|d u r<|r<t|d  }|d u rHg }|pNg |fS )Nr   )r   r   listr&   )r   r+   r   r   r   r   r   _get_columnsH   s    zKineticaLoader._get_columnszIterator[Document]c                 #  s   |   }t|tr$td|  g S | |\ dv rJt|d  |D ]H}dfdd| D } fdd| D }t	||d	}|V  qNd S )
Nz$An error occurred during the query: *r   
c                 3  s(   | ] \}}| v r| d | V  qdS )z: Nr   r   kv)r   r   r   	<genexpr>^   s   z+KineticaLoader.lazy_load.<locals>.<genexpr>c                   s   i | ]\}}| v r||qS r   r   r2   )r   r   r   
<dictcomp>a   r#   z,KineticaLoader.lazy_load.<locals>.<dictcomp>)page_contentmetadata)
r-   
isinstancer'   r(   r/   r.   r&   joinitemsr	   )r   r+   rowr7   r8   docr   )r   r   r   	lazy_loadU   s    
zKineticaLoader.lazy_loadzList[Document]c                 C  s   t |  S )z Load data into document objects.)r.   r>   )r   r   r   r   loade   s    zKineticaLoader.load)NNN)	__name__
__module____qualname____doc__r   r-   r/   r>   r?   r   r   r   r   r   
   s      r   N)
__future__r   typingr   r   r   r   r   r   Zlangchain_core.documentsr	   Z)langchain_community.document_loaders.baser
   r   r   r   r   r   <module>   s    