
    Ng                     Z    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dS )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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_appidforbid)extrabefore)modevaluesreturnc                     t          |dd          }||d<   	 ddl}n# t          $ r t          d          w xY w|                    |          }||d<   |S )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        g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/wolfram_alpha.pyvalidate_environmentz+WolframAlphaAPIWrapper.validate_environment   s     3)+@
 
 )<$%	 	 	 	D  	
 $$%899#) s    7queryc                     | j                             |          }	 t          |j                  j        }t          |j                  j        }n# t          $ r Y dS w xY w||dk    rdS d| 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   nextpodstextresultsStopIteration)selfr   res
assumptionanswers        r   runzWolframAlphaAPIWrapper.run2   s    !''..	<ch,J#+&&+FF 	< 	< 	<;;;	< >Vr\\;;A*AAAAAs   2A 
AA)__name__
__module____qualname____doc__r   r   __annotations__r   r   strr   model_configr	   classmethodr   r   r)        r   r   r   	   s         	 	 NC)-#---:  L _(###$ 3    [ $#(B B B B B B B Br3   r   N)r-   typingr   r   r   langchain_core.utilsr   pydanticr   r   r	   r   r2   r3   r   <module>r7      s    # # & & & & & & & & & & 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ;7B 7B 7B 7B 7BY 7B 7B 7B 7B 7Br3   