U
    h                     @   sX   d dl 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 G dd deZdS )	    )AnyListOptional)CallbackManagerForRetrieverRun)Document)root_validator)BaseRetrieverc                   @   sZ   e Zd ZU dZeed< dZee ed< e	ddeeddd	Z
eeee d
ddZdS )MetalRetrieverz`Metal API` retriever.clientNparamsT)pre)valuesreturnc                 C   sL   ddl m} d|kr8|d }t||s8tdt| |di |d< |S )z0Validate that the client is of the correct type.r   )Metalr
   zMGot unexpected client, should be of type metal_sdk.metal.Metal. Instead, got r   )Zmetal_sdk.metalr   
isinstance
ValueErrortypeget)clsr   r   r
    r   H/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/retrievers/metal.pyvalidate_client   s    
zMetalRetriever.validate_client)queryrun_managerr   c                C   sT   | j jd|if| j}g }|d D ],}dd | D }|t|d |d q"|S )Ntextdatac                 S   s   i | ]\}}|d kr||qS )r   r   ).0kvr   r   r   
<dictcomp>(   s       z:MetalRetriever._get_relevant_documents.<locals>.<dictcomp>)Zpage_contentmetadata)r
   searchr   itemsappendr   )selfr   r   resultsZfinal_resultsrr    r   r   r   _get_relevant_documents"   s    z&MetalRetriever._get_relevant_documents)__name__
__module____qualname____doc__r   __annotations__r   r   dictr   r   strr   r   r   r'   r   r   r   r   r	   	   s   
 r	   N)typingr   r   r   Zlangchain_core.callbacksr   Zlangchain_core.documentsr   Zlangchain_core.pydantic_v1r   Zlangchain_core.retrieversr   r	   r   r   r   r   <module>   s
   