o
    ØÝ+iS  ã                   @  s¤   U d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	Z	e
ƒ Zded< G dd	„ d	e	jƒZG d
d„ de	jƒZeeddœddd„ƒZeeddœddd„ƒZdS )zßHelpers for creating Anthropic API clients.

This module allows for the caching of httpx clients to avoid creating new instances
for each instance of ChatAnthropic.

Logic is largely replicated from anthropic._base_client.
é    )ÚannotationsN)Ú	lru_cache)ÚAnyr   Ú
_NOT_GIVENc                   @  ó   e Zd ZdZddd„ZdS )Ú_SyncHttpxClientWrapperú%Borrowed from anthropic._base_client.ÚreturnÚNonec                 C  s.   | j rd S z|  ¡  W d S  ty   Y d S w ©N)Ú	is_closedÚcloseÚ	Exception©Úself© r   ú^/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/langchain_anthropic/_client_utils.pyÚ__del__   s   ÿz_SyncHttpxClientWrapper.__del__N©r	   r
   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      ó    r   c                   @  r   )Ú_AsyncHttpxClientWrapperr   r	   r
   c                 C  s8   | j rd S zt ¡  |  ¡ ¡ W d S  ty   Y d S w r   )r   ÚasyncioÚget_running_loopÚcreate_taskÚacloser   r   r   r   r   r   %   s   ÿz _AsyncHttpxClientWrapper.__del__Nr   r   r   r   r   r   r   "   r   r   )ÚtimeoutÚanthropic_proxyÚbase_urlú
str | Noner    r!   r	   c                 C  óF   d| p
t j d¡p
di}|tur||d< |d ur||d< tdi |¤ŽS ©Nr"   ÚANTHROPIC_BASE_URLzhttps://api.anthropic.comr    Úproxyr   )ÚosÚenvironÚgetr   r   ©r"   r    r!   Úkwargsr   r   r   Ú_get_default_httpx_client0   ó   
ÿýr-   c                 C  r$   r%   )r(   r)   r*   r   r   r+   r   r   r   Ú_get_default_async_httpx_clientC   r.   r/   )r"   r#   r    r   r!   r#   r	   r   )r"   r#   r    r   r!   r#   r	   r   )r   Ú
__future__r   r   r(   Ú	functoolsr   Útypingr   Ú	anthropicÚobjectr   Ú__annotations__ÚDefaultHttpxClientr   ÚDefaultAsyncHttpxClientr   r-   r/   r   r   r   r   Ú<module>   s$    üü