
    7|h                     R    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e      Zy)zUtil that calls WolframAlpha.    )AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                       e Zd ZU dZdZeed<   dZee	   ed<    e
d      Z ed      ed	ed
efd              Zde	d
e	fdZy)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_appidforbid)extrabefore)modevaluesreturnc                     t        |dd      }||d<   	 ddl}|j                  |      }||d<   |S # t        $ r t        d      w xY w)z?Validate that api key and python package exists in environment.r   WOLFRAM_ALPHA_APPIDr   NzPwolframalpha is not installed. Please install it with `pip install wolframalpha`r   )r   wolframalphaImportErrorClient)clsr   r   r   clients        j/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/wolfram_alpha.pyvalidate_environmentz+WolframAlphaAPIWrapper.validate_environment   st     3)+@
 )<$%	 $$%89#)   	D 	s	   0 Aqueryc                     | j                   j                  |      }	 t        |j                        j                  }t        |j
                        j                  }||dk(  ryd| d| S # t        $ r Y yw xY w)z0Run query through WolframAlpha and parse result.z&Wolfram Alpha wasn't able to answer it z&No good Wolfram Alpha Result was foundzAssumption: z
 
Answer: )r   r   nextpodstextresultsStopIteration)selfr   res
assumptionanswers        r   runzWolframAlphaAPIWrapper.run2   s{    !!''.	<chh,,J#++&++F >Vr\;!*[AA  	<;	<s   >A+ +	A76A7)__name__
__module____qualname____doc__r   r   __annotations__r   r   strr   model_configr	   classmethodr   r   r)        r   r   r   	   st    	 NC)-#-L (#$ 3   $(B B Br3   r   N)r-   typingr   r   r   langchain_core.utilsr   pydanticr   r   r	   r   r2   r3   r   <module>r7      s%    # & & 5 ; ;7BY 7Br3   