
    
i
                     j    d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ  G d de	          ZdS )    N)List)Document)secret_from_env)	BaseModelField	SecretStrc                       e Zd ZU dZ e edg                    Zeed<   	  ee	          Z
e	ed<   	 dZeed<   	 ded	efd
Zded	ee         fdZded	ee	         fdZdS )BraveSearchWrapperz'Wrapper around the Brave search engine.BRAVE_SEARCH_API_KEY)default_factoryapi_keysearch_kwargsz.https://api.search.brave.com/res/v1/web/searchbase_urlqueryreturnc                 n    |                      |          }d |D             }t          j        |          S )zQuery the Brave search engine and return the results as a JSON string.

        Args:
            query: The query to search for.

        Returns: The results as a JSON string.

        )r   c                     g | ]y}|                     d           |                     d          d                    t          d|                     d          g|                     dg                               dzS )titleurl Ndescriptionextra_snippets)r   linksnippet)getjoinfilter.0items     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_community/utilities/brave_search.py
<listcomp>z*BraveSearchWrapper.run.<locals>.<listcomp>    s     
 
 
  '**88txx66XBRTV9W9WX   
 
 
    )_search_requestjsondumps)selfr   web_search_resultsfinal_resultss       r!   runzBraveSearchWrapper.run   sM     "111>>
 
 +
 
 
 z-(((r#   c                 D    |                      |          }d |D             S )zQuery the Brave search engine and return the results as a list of Documents.

        Args:
            query: The query to search for.

        Returns: The results as a list of Documents.

        c                    g | ]}t          d                     t          d|                    d          g|                    dg                               |                    d          |                    d          d          S )r   Nr   r   r   r   )r   r   )page_contentmetadata)r   r   r   r   r   s     r!   r"   z9BraveSearchWrapper.download_documents.<locals>.<listcomp>8   s     

 

 

   XXtxx66XBRTV9W9WX  
 $(88G#4#4dhhuooNN  

 

 

r#   )r$   )r'   r   resultss      r!   download_documentsz%BraveSearchWrapper.download_documents.   s:     &&u--

 

  

 

 

 
	
r#   c                    | j                                         dd}t          j                    }i | j        |dd}|                    | j        |           |j        t          d          t          j	        |j        |          }|j
        st          d|j                   |                                	                    di           	                    d	g           S )
Nzapplication/json)zX-Subscription-TokenAcceptT)qr   z,prepared url is None, this should not happen)headerszHTTP error webr/   )r   get_secret_valuerequestsPreparedRequestr   prepare_urlr   r   
ValueErrorr   ok	Exceptionstatus_coder%   )r'   r   r4   reqparamsresponses         r!   r$   z"BraveSearchWrapper._search_requestD   s    $(L$A$A$C$C(
 
 &((OD&O*N*NOv...7?KLLL<999{ 	B@(*>@@AAA}}""5"--11)R@@@r#   N)__name__
__module____qualname____doc__r   r   r   r   __annotations__dictr   r   strr*   r   r   r0   r$    r#   r!   r
   r
   
   s        11')?(@AA  GY    :%555M4555EDHcDDD3) ) ) ) ) )0
 
X 
 
 
 
,AS AT$Z A A A A A Ar#   r
   )r%   typingr   r7   langchain_core.documentsr   langchain_core.utilsr   pydanticr   r   r   r
   rH   r#   r!   <module>rM      s            - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0IA IA IA IA IA IA IA IA IA IAr#   