o
    Zh{                     @   s@   d dl mZmZmZ d dlmZ d dlmZ G dd deZdS )    )IteratorOptionalSequence)Document)
BaseLoaderc                   @   sH   e Zd ZdZ	ddedededeee  fddZd	ee	 fd
dZ
dS )FaunaLoaderal  Load from `FaunaDB`.

    Attributes:
        query (str): The FQL query string to execute.
        page_content_field (str): The field that contains the content of each page.
        secret (str): The secret key for authenticating to FaunaDB.
        metadata_fields (Optional[Sequence[str]]):
            Optional list of field names to include in metadata.
    Nquerypage_content_fieldsecretmetadata_fieldsc                 C   s   || _ || _|| _|| _d S N)r   r	   r
   r   )selfr   r	   r
   r    r   a/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/document_loaders/fauna.py__init__   s   
zFaunaLoader.__init__returnc                 c   s    zddl m}m} ddlm} ddlm} W n ty"   tdw || jd}|	|| j	}|j
}|D ],}|d urbt| }	d}
|	 D ]\}}|| jkrS|}
qHt|
|j|jdd	}|V  q6|jd urttd
d|jid	V  d S d S )Nr   )Pagefql)Client)QuerySuccesszRCould not import fauna python package. Please install it with `pip install fauna`.)r
    )idts)page_contentmetadatazNext Page Existsafter)Zfaunar   r   Zfauna.clientr   Zfauna.encodingr   ImportErrorr
   r   datadictitemsr	   r   r   r   r   )r   r   r   r   r   clientresponsepageresultZdocument_dictr   keyvalueZdocumentr   r   r   	lazy_load   sB   

zFaunaLoader.lazy_loadr   )__name__
__module____qualname____doc__strr   r   r   r   r   r&   r   r   r   r   r      s    

r   N)	typingr   r   r   Zlangchain_core.documentsr   Z)langchain_community.document_loaders.baser   r   r   r   r   r   <module>   s    