§
    æ˜ºh3  ã                   óV   — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	  G d„ de¦  «        Z
dS )z&Util that calls Google Scholar Search.é    )ÚDictÚOptional)Ú	BaseModelÚExtraÚroot_validator)Úget_from_dict_or_envc                   ó²   — e Zd ZU dZdZeed<   dZeed<   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 )ÚGoogleScholarAPIWrapperaÖ  Wrapper for Google Scholar API

    You can create serpapi key by signing up at: https://serpapi.com/users/sign_up.

    The wrapper uses the serpapi python package:
    https://serpapi.com/integrations/python#search-google-scholar

    To use, you should have the environment variable ``SERP_API_KEY``
    set with your API key, or pass `serp_api_key` as a named parameter
    to the constructor.

    Attributes:
        top_k_results: number of results to return from google-scholar query search.
            By default it returns top 10 results.
        hl: attribute defines the language to use for the Google Scholar search.
            It's a two-letter language code.
            (e.g., en for English, es for Spanish, or fr for French). Head to the
            Google languages page for a full list of supported Google languages:
            https://serpapi.com/google-languages

        lr: attribute defines one or multiple languages to limit the search to.
            It uses lang_{two-letter language code} to specify languages
            and | as a delimiter. (e.g., lang_fr|lang_de will only search French
            and German pages). Head to the Google lr languages for a full
            list of supported languages: https://serpapi.com/google-lr-languages

     Example:
        .. code-block:: python

        from langchain_community.utilities import GoogleScholarAPIWrapper
        google_scholar = GoogleScholarAPIWrapper()
        google_scholar.run('langchain')
    é
   Útop_k_resultsÚenÚhlÚlang_enÚlrNÚserp_api_keyc                   ó    — e Zd ZdZej        ZdS )úGoogleScholarAPIWrapper.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextra© ó    út/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/utilities/google_scholar.pyÚConfigr   0   s   € € € € € Ø5Ð5à”ˆˆˆr   r   ÚvaluesÚreturnc                 ó”   — 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   ÚSERP_API_KEYr   )ÚGoogleScholarSearchzigoogle-search-results is not installed. Please install it with `pip install google-search-results>=2.4.2`Úgoogle_scholar_engine)r   Úserpapir"   ÚImportErrorr!   )Úclsr   r   r"   s       r   Úvalidate_environmentz,GoogleScholarAPIWrapper.validate_environment5   s†   € õ ,¨F°NÀNÑSÔSˆØ!-ˆˆ~Ñð	Ø3Ð3Ð3Ð3Ð3Ð3Ð3øåð 	ð 	ð 	Ýðñô ð ð	øøøð ,8ÐÔ(Ø*=ˆÐ&Ñ'àˆs   ˜ Ÿ9Úqueryc           	      ó¶  — g }d}|t          | j        dz
  d¦  «        k     r—|                      ||| j        t	          | j        d¦  «        | j        dœ¦  «                             ¦   «                              dg ¦  «        }|                     |¦  «         |sn!|dz  }|t          | j        dz
  d¦  «        k     °—| j        dz  dk    rp|dk    rj|rh|                      ||| j        dz  | j        | j        dœ¦  «                             ¦   «                              dg ¦  «        }|                     |¦  «         |sdS d„ |D ¦   «         }d	 	                    |¦  «        S )
z6Run query through GoogleSearchScholar and parse resultr   é   é   )ÚqÚstartr   Únumr   Úorganic_results)r,   r-   r.   r   r   z'No good Google Scholar Result was foundc                 ó¤  — g | ]Í}d |                      dd¦  «        › dd                     d„ |                      di ¦  «                              dg ¦  «        D ¦   «         ¦  «        › d|                      di ¦  «                              d	d¦  «        › d
|                      di ¦  «                              di ¦  «                              dd¦  «        › �‘ŒÎS )zTitle: ÚtitleÚ z

Authors: ú,c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )Úname)Úget)Ú.0Úauthors     r   ú
<listcomp>z:GoogleScholarAPIWrapper.run.<locals>.<listcomp>.<listcomp>|   s$   € Ð!wÐ!wÐ!w¸ &§*¢*¨VÑ"4Ô"4Ð!wÐ!wÐ!wr   Úpublication_infoÚauthorsz

Summary: Úsummaryz
Total-Citations: Úinline_linksÚcited_byÚtotal)r6   Újoin)r7   Úresults     r   r9   z/GoogleScholarAPIWrapper.run.<locals>.<listcomp>z   s  € ð 
ð 
ð 
ð
 ð	c�f—j’j ¨Ñ,Ô,ð cð cØŸšÐ!wÐ!wÀ6Ç:Â:ÐN`ÐacÑCdÔCd×ChÒChÐirÐsuÑCvÔCvÐ!wÑ!wÔ!wÑxÔxðcð càŸ
š
Ð#5°bÑ9Ô9×=Ò=¸iÈÑKÔKðcð cð !'§
¢
¨>¸"Ñ =Ô =× AÒ AÀ*ÈRÑ PÔ P× TÒ TÐU\Ð]_Ñ `Ô `ðcð cð
ð 
ð 
r   z

)
Úmaxr   r#   r   Úminr   Úget_dictr6   Úextendr@   )Úselfr(   Útotal_resultsÚpageÚresultsÚdocss         r   ÚrunzGoogleScholarAPIWrapper.runI   s«  € àˆØˆØ•S˜$Ô,¨rÑ1°AÑ6Ô6Ò6Ð6ð ×*Ò*à"Ø!%Ø"œgÝ"Ø Ô.°ñ ô  ð #œgðð ñ
ô 
÷ ’‘”ß’Ð&¨Ñ+Ô+ð ð × Ò  Ñ)Ô)Ð)Øð àØ�B‰JˆDð1 •S˜$Ô,¨rÑ1°AÑ6Ô6Ò6Ð6ð4 Ô Ñ# qÒ(Ð(¨T°BªY¨Y¸=¨Yð ×*Ò*à"Ø!%Ø#Ô1°BÑ6Ø"œgØ"œgðð ñô ÷ ’‘”ß’Ð&¨Ñ+Ô+ð ð × Ò  Ñ)Ô)Ð)Øð 	=Ø<Ð<ð
ð 
ð
 (ð
ñ 
ô 
ˆð �{Š{˜4Ñ Ô Ð r   )r   r   r   r   r   ÚintÚ__annotations__r   Ústrr   r   r   r   r   r   r'   rK   r   r   r   r
   r
      så   € € € € € € ð ð  ðD €M�3ÐÐÑØ€Bˆ€N€N�NØ€BˆÐÐÑØ"&€L�(˜3”-Ð&Ð&Ñ&ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð&8!˜ð 8! ð 8!ð 8!ð 8!ð 8!ð 8!ð 8!r   r
   N)r   Útypingr   r   Úlangchain_core.pydantic_v1r   r   r   Úlangchain_core.utilsr   r
   r   r   r   ú<module>rR      s‘   ðØ ,Ð ,Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðy!ð y!ð y!ð y!ð y!˜iñ y!ô y!ð y!ð y!ð y!r   