
    7|h                    n    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y	)
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y)AskNewsAPIWrapperzWrapper for AskNews API.Nr   asknews_syncasknews_asynczOptional[str]asknews_client_idasknews_client_secretforbid)extrabefore)modec                    t        |dd      }t        |dd      }	 ddl}|j                  ||dg	      }|j	                  ||dg	      }||d
<   ||d<   ||d<   ||d<   |S # t        $ r t        d      w xY w)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          d/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/asknews.pyvalidate_environmentz&AskNewsAPIWrapper.validate_environment   s    
 1')<
 !5+-D!
	 (('/8 ) 

 ..'/8 / 
 ")~"*&7"#*?&'-  	@ 	s   A   A5c           	     \   |dkD  rhd}d}t        t        j                         t        |      z
  j	                               }t        t        j                         j	                               }nd}d}d}d}| j
                  j                  j                  ||||||d	      }|j                  S )
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	selfr0   max_results
hours_backr2   r3   startstopresponses	            r&   r:   zAskNewsAPIWrapper.search_newsA   s     ?FJ)**EEPPRSEx||~//12DJFED$$))55"!!  6 
 !!!    c           	     x  K   |dkD  rhd}d}t        t        j                         t        |      z
  j	                               }t        t        j                         j	                               }nd}d}d}d}| j
                  j                  j                  ||||||d	       d{   }|j                  S 7 w)
z*Search news in AskNews API asynchronously.r)   r*   Tr+   Fr-   Nr.   r/   )	r7   r   r8   r   r9   r   r   r:   r;   r<   s	            r&   asearch_newszAskNewsAPIWrapper.asearch_news[   s      ?FJ)**EEPPRSEx||~//12DJFED++00<<"!!  = 
 
 !!!
s   B%B:'B8(B:)r#   r   returnr   )
   r   )r0   strr>   r7   r?   r7   rF   rH   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   model_configr   classmethodr'   r:   rE    rC   r&   r   r      s    "L#M3'+}+(+/=/,L (##  $#L DE""'*"=@"	"6 DE""'*"=@"	"rC   r   N)rL   
__future__r   r   r   typingr   r   r   langchain_core.utilsr	   pydanticr
   r   r   r   rP   rC   r&   <module>rU      s+    " " ( & & 5 ; ;g"	 g"rC   