
    dh                    n    S r SSKJr  SSKJrJr  SSKJrJrJr  SSK	J
r
  SSKJrJrJr   " S S\5      rg	)
zUtil that calls AskNews api.    )annotations)datetime	timedelta)AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                      \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'    Sr	S\S	'    \
" S
S9r\" SS9\SS j5       5       r S       SS jjr S       SS jjrSrg)AskNewsAPIWrapper   zWrapper for AskNews API.Nr   asknews_syncasknews_asynczOptional[str]asknews_client_idasknews_client_secretforbid)extrabefore)modec                    [        USS5      n[        USS5      n SSKnUR                  UUS/S	9nUR	                  UUS/S	9nXQS
'   XaS'   X!S'   X1S'   U$ ! [         a    [        S5      ef = f)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)clsvaluesr   r   r   an_syncan_asyncs          ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/asknews.pyvalidate_environment&AskNewsAPIWrapper.validate_environment   s    
 1')<
 !5+-D!
	 (('/8 ) 

 ..'/8 / 
 ")~"*&7"#*?&'-  	@ 	s   A A,c           
     V   US:  ag  SnSn[        [        R                  " 5       [        US9-
  R	                  5       5      n[        [        R                  " 5       R	                  5       5      nOSnSnSnSnU R
                  R                  R                  UUUUUUSS	9nUR                  $ )
z)Search news in AskNews API synchronously.0   kwThoursFnlNstringquery
n_articlesmethod
historicalstart_timestampend_timestampreturn_type)	intr   nowr   	timestampr   r   search_news	as_string	selfr2   max_results
hours_backr4   r5   startstopresponses	            r'   r<   AskNewsAPIWrapper.search_newsA   s     ?FJ)**EEPPRSEx||~//12DJFED$$))55"!!  6 
 !!!    c           
     r  #    US:  ag  SnSn[        [        R                  " 5       [        US9-
  R	                  5       5      n[        [        R                  " 5       R	                  5       5      nOSnSnSnSnU R
                  R                  R                  UUUUUUSS	9I Sh  vN nUR                  $  N7f)
z*Search news in AskNews API asynchronously.r+   r,   Tr-   Fr/   Nr0   r1   )	r9   r   r:   r   r;   r   r   r<   r=   r>   s	            r'   asearch_newsAskNewsAPIWrapper.asearch_news[   s      ?FJ)**EEPPRSEx||~//12DJFED++00<<"!!  = 
 
 !!!
s   B"B7$B5%B7 )r$   r   returnr   )
   r   )r2   strr@   r9   rA   r9   rK   rM   )__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r   model_configr   classmethodr(   r<   rH   __static_attributes__rJ   rF   r'   r   r      s    "L#M3'+}+(+/=/,L (##  $#L DE""'*"=@"	"6 DE""'*"=@"	" "rF   r   N)rR   
__future__r   r   r   typingr   r   r   langchain_core.utilsr	   pydanticr
   r   r   r   rJ   rF   r'   <module>r[      s+    " " ( & & 5 ; ;g"	 g"rF   