Ë
    µŒj�  ã                   ó~   — d Z ddlZddlmZmZmZmZmZ ddl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y)z Util that calls Merriam-Webster.é    N)ÚAnyÚDictÚIteratorÚListÚOptional)Úquote©Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validatorz?https://www.dictionaryapi.com/api/v3/references/collegiate/jsoniˆ  c                   óÒ   — e Zd ZU dZdZe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j"                  d	efd„Zdedee   d	efd„Zded	ee   fd„Zy)ÚMerriamWebsterAPIWrapperaR  Wrapper for Merriam-Webster.

    Docs for using:

    1. Go to https://www.dictionaryapi.com/register/index and register an
       developer account with a key for the Collegiate Dictionary
    2. Get your API Key from https://www.dictionaryapi.com/account/my-keys
    3. Save your API Key into MERRIAM_WEBSTER_API_KEY env variable

    NÚmerriam_webster_api_keyÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ó*   — t        |dd«      }||d<   |S )z,Validate that api key exists in environment.r   ÚMERRIAM_WEBSTER_API_KEYr	   )Úclsr   r   s      úw/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/merriam_webster.pyÚvalidate_environmentz-MerriamWebsterAPIWrapper.validate_environment#   s+   € ô #7ØÐ-Ð/Hó#
Ðð -DˆÐ(Ñ)àˆó    Úqueryc                 óØ   — t        |«      }t        › d|› d| j                  › �}t        j                  |t
        ¬«      }|j                  dk7  r|j                  S | j                  ||«      S )zDRun query through Merriam-Webster API and return a formatted result.Ú/z?key=)ÚtimeoutéÈ   )	r   ÚMERRIAM_WEBSTER_API_URLr   ÚrequestsÚgetÚMERRIAM_WEBSTER_TIMEOUTÚstatus_codeÚtextÚ_format_response)Úselfr   Úquoted_queryÚrequest_urlÚresponses        r   ÚrunzMerriamWebsterAPIWrapper.run.   so   € ä˜U“|ˆô 'Ð' q¨¨Ø�D×0Ñ0Ð1ð3ð 	ô
 —<‘< Ô5LÔMˆà×Ñ 3Ò&Ø—=‘=Ð à×$Ñ$ U¨HÓ5Ð5r   r,   c                 óz  — t        j                  |j                  «      }|sd|› d�S t        |d   t        «      rid|› d�}t        |«      dkD  rGt        t        |«      «      D �cg c]  }|dz   › d||   › �‘Œ }}|dz  }|dj                  |«      z  }|S |d	|d   › d
�z  }|S | j                  ||«      }|S c c}w )Nz3No Merriam-Webster definition was found for query 'z'.r   z'.
é   ú. z7You can try one of the following alternative queries:

Ú
zDid you mean 'z'?)	ÚjsonÚloadsÚcontentÚ
isinstanceÚstrÚlenÚrangeÚjoinÚ_format_definitions)r)   r   r,   r4   ÚresultÚiÚalternativess          r   r(   z)MerriamWebsterAPIWrapper._format_response>   sç   € Ü—*‘*˜X×-Ñ-Ó.ˆáØHÈÈÈrÐRÐRä�g˜a‘j¤#Ô&ØJÈ5È'ÐQUÐVˆFÜ�7‹|˜aÒÜBGÌÈGËÔBUÓVÑBU¸Q 1 q¡5 '¨¨G°A©J¨<Ò 8ÐBU�ÐVØÐUÑU�Ø˜$Ÿ)™) LÓ1Ñ1�ð ˆð	 ˜N¨7°1©:¨,°bÐ9Ñ9�ð ˆð ×-Ñ-¨e°WÓ=ˆFàˆùò  Ws   Á%B8Údefinitionsc                 óÔ   — g }|D ]"  }|j                  | j                  |«      «       Œ$ t        |«      dk(  rd|› d|d   › �S d|› d�}t        |d«      D ]  \  }}||› d|› d�z  }Œ |S )	Nr/   zDefinition of 'z':
r   zDefinitions of 'z':

r0   r1   )ÚextendÚ_format_definitionr7   Ú	enumerate)r)   r   r>   Úformatted_definitionsÚ
definitionr;   r<   Úformatted_definitions           r   r:   z,MerriamWebsterAPIWrapper._format_definitionsQ   sœ   € Ø+-ÐÛ%ˆJØ!×(Ñ(¨×)@Ñ)@ÀÓ)LÕMð &ô Ð$Ó%¨Ò*Ø$ U G¨4Ð0EÀaÑ0HÐ/IÐJÐJà# E 7¨&Ð1ˆÜ'0Ð1FÈÖ'JÑ#ˆAÐ#Ø˜˜˜2Ð2Ð3°2Ð6Ñ6‰Fð (Kð ˆr   rD   c              #   óÔ   K  — d|v r|d   d   j                  dd«      }n|d   d   j                  d«      d   }d	|v r|d	   }d
|v r|d
   D ]  }|› d› d|› �–— Œ y |› d› �–— y ­w)NÚhwiÚhwÚ*Ú-ÚmetaÚidÚ:r   ÚflÚshortdefz, z: )ÚreplaceÚsplit)r)   rD   ÚheadwordÚfunctional_labelÚ	short_defs        r   rA   z+MerriamWebsterAPIWrapper._format_definition_   s¡   è ø€ Ø�JÑØ! %Ñ(¨Ñ.×6Ñ6°s¸CÓ@‰Hà! &Ñ)¨$Ñ/×5Ñ5°cÓ:¸1Ñ=ˆHà�:ÑØ)¨$Ñ/Ðà˜Ñ#Ø'¨
Ô3�	Ø!˜
 "Ð%5Ð$6°b¸¸ÐDÓDñ 4ð �J˜bÐ!1Ð 2Ð3Ó3ùs   ‚A&A()Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r6   Ú__annotations__r   Úmodel_configr   Úclassmethodr   r   r   r-   r#   ÚResponser(   r   r:   r   rA   © r   r   r   r      s¼   … ñ	ð .2Ð˜X c™]Ó1áØô€Lñ ˜(Ô#Øð¨$ð °3ò ó ó $ðð6˜ð 6 ó 6ð  cð °X×5FÑ5Fð È3ó ð&¨ð ¸4À¹:ð È#ó ð4¨Tð 4°h¸s±mô 4r   r   )rX   r2   Útypingr   r   r   r   r   Úurllib.parser   r#   Úlangchain_core.utilsr
   Úpydanticr   r   r   r"   r%   r   r]   r   r   Ú<module>rb      sA   ðÙ &ã ß 6Õ 6Ý ã Ý 5ß ;Ñ ;ð Fð ð Ð ô[4˜yõ [4r   