
    7|h                         d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ erd dlmZmZ  ej0                  e      Z ed	d
d       G d de             Zy)    )annotationsN)TYPE_CHECKINGAnyAsyncIteratorCallableDictIteratorListOptional)
deprecated)Document)
BaseLoader)_AstraDBEnvironment)AstraDBAsyncAstraDBz0.0.29z1.0zlangchain_astradb.AstraDBLoader)sinceremovalalternative_importc                      e Zd Zdddddddddej                  d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZd	dZd
dZddZy)AstraDBLoaderNi  )
tokenapi_endpointastra_db_clientasync_astra_db_client	namespacefilter_criteria
projectionfind_optionsnb_prefetchedextraction_functionc       
            t        |||||      }|| _        |j                  j                  |      | _        || _        || _        || _        |	xs i | _        |
| _        || _	        y)a  Load DataStax Astra DB documents.

        Args:
            collection_name: name of the Astra DB collection to use.
            token: API token for Astra DB usage.
            api_endpoint: full URL to the API endpoint,
                such as `https://<DB-ID>-us-east1.apps.astra.datastax.com`.
            astra_db_client: *alternative to token+api_endpoint*,
                you can pass an already-created 'astrapy.db.AstraDB' instance.
            async_astra_db_client: *alternative to token+api_endpoint*,
                you can pass an already-created 'astrapy.db.AsyncAstraDB' instance.
            namespace: namespace (aka keyspace) where the
                collection is. Defaults to the database's "default namespace".
            filter_criteria: Criteria to filter documents.
            projection: Specifies the fields to return.
            find_options: Additional options for the query.
            nb_prefetched: Max number of documents to pre-fetch. Defaults to 1000.
            extraction_function: Function applied to collection documents to create
                the `page_content` of the LangChain Document. Defaults to `json.dumps`.
        )r   r   r   r   r   N)
r   	astra_envastra_db
collectioncollection_namefilterr   r   r   r    )selfr%   r   r   r   r   r   r   r   r   r   r    r"   s                k/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/document_loaders/astradb.py__init__zAstraDBLoader.__init__"   sr    F (%+"7
	 ##,,77H.%$(.B*#6     c              #  v  K   | j                   j                  | j                  | j                  | j                  d | j
                        D ]j  }t        | j                  |      | j                   j                  j                  | j                   j                  j                  | j                  d       l y wN)r&   optionsr   sort
prefetched)r   r   r$   )page_contentmetadata)r$   paginated_findr&   r   r   r   r   r    r#   r   base_urlr%   r'   docs     r(   	lazy_loadzAstraDBLoader.lazy_loadU   s     ??11;;%%)) 2 
 	C !55c:!%!9!9!C!C$(OO$<$<$E$E"&"6"6 	s   B7B9c                `   K   | j                         2 cg c3 d{   }|7 6 c}S c c}w w)z Load data into Document objects.N)
alazy_loadr4   s     r(   aloadzAstraDBLoader.aloadf   s(     %)__%677c7777s$   .)%#
%)%).c                 K   | j                   j                  j                  | j                         d {   }|j	                  | j
                  | j                  | j                  d | j                        2 3 d {   }t        | j                  |      |j                  j                  |j                  j                  | j                  d       _7 7 \6 y wr,   )r"   async_astra_dbr$   r%   r2   r&   r   r   r   r   r    r#   r   r3   )r'   async_collectionr5   s      r(   r8   zAstraDBLoader.alazy_loadj   s     !%!>!>!I!I  "
 
 *88;;%%)) 9 
 	 	# !55c:!1!:!:!D!D$4$=$=$F$F"&"6"6 
	 
s5   3CCAC8C<C=C ACCC)r%   strr   Optional[str]r   r>   r   zOptional[AstraDB]r   zOptional[AsyncAstraDB]r   r>   r   Optional[Dict[str, Any]]r   r?   r   r?   r   intr    zCallable[[Dict], str]returnNone)rA   zIterator[Document])rA   zList[Document])rA   zAsyncIterator[Document])	__name__
__module____qualname__jsondumpsr)   r6   r9   r8    r*   r(   r   r      s      $&*-18<#'48/315!59ZZ1717 	17
 $17 +17  617 !17 217 -17 /17 17 317 
17f"8r*   r   )
__future__r   rF   loggingtypingr   r   r   r   r   r	   r
   r   langchain_core._api.deprecationr   langchain_core.documentsr   )langchain_community.document_loaders.baser   %langchain_community.utilities.astradbr   
astrapy.dbr   r   	getLoggerrC   loggerr   rH   r*   r(   <module>rS      so    "  	 	 	 7 - @ E0			8	$ 
8
[J [
[r*   