
    
i0                     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 Google Scholar Search.    )AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                       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	<   dZ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 )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_keygoogle_scholar_engineforbid)extrabefore)mode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`r   )r   serpapir   ImportErrorr   )clsr   r   r   s       C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_community/utilities/google_scholar.pyvalidate_environmentz,GoogleScholarAPIWrapper.validate_environment6   s     ,FNN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$    !y!y!y&**V"4"4!y!y!y    publication_infoauthorsz

Summary: summaryz
Total-Citations: inline_linkscited_bytotal)r0   join)r1   results     r    r3   z/GoogleScholarAPIWrapper.run.<locals>.<listcomp>|   s    
 
 

 	ffjj"-- f f!y!y6::N`bdCeCeCiCijsuwCxCx!y!y!yzzf f

#5r::>>y"MMf f !'

>2 > > B B:r R R V VW^`b c cf f
 
 
r4   z

)
maxr   r   r   minr   get_dictr0   extendr;   )selfr"   total_resultspageresultsdocss         r    runzGoogleScholarAPIWrapper.runK   s   S$,r1A6666 **"!%"g" .    #g 
 
 &++    ))) BJD1 S$,r1A66664 #q((TBYY=Y **"!%#1B6"g"g   &++    ))) 	=<<
 

 (
 
 
 {{4   r4   )__name__
__module____qualname____doc__r   int__annotations__r   strr   r   r   r   r   r   model_configr	   classmethodr   r!   rF    r4   r    r   r   	   s            D M3BNNNB"&L(3-&&&!%3%%%:  L _(###$ 3    [ $#&8! 8! 8! 8! 8! 8! 8! 8!r4   r   N)rJ   typingr   r   r   langchain_core.utilsr   pydanticr   r   r	   r   rP   r4   r    <module>rT      s    , , & & & & & & & & & & 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ;z! z! z! z! z!i z! z! z! z! z!r4   