U
    h{                     @   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                   @   s@   e Zd ZdZd	eeeeee  dddZee	 d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 )Nr   )selfr	   r
   r   r    r   N/tmp/pip-unpacked-wheel-9gdii04g/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k
rH   tdY nX || jd}|	|| j	}|j
}|D ]X}|d k	rpt| }	d}
|	 D ]\}}|| jkr|}
qt|
|j|jdd	}|V  qp|jd k	rtd
d|jid	V  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valuedocumentr   r   r   	lazy_load   s8    


zFaunaLoader.lazy_load)N)__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   