U
    h                     @   s\   d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ G dd de	ZdS )	    )AnyList)#AsyncCallbackManagerForRetrieverRunCallbackManagerForRetrieverRun)Document)BaseRetrieverRetrieverLike)BaseDocumentCompressorc                   @   s`   e Zd ZU dZeed< eed< G dd dZee	e
ee dddZeee
ee dd	d
ZdS )ContextualCompressionRetrieverzARetriever that wraps a base retriever and compresses the results.base_compressorbase_retrieverc                   @   s   e Zd ZdZdS )z%ContextualCompressionRetriever.ConfigTN)__name__
__module____qualname__Zarbitrary_types_allowed r   r   O/tmp/pip-unpacked-wheel-bo69hh5q/langchain/retrievers/contextual_compression.pyConfig   s   r   )queryrun_managerkwargsreturnc                K   sJ   | j j|fdd| ii|}|rB| jj||| d}t|S g S dS )zGet documents relevant for a query.

        Args:
            query: string to find relevant documents for

        Returns:
            Sequence of relevant documents
        config	callbacksr   N)r   Zinvoke	get_childr   Zcompress_documentslistselfr   r   r   ZdocsZcompressed_docsr   r   r   _get_relevant_documents   s    
  z6ContextualCompressionRetriever._get_relevant_documentsc                   sV   | j j|fdd| ii|I dH }|rN| jj||| dI dH }t|S g S dS )zGet documents relevant for a query.

        Args:
            query: string to find relevant documents for

        Returns:
            List of relevant documents
        r   r   Nr   )r   Zainvoker   r   Zacompress_documentsr   r   r   r   r   _aget_relevant_documents5   s    
  z7ContextualCompressionRetriever._aget_relevant_documentsN)r   r   r   __doc__r	   __annotations__r   r   strr   r   r   r   r   r   r   r   r   r   r   r
      s   
r
   N)typingr   r   Zlangchain_core.callbacksr   r   Zlangchain_core.documentsr   Zlangchain_core.retrieversr   r   Z.langchain.retrievers.document_compressors.baser	   r
   r   r   r   r   <module>   s
   