o
    i                     @  sx   d dl mZ d dlmZmZ ddlmZmZ ddlm	Z	 ddl
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   )
AgentDepsT
RunContext)	UserError)ToolsPrepareFunc   )ToolsetTool)WrapperToolsetc                      s,   e Zd ZU dZded< d
 fdd	Z  ZS )PreparedToolsetzA toolset that prepares the tools it contains using a prepare function that takes the agent context and the original tool definitions.

    See [toolset docs](../toolsets.md#preparing-tool-definitions) for more information.
    zToolsPrepareFunc[AgentDepsT]prepare_funcctxRunContext[AgentDepsT]return"dict[str, ToolsetTool[AgentDepsT]]c                   s|   t  |I d H  dd   D }dd | ||I d H p g D }t|    dkr3td fdd| D S )Nc                 S  s   g | ]}|j qS  tool_def).0toolr   r   c/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/toolsets/prepared.py
<listcomp>   s    z-PreparedToolset.get_tools.<locals>.<listcomp>c                 S  s   i | ]}|j |qS r   )name)r   r   r   r   r   
<dictcomp>   s    z-PreparedToolset.get_tools.<locals>.<dictcomp>r   znPrepare function cannot add or rename tools. Use `FunctionToolset.add_function()` or `RenamedToolset` instead.c                   s"   i | ]\}}|t  | |d qS )r   )r   )r   r   r   original_toolsr   r   r   !   s    )super	get_toolsvaluesr   lenkeysr   items)selfr   original_tool_defsprepared_tool_defs_by_name	__class__r   r   r      s   
zPreparedToolset.get_tools)r   r   r   r   )__name__
__module____qualname____doc____annotations__r   __classcell__r   r   r'   r   r      s   
 r   N)
__future__r   dataclassesr   r   _run_contextr   r   
exceptionsr   toolsr	   abstractr   wrapperr   r   r   r   r   r   <module>   s    