
    Ng                         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
 deeeef                  defdZ G d de          Z G d	 d
e
          ZdS )    )AnyCallableIteratorListOptionalTuple)Document)
BaseLoaderdocsreturnc                 @    d                     d | D                       S )z#Default joiner for content columns.
c                     g | ]
}|d          S )    ).0docs     j/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/rocksetdb.py
<listcomp>z"default_joiner.<locals>.<listcomp>
   s    ---c!f---    )join)r   s    r   default_joinerr      s#    99-----...r   c                   ,     e Zd ZdZdedef fdZ xZS )ColumnNotFoundErrorzColumn not found error.missing_keyqueryc                 V    t                                          d| d|            d S )NzColumn "z" not selected in query:
)super__init__)selfr   r   	__class__s      r   r   zColumnNotFoundError.__init__   s2    RKRR5RRSSSSSr   )__name__
__module____qualname____doc__strr   __classcell__)r!   s   @r   r   r      s]        !!TC T T T T T T T T T T Tr   r   c                       e Zd ZdZdefdededee         deee                  de	ee
eef                  gef         f
dZd	ee         fd
ZdS )RocksetLoadera  Load from a `Rockset` database.

    To use, you should have the `rockset` python package installed.

    Example:
        .. code-block:: python

            # This code will load 3 records from the "langchain_demo"
            # collection as Documents, with the `text` column used as
            # the content

            from langchain_community.document_loaders import RocksetLoader
            from rockset import RocksetClient, Regions, models

            loader = RocksetLoader(
                RocksetClient(Regions.usw2a1, "<api key>"),
                models.QueryRequestSql(
                    query="select * from langchain_demo limit 3"
                ),
                ["text"]
            )
        )
    Nclientr   content_keysmetadata_keyscontent_columns_joinerc                    	 ddl m}m} ddlm} n# t
          $ r t          d          w xY wt          ||          st          dt          |                     t          ||          st          dt          |                     || _	        || _
        || _        || _        || _        || _        || _        	 | j	                            d           dS # t"          $ r Y dS w xY w)	aK  Initialize with Rockset client.

        Args:
            client: Rockset client object.
            query: Rockset query object.
            content_keys: The collection columns to be written into the `page_content`
                of the Documents.
            metadata_keys: The collection columns to be written into the `metadata` of
                the Documents. By default, this is all the keys in the document.
            content_columns_joiner: Method that joins content_keys and its values into a
                string. It's method that takes in a List[Tuple[str, Any]]],
                representing a list of tuples of (column name, column value).
                By default, this is a method that joins each column value with a new
                line. This method is only relevant if there are multiple content_keys.
        r   )QueryPaginatorRocksetClient)QueryRequestSqlz]Could not import rockset client python package. Please install it with `pip install rockset`.z;client should be an instance of rockset.RocksetClient, got zBquery should be an instance of rockset.model.QueryRequestSql, got 	langchainN)rocksetr/   r0   rockset.modelsr1   ImportError
isinstance
ValueErrortyper*   r   r+   r-   r,   	paginatorrequest_modelset_applicationAttributeError)	r    r*   r   r+   r,   r-   r/   r0   r1   s	            r   r   zRocksetLoader.__init__-   s]   .	========6666666 	 	 	@  	 &-00 	&F||& &  
 %11 	%E{{% %  
 
(&<#*',	K''44444 	 	 	DD	s    +>C 
C('C(r   c              #   r  K   | j         j                            | j                  j        }|D ]	 t	          |                     fd| j        D                       | j        fd| j        D             n          V  U# t          $ r%}t          |j
        d         | j                  d }~ww xY wd S )N)sqlc                 $    g | ]}||         fS r   r   r   colr   s     r   r   z+RocksetLoader.lazy_load.<locals>.<listcomp>o   s!    FFFS#s3xFFFr   c                 "    i | ]}||         S r   r   r@   s     r   
<dictcomp>z+RocksetLoader.lazy_load.<locals>.<dictcomp>q   s    JJJc3s8JJJr   )page_contentmetadatar   )r*   Queriesr   resultsr	   r-   r+   r,   KeyErrorr   args)r    query_resultser   s      @r   	lazy_loadzRocksetLoader.lazy_loadg   s     +11
 2 
 

 	 ! 	 	C!%!<!<FFFFD4EFFF" " )5 KJJJt7IJJJJ          *F1Itz  	 	s   AB
B4 B//B4)r"   r#   r$   r%   r   r   r   r&   r   r   r   r   r   r	   rL   r   r   r   r)   r)      s         : .2IW8 88 8 3i	8
  S	*8 !)$uS#X*?)@#)E F8 8 8 8t8H-      r   r)   N)typingr   r   r   r   r   r   langchain_core.documentsr	   )langchain_community.document_loaders.baser
   r&   r   	Exceptionr   r)   r   r   r   <module>rQ      s    A A A A A A A A A A A A A A A A - - - - - - @ @ @ @ @ @/eCHo. /3 / / / /
T T T T T) T T Tf f f f fJ f f f f fr   