a
    bg8                     @   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                   @   s@   e Zd ZdZeegeeef f dddZeed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
   w/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/docstore/arbitrary_fn.py__init__   s    zDocstoreFn.__init__)searchreturnc                 C   sH   |  |}t|tr$t|d|idS t|tr2|S tdt| dS )zSearch for a document.

        Args:
            search: search string

        Returns:
            Document if found, else error message.
        source)Zpage_contentmetadatazUnexpected type of document N)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   