
    Ng
                         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
e          Z G d de	          ZdS )    )IterableOptionalType)CallbackManagerForToolRun)Document)BaseTool)	BaseModelField)	HTTPErrorReadTimeout)ConnectionError)WebBaseLoaderc                   6    e Zd ZU dZ e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__     h/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/yahoo_finance_news.pyr   r      s6         ..#DEEEE3EEEEEr   r   c                       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d
edee         defdZedee         d
edefd            Zd	S )YahooFinanceNewsToolz3Tool that searches financial news on Yahoo Finance.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_schemaNr   run_managerreturnc                    	 ddl }n# t          $ r t          d          w xY w|                    |          }	 |j        d| dS n## t          t
          t          f$ r	 d| dcY S w xY wg }	 d |j        D             }n'# t          t
          t          f$ r |sd| dcY S Y nw xY w|sd| dS t          |	          }|	                                }| 
                    ||          }|sd| dS |S )
z Use the Yahoo Finance News tool.r   NzXCould not import yfinance python package. Please install it with `pip install yfinance`.zCompany ticker z not found.c                 6    g | ]}|d          dk    |d         S )typeSTORYlinkr   ).0ns     r   
<listcomp>z-YahooFinanceNewsTool._run.<locals>.<listcomp>8   s*    MMM1&	W8L8LQvY8L8L8Lr   z-No news found for company that searched with z ticker.)	web_paths)yfinanceImportErrorTickerisinr   r   r   newsr   load_format_results)	selfr   r#   r.   companylinksloaderdocsresults	            r   _runzYahooFinanceNewsTool._run"   s   	OOOO 	 	 	A  	
 //%((	8|#;;;;; $;8 	8 	8 	87U777777	8 	WMMMMMEE;8 	W 	W 	W WVuVVVVVVW W	W  	SR5RRRR///{{}}%%dE22 	SR5RRRRs+    !A A('A(.B   B$#B$r9   c                 J    fd| D             }d                     |          S )Nc                     g | ]M}|j         d          v s|j         d         v  d                    |j         d         |j         d          g          NS )r   title
)metadatajoin)r*   docr   s     r   r,   z8YahooFinanceNewsTool._format_results.<locals>.<listcomp>G   se     
 
 
]333uW@U7U7U IIs|G,cl=.IJKK7U7U7Ur   z

)rA   )r9   r   doc_stringss    ` r   r4   z$YahooFinanceNewsTool._format_resultsE   s?    
 
 
 

 
 

 {{;'''r   )N)r   r   r   r   r   r   r   r   r!   intr   r"   r   r	   r   r   r;   staticmethodr   r   r4   r   r   r   r   r      s         ==$D#$$$	;     E3OOO*#8Ki888
 <@! !! 78! 
	! ! ! !F (hx0 ( ( ( ( ( \( ( (r   r   N)typingr   r   r   langchain_core.callbacksr   langchain_core.documentsr   langchain_core.toolsr   pydanticr	   r
   requests.exceptionsr   r   urllib3.exceptionsr   -langchain_community.document_loaders.web_baser   r   r   r   r   r   <module>rN      s   + + + + + + + + + + > > > > > > - - - - - - ) ) ) ) ) ) % % % % % % % % 6 6 6 6 6 6 6 6 . . . . . . G G G G G GF F F F FI F F F9( 9( 9( 9( 9(8 9( 9( 9( 9( 9(r   