
    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 Dataherald.    )AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                       e Zd ZU dZdZeed<   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 )DataheraldAPIWrapperzWrapper for Dataherald.

    Docs for using:

    1. Go to dataherald and sign up
    2. Create an API key
    3. Save your API key into DATAHERALD_API_KEY env variable
    4. pip install dataherald

    Ndataherald_clientdb_connection_iddataherald_api_key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   DATAHERALD_API_KEYr   NzLdataherald is not installed. Please install it with `pip install dataherald`)api_keyr   )r   
dataheraldImportError
Dataherald)clsr   r   r   clients        d/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/dataherald.pyvalidate_environmentz)DataheraldAPIWrapper.validate_environment   s     2(*>
 
 (:#$	 	 	 	B  	 &&/A&BB&,"#s    7promptc                     ddl m}  ||| j                  }| j        j                            |          }	 |j        }|sdS d| S # t          $ r Y dS w xY w)z9Generate a sql query through Dataherald and parse result.r   )Prompt)textr   )r   z	No answerzAnswer: z#Dataherald wasn't able to answer it)-dataherald.types.sql_generation_create_paramsr!   r   r   sql_generationscreatesqlStopIteration)selfr   r!   
prompt_objresanswers         r   runzDataheraldAPIWrapper.run4   s    HHHHHHV$:OPPP
$4;;:;NN		9WF +"{*&*** 	9 	9 	9888	9s   	A
 A
 

AA)__name__
__module____qualname____doc__r   r   __annotations__strr   r   r   model_configr	   classmethodr   r   r,        r   r   r   	   s         	 	 "s!!!(,,,,:  L _(###$ 3    [ $#*9# 9# 9 9 9 9 9 9r6   r   N)r0   typingr   r   r   langchain_core.utilsr   pydanticr   r   r	   r   r5   r6   r   <module>r:      s    ! ! & & & & & & & & & & 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ;;9 ;9 ;9 ;9 ;99 ;9 ;9 ;9 ;9 ;9r6   