§
    æ˜ºhÁ  ã                   óf   — d Z ddlmZmZmZmZ ddlmZmZm	Z	m
Z
 ddlmZmZ  G d„ de¦  «        ZdS )z&Util that calls Google Scholar Search.é    )ÚAnyÚDictÚOptionalÚcast)Ú	BaseModelÚExtraÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_envc                   ó’   — e Zd ZU dZeed<   dZee         ed<    G d„ d¦  «        Z	 e
¦   «         dedefd	„¦   «         Zd
edefd„ZdS )ÚGoogleTrendsAPIWrapperaa  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')
    Úserp_search_engineNÚserp_api_keyc                   ó    — e Zd ZdZej        ZdS )úGoogleTrendsAPIWrapper.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextra© ó    ús/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/utilities/google_trends.pyÚConfigr      s   € € € € € Ø5Ð5à”ˆˆˆr   r   Ú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       r   Úvalidate_environmentz+GoogleTrendsAPIWrapper.validate_environment$   sŒ   € õ "7Ý  ¨Ð9JÑKÔKñ"
ô "
ˆˆ~Ñð	Ø-Ð-Ð-Ð-Ð-Ð-Ð-øåð 	ð 	ð 	Ýðñô ð ð	øøøð +ÐØ'9ˆÐ#Ñ$àˆs	   £* ªAÚqueryc                 ó
  — t          t          | j        ¦  «        }d|                     ¦   «         |dœ}g }|                      |¦  «        }|                     ¦   «         d         d         }|sdS |d         d                              ¦   «         }|d         d                              ¦   «         }d	„ |D ¦   «         }t          |¦  «        }	t          |¦  «        }
t          |¦  «        t          |¦  «        z  }|d         |d         z
  |d         dk    r|d         nd
z  |d         dk    rdnd
z  }d|                     ¦   «         d|dœ}i }|                      |¦  «        }|                     ¦   «                              di ¦  «        }g }g }d„ |                     dg ¦  «        D ¦   «         }d„ |                     dg ¦  «        D ¦   «         }d|› d|d         › d|d
         › d|d         › d|d         › d|d         › d|d         › d|	› d|
› d|› dt          |¦  «        dz   › dd                     d„ |D ¦   «         ¦  «        › d d                     |¦  «        › d!d                     |¦  «        › �g}d"                     |¦  «        S )#z,Run query through Google Trends with SerpapiÚgoogle_trends)ÚengineÚapi_keyÚqÚinterest_over_timeÚtimeline_datazNo good Trend Result was foundr   Údateéÿÿÿÿc                 ój   — g | ]0}|                      d ¦  «        d                               d¦  «        ‘Œ1S )r   r   Úextracted_value©Úget©Ú.0Úresultss     r   ú
<listcomp>z.GoogleTrendsAPIWrapper.run.<locals>.<listcomp>K   sE   € ð 
ð 
ð 
Ø@GˆG�KŠK˜Ñ!Ô! !Ô$×(Ò(Ð):Ñ;Ô;ð
ð 
ð 
r   é   éd   ÚRELATED_QUERIES)r)   r*   Ú	data_typer+   Úrelated_queriesc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ©r&   r2   r4   s     r   r7   z.GoogleTrendsAPIWrapper.run.<locals>.<listcomp>d   s$   € ÐWÐWÐW¨7�'—+’+˜gÑ&Ô&ÐWÐWÐWr   Úrisingc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS r>   r2   r4   s     r   r7   z.GoogleTrendsAPIWrapper.run.<locals>.<listcomp>e   s$   € ÐQÐQÐQ¨ˆw�{Š{˜7Ñ#Ô#ÐQÐQÐQr   ÚtopzQuery: z
Date From: ú z, z

Date To: é   z
Min Value: z
Max Value: z
Average Value: z
Percent Change: ú%z
Trend values: c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Ústr)r5   Úxs     r   r7   z.GoogleTrendsAPIWrapper.run.<locals>.<listcomp>o   s   € Ð'?Ð'?Ð'?°1­¨A©¬Ð'?Ð'?Ð'?r   z
Rising Related Queries: z
Top Related Queries: z

)r   r	   r   Úget_secret_valuer   Úget_dictÚsplitÚminÚmaxÚsumÚlenr3   rF   Újoin)Úselfr&   Úserpapi_api_keyÚparamsÚtotal_resultsÚclientÚ
start_dateÚend_dater   Ú	min_valueÚ	max_valueÚ	avg_valueÚpercentage_changeÚtotal_results2r?   rA   Údocs                    r   ÚrunzGoogleTrendsAPIWrapper.run9   s-  € å�y¨$Ô*;Ñ<Ô<ˆà%Ø&×7Ò7Ñ9Ô9Øð
ð 
ˆð ˆØ×(Ò(¨Ñ0Ô0ˆØŸšÑ)Ô)Ð*>Ô?ÀÔPˆàð 	4Ø3Ð3à" 1Ô% fÔ-×3Ò3Ñ5Ô5ˆ
Ø  Ô$ VÔ,×2Ò2Ñ4Ô4ˆð
ð 
ØKXð
ñ 
ô 
ˆõ ˜‘K”Kˆ	Ý˜‘K”Kˆ	Ý˜‘K”K¥# f¡+¤+Ñ-ˆ	à�BŒZ˜& œ)Ñ#Ø" 1œI¨šN˜Nˆv�aŒyˆy°ñ3à˜Q”i 1’n�nˆsˆs¨!ñ-ð 	ð &Ø&×7Ò7Ñ9Ô9Ø*Øð	
ð 
ˆð ˆØ×(Ò(¨Ñ0Ô0ˆØŸšÑ*Ô*×.Ò.Ð/@À"ÑEÔEˆØˆØˆàWÐW°n×6HÒ6HÈÐSUÑ6VÔ6VÐWÑWÔWˆØQÐQ°>×3EÒ3EÀeÈRÑ3PÔ3PÐQÑQÔQˆð	5�eð 	5ð 	5Ø$ Qœ-ð	5ð 	5Ø*4°Q¬-ð	5ð 	5Ø;EÀb¼>ð	5ð 	5à  œð	5ð 	5à&.¨q¤kð	5ð 	5à4<¸R´Lð	5ð 	5ð $ð	5ð 	5ð $ð		5ð 	5ð
 (ð	5ð 	5õ  #Ð#4Ñ5Ô5¸Ñ;ð	5ð 	5ð "ŸYšYÐ'?Ð'?¸Ð'?Ñ'?Ô'?Ñ@Ô@ð	5ð 	5ð (,§y¢y°Ñ'8Ô'8ð	5ð 	5ð %)§I¢I¨c¡N¤Nð	5ð 	5ð
ˆð �{Š{˜3ÑÔÐr   )r   r   r   r   r   Ú__annotations__r   r   r	   r   r
   r   r%   rF   r]   r   r   r   r   r      sÄ   € € € € € € ðð ð& ÐÐÑØ(,€L�(˜9Ô%Ð,Ð,Ñ,ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð(; ˜ð ;  ð ; ð ; ð ; ð ; ð ; ð ; r   r   N)r   Útypingr   r   r   r   Úlangchain_core.pydantic_v1r   r   r	   r
   Úlangchain_core.utilsr   r   r   r   r   r   ú<module>rb      s©   ðØ ,Ð ,Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðl ð l ð l ð l ð l ˜Yñ l ô l ð l ð l ð l r   