§
    šŠtjŽ  ã                   ój   — d Z ddlmZmZmZ ddlZddlmZ ddlm	Z	m
Z
mZ dZdZ G d„ d	e	¦  «        ZdS )
zUtil that calls Google Books.é    )ÚDictÚListÚOptionalN©Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validatoré   z+https://www.googleapis.com/books/v1/volumesc                   óÌ   — e Zd ZU dZdZee         ed<   e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eded
efd„Zded
efd„ZdS )ÚGoogleBooksAPIWrappera�  Wrapper around Google Books API.

    To use, you should have a Google Books API key available.
    This wrapper will use the Google Books API to conduct searches and
    fetch books based on a query passed in by the agents. By default,
    it will return the top-k results.

    The response for each book will contain the book title, author name, summary, and
    a source link.
    NÚgoogle_books_api_keyÚtop_k_resultsÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ó2   — t          |dd¦  «        }||d<   |S )z,Validate that api key exists in environment.r   ÚGOOGLE_BOOKS_API_KEYr   )Úclsr   r   s      úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/utilities/google_books.pyÚvalidate_environmentz*GoogleBooksAPIWrapper.validate_environment    s/   € õ  4ØÐ*Ð,Bñ 
ô  
Ðð *>ˆÐ%Ñ&àˆó    Úqueryc                 óf  — d|fd| j         fd| j        ff}t          j        t          |¬¦  «        }|                     ¦   «         }|j        dk    r9|j        }|                     di ¦  «                             dd¦  «        }d	|› d
|› �S |                      ||                     dg ¦  «        ¦  «        S )NÚqÚ
maxResultsÚkey)ÚparamséÈ   ÚerrorÚmessagezInternal failurez)Unable to retrieve books got status code ú: Úitems)r   r   ÚrequestsÚgetÚGOOGLE_BOOKS_API_URLÚjsonÚstatus_codeÚ_format)Úselfr   r!   Úresponser*   Úcoder#   s          r   ÚrunzGoogleBooksAPIWrapper.run+   sÂ   € ð �%ˆLØ˜4Ô-Ð.Ø�DÔ-Ð.ð
ˆõ ”<Õ 4¸VÐDÑDÔDˆØ�}Š}‰Œˆð Ô 3Ò&Ð&ØÔ'ˆDØ—H’H˜W bÑ)Ô)×-Ò-¨iÐ9KÑLÔLˆEØN¸tÐNÐNÀuÐNÐNÐNð �|Š|˜E 4§8¢8¨G°RÑ#8Ô#8Ñ9Ô9Ð9r   Úbooksc           	      óx  — |sd|› �S dt          |¦  «        › d|› d�}g }|                     |¦  «         d}|D ]m}|d         }|d         }|                      |d         ¦  «        }	|d	         }
|d
         }|› d|› d|	› d|
› d�}|d|› �z  }|                     |¦  «         |dz  }Œnd                     |¦  «        S )Nz.Sorry no books could be found for your query: z	Here are z" suggestions for books related to ú:é   Ú
volumeInfoÚtitleÚauthorsÚdescriptionÚinfoLinkz. "z" by r%   ú
zYou can read more at z

)ÚlenÚappendÚ_format_authorsÚjoin)r-   r   r1   ÚstartÚresultsÚiÚbookÚinfor6   r7   ÚsummaryÚsourceÚdescs                r   r,   zGoogleBooksAPIWrapper._format@   s  € Øð 	LØKÀEÐKÐKÐKàR�C ™JœJÐRÐRÈ%ÐRÐRÐRˆàˆØ�Š�uÑÔÐØˆàð 	ð 	ˆDØ˜Ô%ˆDØ˜”MˆEØ×*Ò*¨4°	¬?Ñ;Ô;ˆGØ˜=Ô)ˆGØ˜*Ô%ˆFàÐ>Ð>˜EÐ>Ð>¨Ð>Ð>°7Ð>Ð>Ð>ˆDØÐ4¨FÐ4Ð4Ñ4ˆDØ�NŠN˜4Ñ Ô Ð à�‰FˆAˆAà�{Š{˜7Ñ#Ô#Ð#r   r7   c                 ó¦   — t          |¦  «        dk    r|d         S d                     d                     |d d…         ¦  «        |d         ¦  «        S )Nr4   r   z	{} and {}z, éÿÿÿÿ)r;   Úformatr>   )r-   r7   s     r   r=   z%GoogleBooksAPIWrapper._format_authorsY   sK   € Ýˆw‰<Œ<˜1ÒÐØ˜1”:ÐØ×!Ò! $§)¢)¨G°C°R°C¬LÑ"9Ô"9¸7À2¼;ÑGÔGÐGr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚstrÚ__annotations__ÚGOOGLE_BOOKS_MAX_ITEM_SIZEr   Úintr	   Úmodel_configr
   Úclassmethodr   r   r0   r   r,   r=   © r   r   r   r      s  € € € € € € ð	ð 	ð +/Ð˜( 3œ-Ð.Ð.Ñ.Ø3€M�3Ð3Ð3Ñ3à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$ð °4ð ð ð ñ „[ñ $Ô#ðð:˜ð : ð :ð :ð :ð :ð*$˜Sð $¨ð $°#ð $ð $ð $ð $ð2H tð H°ð Hð Hð Hð Hð Hð Hr   r   )rM   Útypingr   r   r   r'   Úlangchain_core.utilsr   Úpydanticr   r	   r
   rP   r)   r   rT   r   r   ú<module>rX      s¶   ðØ #Ð #à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;àÐ ØDÐ ðOHð OHð OHð OHð OH˜Iñ OHô OHð OHð OHð OHr   