a
    bg                     @   sL   d 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 WolframAlpha.    )AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                   @   sf   e Zd ZU dZdZeed< dZee	 ed< e
ddZeddeeed	d
dZe	e	dddZdS )WolframAlphaAPIWrapperzWrapper for Wolfram Alpha.

    Docs for using:

    1. Go to wolfram alpha and sign up for a developer account
    2. Create an app and get your APP ID
    3. Save your APP ID into WOLFRAM_ALPHA_APPID env variable
    4. pip install wolframalpha

    Nwolfram_clientwolfram_alpha_appidZforbid)extrabefore)mode)valuesreturnc                 C   sR   t |dd}||d< zddl}W n ty:   tdY n0 ||}||d< |S )z?Validate that api key and python package exists in environment.r   ZWOLFRAM_ALPHA_APPIDr   NzPwolframalpha is not installed. Please install it with `pip install wolframalpha`r
   )r   wolframalphaImportErrorZClient)clsr   r   r   client r   y/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/wolfram_alpha.pyvalidate_environment   s    

z+WolframAlphaAPIWrapper.validate_environment)queryr   c                 C   sf   | j |}zt|jj}t|jj}W n ty<   Y dS 0 |du sN|dkrRdS d| d| S dS )z0Run query through WolframAlpha and parse result.z&Wolfram Alpha wasn't able to answer itN z&No good Wolfram Alpha Result was foundzAssumption: z
 
Answer: )r
   r   nextZpodstextresultsStopIteration)selfr   resZ
assumptionZanswerr   r   r   run2   s    zWolframAlphaAPIWrapper.run)__name__
__module____qualname____doc__r
   r   __annotations__r   r   strr   Zmodel_configr   classmethodr   r   r    r   r   r   r   r	   	   s   
r	   N)r$   typingr   r   r   Zlangchain_core.utilsr   Zpydanticr   r   r   r	   r   r   r   r   <module>   s   