ó
    ±"³j(  ã                  óÂ   • S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	J
r
  SSKJr  SS	KJr  \ " S
 S\\   5      5       r\ " S S\\   5      5       r        SS jrg)é    )ÚannotationsN)Ú	dataclass)Ú
AgentDepsTÚ
RunContext)ÚToolDefinitionÚToolsPrepareFuncé   )Ú_utilsé   )ÚAbstractCapabilityc                  óB   • \ rS rSr% SrS\S'   \S	S j5       rS
S jrSr	g)ÚPrepareToolsé   aÄ  Capability that filters or modifies function tool definitions using a callable.

Wraps a [`ToolsPrepareFunc`][pydantic_ai.tools.ToolsPrepareFunc] as a capability.
Filters/modifies **function** tools only; for output tools use
[`PrepareOutputTools`][pydantic_ai.capabilities.PrepareOutputTools].

```python
from pydantic_ai import Agent, RunContext
from pydantic_ai.capabilities import PrepareTools
from pydantic_ai.tools import ToolDefinition


async def hide_admin_tools(
    ctx: RunContext, tool_defs: list[ToolDefinition]
) -> list[ToolDefinition]:
    return [td for td in tool_defs if not td.name.startswith('admin_')]


agent = Agent('openai:gpt-5', capabilities=[PrepareTools(hide_admin_tools)])
```
úToolsPrepareFunc[AgentDepsT]Úprepare_funcc                ó   • g ©N© ©Úclss    Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/capabilities/prepare_tools.pyÚget_serialization_nameÚ#PrepareTools.get_serialization_name'   ó   € àó    c              ƒ  óJ   #   • [        U R                  X5      I S h  v•N $  N7fr   ©Ú_call_prepare_funcr   ©ÚselfÚctxÚ	tool_defss      r   Úprepare_toolsÚPrepareTools.prepare_tools+   s   é € Ü'¨×(9Ñ(9¸3ÓJ×JÐJÑJùó   ‚#œ!�#r   N©Úreturnz
str | None©r!   úRunContext[AgentDepsT]r"   úlist[ToolDefinition]r'   r*   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Úclassmethodr   r#   Ú__static_attributes__r   r   r   r   r      s'   ‡ ñð, /Ó.àóó ð÷Kr   r   c                  óN   • \ rS rSr% SrS\S'   \S	S j5       r      S
S jrSr	g)ÚPrepareOutputToolsé/   a2  Capability that filters or modifies output tool definitions using a callable.

Mirrors [`PrepareTools`][pydantic_ai.capabilities.PrepareTools] for
[output tools][pydantic_ai.output.ToolOutput]. `ctx.retry`/`ctx.max_retries` reflect
the **output** retry budget (`max_output_retries`), matching the output hook lifecycle.

```python
from pydantic_ai import Agent, RunContext
from pydantic_ai.capabilities import PrepareOutputTools
from pydantic_ai.output import ToolOutput
from pydantic_ai.tools import ToolDefinition


async def only_after_first_step(
    ctx: RunContext, tool_defs: list[ToolDefinition]
) -> list[ToolDefinition]:
    return tool_defs if ctx.run_step > 0 else []


agent = Agent(
    'openai:gpt-5',
    output_type=ToolOutput(str),
    capabilities=[PrepareOutputTools(only_after_first_step)],
)
```
r   r   c                ó   • g r   r   r   s    r   r   Ú)PrepareOutputTools.get_serialization_nameN   r   r   c              ƒ  óJ   #   • [        U R                  X5      I S h  v•N $  N7fr   r   r   s      r   Úprepare_output_toolsÚ'PrepareOutputTools.prepare_output_toolsR   s    é € ô (¨×(9Ñ(9¸3ÓJ×JÐJÑJùr%   r   Nr&   r(   )
r+   r,   r-   r.   r/   r0   r1   r   r9   r2   r   r   r   r4   r4   /   sB   ‡ ñð6 /Ó.àóó ððKØ)ðKØ6JðKà	÷Kr   r4   c              ƒ  ó”   #   • U " X5      n[         R                  " U5      (       a
  UI S h  v•N n[        R                  " X05      $  N7fr   )ÚinspectÚisawaitabler
   Úcheck_tools_prepare_func_result)r   r!   r"   Úresults       r   r   r   X   s?   é € ñ ˜#Ó)€FÜ×Ò˜6×"Ñ"Ø—ˆÜ×1Ò1°&ÓGÐGñ ùs   ‚)A«A¬A)r   r   r!   r)   r"   r*   r'   r*   )Ú
__future__r   r<   Údataclassesr   Úpydantic_ai._run_contextr   r   Úpydantic_ai.toolsr   r   Ú r
   Úabstractr   r   r4   r   r   r   r   Ú<module>rF      s’   ðÝ "ã Ý !ç ;ß >å Ý (ð ôKÐ% jÑ1ó Kó ðKðB ô%KÐ+¨JÑ7ó %Kó ð%KðP
HØ.ð
Hà	ð
Hð $ð
Hð õ	
Hr   