
    Ng9                     f    d Z ddlmZmZmZmZ ddlmZmZ ddl	m
Z
mZmZmZ  G d de
          ZdS )z&Util that calls Google Finance Search.    )AnyDictOptionalcast)convert_to_secret_strget_from_dict_or_env)	BaseModel
ConfigDict	SecretStr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 )GoogleFinanceAPIWrappera`  Wrapper for SerpApi's Google Finance API

    You can create SerpApi.com key by signing up at: https://serpapi.com/users/sign_up.
    The wrapper uses the SerpApi.com python package:
    https://serpapi.com/integrations/python
    To use, you should have the environment variable ``SERPAPI_API_KEY``
    set with your API key, or pass `serp_api_key` as a named parameter
    to the constructor.
    Example:
        .. code-block:: python
        from langchain_community.utilities import GoogleFinanceAPIWrapper
        google_Finance = GoogleFinanceAPIWrapper()
        google_Finance.run('langchain')
    Nserp_search_engineserp_api_keyforbid)extrabefore)modevaluesreturnc                     t          t          |dd                    |d<   	 ddlm} n# t          $ r t	          d          w xY w|}||d<   |S )z?Validate that api key and python package exists in environment.r   SERPAPI_API_KEYr   )SerpApiClientzigoogle-search-results is not installed. Please install it with `pip install google-search-results>=2.4.2`r   )r   r   serpapir   ImportError)clsr   r   r   s       h/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/google_finance.pyvalidate_environmentz,GoogleFinanceAPIWrapper.validate_environment    s     "7 9JKK"
 "
~	------- 	 	 	  	 +'9#$s	   * Aqueryc                    t          t          | j                  }d|                                |d}i }|                     |          }|                                }|sd|z   S |                    di           }d|z   dz   }d|v rc|                    dg           d         }|d	         }	|d
         }
|d         }|d         }|d         }|d|	 dd|
 dz   d| dz   d| dz   z  }n|dz  }|D ]i}|dk    s|dk    s|dk    rU||z  }|dz  }|t          ||         d         d
                   z  }|dz  }|||         d         d         d         z  }|dz  }j|S )z-Run query through Google Finance with Serpapigoogle_finance)engineapi_keyqz"Nothing was found from the query: marketsz
Query: 
futures_chainr   stockpriceprice_movement
percentagemovementzstock: zprice: zpercentage: z
movement: zNo summary information
usasiaeuropez
: price = z, movement = )r   r   r   get_secret_valuer   get_dictgetstr)selfr   serpapi_api_keyparamstotal_resultsclientr%   resr'   r(   r)   tempr+   r,   keys                  r   runzGoogleFinanceAPIWrapper.run6   s   y$*;<<&&7799
 
 ((00)) 	@7%??##Ir22E!D(m++)--orBB1EM!'*E!'*E !12Dl+JJ'H#%###%E%%%&////0 ,x+++,CC --C 	 	CtC8OOs
|#s73<?73444&ws|A'78DDt
    )__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r
   model_configr   classmethodr   r   r3   r<    r=   r   r   r   	   s           #"""(,L(9%,,,:  L _(###$ 3    [ $#(- - - - - - - -r=   r   N)rA   typingr   r   r   r   langchain_core.utilsr   r   pydanticr	   r
   r   r   r   rE   r=   r   <module>rI      s    , , , , , , , , , , , , , , L L L L L L L L F F F F F F F F F F F FZ Z Z Z Zi Z Z Z Z Zr=   