
    dh:                     ^    S r SSKJrJrJrJr  SSKJrJr  SSK	J
r
JrJrJr   " S S\
5      rg)z&Util that calls Google Scholar Search.    )AnyDictOptionalcast)convert_to_secret_strget_from_dict_or_env)	BaseModel
ConfigDict	SecretStrmodel_validatorc                       \ rS rSr% SrSr\\S'   Sr\	\
   \S'   \" SS9r\" SS	9\S
\S\4S j5       5       rS\S\4S jrSrg)GoogleTrendsAPIWrapper	   a1  Wrapper for SerpApi's Google Scholar 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 GoogleTrendsAPIWrapper
    google_trends = GoogleTrendsAPIWrapper()
    google_trends.run('langchain')
Nserp_search_engineserp_api_keyforbid)extrabefore)modevaluesreturnc                     [        [        USS5      5      US'    SSKJn  UnX1S'   U$ ! [         a    [	        S5      ef = f)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       c/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/google_trends.pyvalidate_environment+GoogleTrendsAPIWrapper.validate_environment$   sa     "7 9JK"
~	- +'9#$  	 	s   ) ?queryc                    [        [        U R                  5      nSUR                  5       US.n/ nU R	                  U5      nUR                  5       nSU;   a  US   S   OSnU(       d  gUS   S   R                  5       nUS	   S   R                  5       nU V	s/ sH%  oR                  S
5      S   R                  S5      PM'     n
n	[        U
5      n[        U
5      n[        U
5      [        U
5      -  nU
S	   U
S   -
  U
S   S:w  a  U
S   OS-  U
S   S:w  a  SOS-  nSUR                  5       SUS.n0 nU R	                  U5      nUR                  5       R                  S0 5      n/ n/ nUR                  S/ 5       V	s/ sH  oR                  S5      PM     nn	UR                  S/ 5       V	s/ sH  oR                  S5      PM     nn	SU SUS    SUS    SUS	    SUS    SUS    SUS	    SU SU SU S[        U5      S-    SSR                  U
 Vs/ sH  n[        U5      PM     sn5       S SR                  U5       S!SR                  U5       3/nS"R                  U5      $ s  sn	f s  sn	f s  sn	f s  snf )#z,Run query through Google Trends with Serpapigoogle_trends)engineapi_keyqinterest_over_timetimeline_dataNzNo good Trend Result was foundr   dater   extracted_value   d   RELATED_QUERIES)r$   r%   	data_typer&   related_queriesrisingr!   topzQuery: z
Date From:  z, z

Date To:    z
Min Value: z
Max Value: z
Average Value: z
Percent Change: %z
Trend values: z
Rising Related Queries: z
Top Related Queries: z

)r   r   r   get_secret_valuer   get_dictsplitgetminmaxsumlenstrjoin)selfr!   serpapi_api_keyparamstotal_resultsclientclient_dict
start_dateend_dateresultsr   	min_value	max_value	avg_valuepercentage_changetotal_results2r1   r2   xdocs                       r   runGoogleTrendsAPIWrapper.run:   s   y$*;*;<%&779
  ((0oo' ${2 ,-o> 	 3"1%f-335
 $V,224KX
KXKK!!$(():;= 	 
 K	K	K#f+-	BZ&)#"1INvay3Qi1ns!- 	 &&779*	
 ((0*../@"E6D6H6HSU6VW6V7++g&6VW3A3E3EeR3PQ3P{{7#3PQ eW $Q-*Q-:b>:J K }Ahqk]!HRL> B# %# %'[ )"#45;< =!YY'?1A'?@A B''+yy'8&9 :$$(IIcN#3	5
 {{3S
2 XQ (@s   +I*>I/-I4I96 )__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r
   model_configr   classmethodr   r   r>   rP   __static_attributes__rR       r   r   r   	   su    & #"(,L(9%,L (#$ 3   $(@  @  @ r\   r   N)rW   typingr   r   r   r   langchain_core.utilsr   r   pydanticr	   r
   r   r   r   rR   r\   r   <module>r`      s%    , , , L F Fq Y q r\   