
    Ng                    v    d Z ddlmZ ddlmZmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZmZ  G d de          Zd	S )
zUtil that calls AskNews api.    )annotations)datetime	timedelta)AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                      e Zd ZU dZdZded<   dZded<   dZded<   	 dZded<   	  e	d	
          Z
 ed          edd                        Z	 dddZ	 dddZdS )AskNewsAPIWrapperzWrapper for AskNews API.Nr   asknews_syncasknews_asynczOptional[str]asknews_client_idasknews_client_secretforbid)extrabefore)modevaluesr   returnc                   t          |dd          }t          |dd          }	 ddl}n# t          $ r t          d          w xY w|                    ||dg	          }|                    ||dg	          }||d
<   ||d<   ||d<   ||d<   |S )zGValidate that api credentials and python package exists in environment.r   ASKNEWS_CLIENT_IDr   ASKNEWS_CLIENT_SECRETr   NzOAskNews python package not found. Please install it with `pip install asknews`.news)	client_idclient_secretscopesr   r   )r	   asknews_sdkImportError
AskNewsSDKAsyncAskNewsSDK)clsr   r   r   r    an_syncan_asyncs          a/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/asknews.pyvalidate_environmentz&AskNewsAPIWrapper.validate_environment   s    
 1')<
 
 !5+-D!
 !
	 	 	 	@  	 (('/8 ) 
 

 ..'/8 / 
 
 ")~"*&7"#*?&'s	   ) A
   r   querystrmax_resultsint
hours_backc           	     l   |dk    rzd}d}t          t          j                    t          |          z
                                            }t          t          j                                                              }nd}d}d}d}| j        j                            ||||||d	          }|j        S )
z)Search news in AskNews API synchronously.0   kwThoursFnlNstringr*   
n_articlesmethod
historicalstart_timestampend_timestampreturn_type)	r-   r   nowr   	timestampr   r   search_news	as_string	selfr*   r,   r.   r8   r9   startstopresponses	            r'   r?   zAskNewsAPIWrapper.search_newsA   s     ??FJ)**E*E*EEPPRRSSEx|~~//1122DDJFED$)55"!!  6 
 
 !!    c           	     |  K   |dk    rzd}d}t          t          j                    t          |          z
                                            }t          t          j                                                              }nd}d}d}d}| j        j                            ||||||d	           d{V }|j        S )
z*Search news in AskNews API asynchronously.r0   r1   Tr2   Fr4   Nr5   r6   )	r-   r   r=   r   r>   r   r   r?   r@   rA   s	            r'   asearch_newszAskNewsAPIWrapper.asearch_news[   s       ??FJ)**E*E*EEPPRRSSEx|~~//1122DDJFED+0<<"!!  = 
 
 
 
 
 
 
 
 !!rF   )r   r   r   r   )r)   r   )r*   r+   r,   r-   r.   r-   r   r+   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   model_configr   classmethodr(   r?   rH    rF   r'   r   r      s         ""LM'+++++(+/////,:  L _(#### # # [ $##L DE" " " " "6 DE" " " " " " "rF   r   N)rL   
__future__r   r   r   typingr   r   r   langchain_core.utilsr	   pydanticr
   r   r   r   rP   rF   r'   <module>rU      s    " " " " " " " " ( ( ( ( ( ( ( ( & & & & & & & & & & 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ;g" g" g" g" g"	 g" g" g" g" g"rF   