U
    h                     @   sH   d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 G dd deZ
dS )zUtil that calls WolframAlpha.    )AnyDictOptional)	BaseModelroot_validator)get_from_dict_or_envc                   @   sb   e Zd ZU dZeed< dZee ed< G dd dZ	e
dd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

    wolfram_clientNwolfram_alpha_appidc                   @   s   e Zd ZdZdS )zWolframAlphaAPIWrapper.ConfigZforbidN)__name__
__module____qualname__extra r   r   O/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/utilities/wolfram_alpha.pyConfig   s   r   T)pre)valuesreturnc                 C   sT   t |dd}||d< zddl}W n tk
r<   tdY nX ||}||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   clientr   r   r   validate_environment   s      

z+WolframAlphaAPIWrapper.validate_environment)queryr   c                 C   sh   | j |}zt|jj}t|jj}W n tk
r>   Y dS X |dksP|dkrTd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   run0   s    zWolframAlphaAPIWrapper.run)r   r   r   __doc__r   __annotations__r
   r   strr   r   r   r   r"   r   r   r   r   r   	   s   
r   N)r#   typingr   r   r   Zlangchain_core.pydantic_v1r   r   Zlangchain_core.utilsr   r   r   r   r   r   <module>   s   