a
    bg=                     @   s   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mZ d dlmZmZ d dlmZ d dlmZ G d	d
 d
eZG dd de	ZdS )    )IterableOptionalType)CallbackManagerForToolRun)Document)BaseTool)	BaseModelField)	HTTPErrorReadTimeout)ConnectionError)WebBaseLoaderc                   @   s$   e Zd ZU dZeddZeed< dS )YahooFinanceNewsInputz$Input for the YahooFinanceNews tool.zcompany ticker query to look up)descriptionqueryN)__name__
__module____qualname____doc__r	   r   str__annotations__ r   r   z/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/tools/yahoo_finance_news.pyr      s   
r   c                   @   sx   e Zd ZU dZdZeed< dZeed< dZe	ed< e
Zee ed< deee ed
ddZeee eedddZd	S )YahooFinanceNewsToolz3Tool that searches financial news on Yahoo Finance.Zyahoo_finance_newsnamezUseful for when you need to find financial news about a public company. Input should be a company ticker. For example, AAPL for Apple, MSFT for Microsoft.r   
   top_kargs_schemaN)r   run_managerreturnc           	   
   C   s   zddl }W n ty&   tdY n0 ||}z|jdu rLd| dW S W n$ tttfyr   d| d Y S 0 g }zdd |jD }W n, tttfy   |sd| d	 Y S Y n0 |sd| d	S t|d
}|	 }| 
||}|sd| d	S |S )a  
        Use the Yahoo Finance News tool.

        Args:
            query: Company ticker symbol (e.g., 'AAPL' for Apple).
            run_manager: Optional callback manager.

        Returns:
            str: Formatted news results or error message.
        r   NzXCould not import yfinance python package. Please install it with `pip install yfinance`.zCompany ticker z not found.c                 S   s,   g | ]$}|d  d dkr|d  d d qS )contentZcontentTypeZSTORYZcanonicalUrlurlr   ).0nr   r   r   
<listcomp>A   s   z-YahooFinanceNewsTool._run.<locals>.<listcomp>z-No news found for company that searched with z ticker.)Z	web_paths)yfinanceImportErrorZTickerisinr
   r   r   newsr   load_format_results)	selfr   r   r%   Zcompanylinksloaderdocsresultr   r   r   _run"   s8    




zYahooFinanceNewsTool._run)r.   r   r   c                    s    fdd| D }d |S )Nc              	      sJ   g | ]B} |j d dv s( |j d v rd|j d |j d dgqS )r    title
)metadatagetjoin)r"   docr   r   r   r$   T   s   z8YahooFinanceNewsTool._format_results.<locals>.<listcomp>z

)r6   )r.   r   Zdoc_stringsr   r8   r   r*   R   s    
z$YahooFinanceNewsTool._format_results)N)r   r   r   r   r   r   r   r   r   intr   r   r   r   r   r   r0   staticmethodr   r   r*   r   r   r   r   r      s   

 0r   N)typingr   r   r   Zlangchain_core.callbacksr   Zlangchain_core.documentsr   Zlangchain_core.toolsr   Zpydanticr   r	   Zrequests.exceptionsr
   r   Zurllib3.exceptionsr   Z-langchain_community.document_loaders.web_baser   r   r   r   r   r   r   <module>   s   