a
    bg                     @  sh   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 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                   @  s   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	d
Z
eddedddddZddddddddZddddddddZdS )AskNewsAPIWrapperzWrapper for AskNews API.Nr   asknews_syncasknews_asynczOptional[str]asknews_client_idasknews_client_secretZforbid)extrabefore)moder   )valuesreturnc                 C  s   t |dd}t |dd}zddl}W n ty>   tdY n0 |j||dgd	}|j||dgd	}||d
< ||d< ||d< ||d< |S )zGValidate that api credentials and python package exists in environment.r   ZASKNEWS_CLIENT_IDr   ZASKNEWS_CLIENT_SECRETr   NzOAskNews python package not found. Please install it with `pip install asknews`.news)Z	client_idZclient_secretZscopesr   r   )r   asknews_sdkImportErrorZ
AskNewsSDKZAsyncAskNewsSDK)clsr   r   r   r   Zan_syncZan_async r   s/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/asknews.pyvalidate_environment   s6    
z&AskNewsAPIWrapper.validate_environment
   r   strint)querymax_results
hours_backr   c           	   	   C  sn   |dkr<d}d}t t t|d  }t t  }nd}d}d}d}| jjj||||||dd	}|jS )
z)Search news in AskNews API synchronously.0   kwThoursFnlNstringr    Z
n_articlesmethod
historicalZstart_timestampZend_timestampreturn_type)	r   r   nowr   	timestampr   r   search_news	as_string	selfr    r!   r"   r*   r+   startstopresponser   r   r   r/   A   s&    	zAskNewsAPIWrapper.search_newsc           	   	     st   |dkr<d}d}t t t|d  }t t  }nd}d}d}d}| jjj||||||dd	I dH }|jS )
z*Search news in AskNews API asynchronously.r#   r$   Tr%   Fr'   Nr(   r)   )	r   r   r-   r   r.   r   r   r/   r0   r1   r   r   r   asearch_news[   s&    	zAskNewsAPIWrapper.asearch_news)r   r   )r   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r
   Zmodel_configr   classmethodr   r/   r6   r   r   r   r   r      s   
&  r   N)r:   
__future__r   r   r   typingr   r   r   Zlangchain_core.utilsr   Zpydanticr	   r
   r   r   r   r   r   r   <module>   s   