o
    Zh8                     @   s<   d dl mZmZ d dlmZ d dlmZ G dd deZdS )    )CallableUnion)Document)Docstorec                   @   sB   e Zd ZdZdeegeeef f fddZdedefddZ	d	S )

DocstoreFnzDocstore via arbitrary lookup function.

    This is useful when:
     * it's expensive to construct an InMemoryDocstore/dict
     * you retrieve documents from remote sources
     * you just want to reuse existing objects
    	lookup_fnc                 C   s
   || _ d S )N)
_lookup_fn)selfr    r
   `/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/docstore/arbitrary_fn.py__init__   s   
zDocstoreFn.__init__searchreturnc                 C   sD   |  |}t|trt|d|idS t|tr|S tdt| )zSearch for a document.

        Args:
            search: search string

        Returns:
            Document if found, else error message.
        source)Zpage_contentmetadatazUnexpected type of document )r   
isinstancestrr   
ValueErrortype)r	   r   rr
   r
   r   r      s   
	

zDocstoreFn.searchN)
__name__
__module____qualname____doc__r   r   r   r   r   r   r
   r
   r
   r   r      s    
r   N)typingr   r   Zlangchain_core.documentsr   Z!langchain_community.docstore.baser   r   r
   r
   r
   r   <module>   s    