o
    i                     @  sl   d dl mZ d dlmZmZ d dlmZ ddlmZm	Z	 ddl
mZ ddlmZ eG d	d
 d
ee ZdS )    )annotations)	dataclassreplace)Any   )
AgentDepsT
RunContext   )ToolsetTool)WrapperToolsetc                      sH   e Zd ZU dZded< edddZd fd
dZd fddZ  Z	S )PrefixedToolsetzA toolset that prefixes the names of the tools it contains.

    See [toolset docs](../toolsets.md#prefixing-tool-names) for more information.
    strprefixreturnc                 C  s   dS )Nz6Change the `prefix` attribute to avoid name conflicts. )selfr   r   c/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/toolsets/prefixed.pytool_name_conflict_hint   s   z'PrefixedToolset.tool_name_conflict_hintctxRunContext[AgentDepsT]"dict[str, ToolsetTool[AgentDepsT]]c                   s(    fddt  |I d H  D S )Nc              
     s>   i | ]\}}j  d |   r t|t|j ddqS )_name)toolsettool_def)r   r   r   ).0r   toolnew_namer   r   r   
<dictcomp>   s    z-PrefixedToolset.get_tools.<locals>.<dictcomp>)super	get_toolsitems)r   r   	__class__r   r   r"      s   zPrefixedToolset.get_toolsr   	tool_argsdict[str, Any]r   ToolsetTool[AgentDepsT]r   c                   sL   | | jd }t||d}t|t|j|dd}t ||||I d H S )Nr   )	tool_namer   )r   )removeprefixr   r   r   r!   	call_tool)r   r   r&   r   r   original_namer$   r   r   r+   #   s
   zPrefixedToolset.call_tool)r   r   )r   r   r   r   )
r   r   r&   r'   r   r   r   r(   r   r   )
__name__
__module____qualname____doc____annotations__propertyr   r"   r+   __classcell__r   r   r$   r   r      s   
 r   N)
__future__r   dataclassesr   r   typingr   _run_contextr   r   abstractr
   wrapperr   r   r   r   r   r   <module>   s    