Skip to content

Conversation

@constantinius
Copy link
Contributor

  • Introduced context variables to manage nested invoke_agent spans safely.
  • Added functions to push and pop spans from the context stack.
  • Updated existing code to utilize context variables instead of Sentry scope for agent management.
  • Enhanced execute_tool_span to support parent-child relationships between spans.

This change improves the handling of agent spans during nested calls, ensuring better traceability and isolation of spans in asynchronous contexts.

Description

Issues

Reminders

- Introduced context variables to manage nested invoke_agent spans safely.
- Added functions to push and pop spans from the context stack.
- Updated existing code to utilize context variables instead of Sentry scope for agent management.
- Enhanced execute_tool_span to support parent-child relationships between spans.

This change improves the handling of agent spans during nested calls, ensuring better traceability and isolation of spans in asynchronous contexts.
@constantinius constantinius requested a review from a team as a code owner November 10, 2025 16:13
@linear
Copy link

linear bot commented Nov 10, 2025

@codecov
Copy link

codecov bot commented Nov 10, 2025

❌ 21 Tests Failed:

Tests completed Failed Passed Skipped
27881 21 27860 2227
View the top 3 failed test(s) by shortest run time
tests.integrations.pydantic_ai.test_pydantic_ai::test_message_parts_with_tool_return
Stack Traces | 0.09s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1533: in test_message_parts_with_tool_return
    await agent.run("Use test_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_available_tools_without_description
Stack Traces | 0.104s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1181: in test_available_tools_without_description
    await test_agent.run("Use the tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_message_parts_with_tool_return
Stack Traces | 0.104s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1533: in test_message_parts_with_tool_return
    await agent.run("Use test_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_output_with_tool_calls
Stack Traces | 0.106s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1213: in test_output_with_tool_calls
    await test_agent.run("Use calc_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools_streaming
Stack Traces | 0.107s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:254: in test_agent_with_tools_streaming
    async with test_agent.run_stream("What is 7 times 8?") as result:
.../pydantic_ai/patches/agent_run.py:59: in __aenter__
    result = await self.original_ctx_manager.__aenter__()
.../hostedtoolcache/Python/3.10.19........./x64/lib/python3.10/contextlib.py:199: in __aenter__
    return await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:562: in run_stream
    next_node = await agent_run.next(node)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:242: in next
    task = await self._graph_run.next(task)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:433: in next
    return await anext(self)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19........./x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19........./x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_message_parts_with_tool_return
Stack Traces | 0.107s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1533: in test_message_parts_with_tool_return
    await agent.run("Use test_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_output_with_tool_calls
Stack Traces | 0.109s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1213: in test_output_with_tool_calls
    await test_agent.run("Use calc_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools_streaming
Stack Traces | 0.125s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:254: in test_agent_with_tools_streaming
    async with test_agent.run_stream("What is 7 times 8?") as result:
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../pydantic_ai/patches/agent_run.py:59: in __aenter__
    result = await self.original_ctx_manager.__aenter__()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9........./x64/lib/python3.13/contextlib.py:214: in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:562: in run_stream
    next_node = await agent_run.next(node)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:242: in next
    task = await self._graph_run.next(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:433: in next
    return await anext(self)
           ^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9........./x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9........./x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools_streaming
Stack Traces | 0.125s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:254: in test_agent_with_tools_streaming
    async with test_agent.run_stream("What is 7 times 8?") as result:
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../pydantic_ai/patches/agent_run.py:59: in __aenter__
    result = await self.original_ctx_manager.__aenter__()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12........./x64/lib/python3.12/contextlib.py:210: in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:562: in run_stream
    next_node = await agent_run.next(node)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:242: in next
    task = await self._graph_run.next(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:433: in next
    return await anext(self)
           ^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12........./x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12........./x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_available_tools_without_description
Stack Traces | 0.139s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1181: in test_available_tools_without_description
    await test_agent.run("Use the tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_output_with_tool_calls
Stack Traces | 0.148s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1213: in test_output_with_tool_calls
    await test_agent.run("Use calc_tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_without_pii_tools
Stack Traces | 0.157s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:421: in test_without_pii_tools
    await test_agent.run("Use sensitive tool with private data")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_available_tools_without_description
Stack Traces | 0.158s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:1181: in test_available_tools_without_description
    await test_agent.run("Use the tool with 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_include_prompts_false_with_tools
Stack Traces | 0.159s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:616: in test_include_prompts_false_with_tools
    await test_agent.run("Use the test tool with value 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_without_pii_tools
Stack Traces | 0.166s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:421: in test_without_pii_tools
    await test_agent.run("Use sensitive tool with private data")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_without_pii_tools
Stack Traces | 0.177s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:421: in test_without_pii_tools
    await test_agent.run("Use sensitive tool with private data")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_include_prompts_false_with_tools
Stack Traces | 0.178s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:616: in test_include_prompts_false_with_tools
    await test_agent.run("Use the test tool with value 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_include_prompts_false_with_tools
Stack Traces | 0.181s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:616: in test_include_prompts_false_with_tools
    await test_agent.run("Use the test tool with value 5")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools
Stack Traces | 0.213s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:204: in test_agent_with_tools
    result = await test_agent.run("What is 5 + 3?")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:162: in __exit__
    self.gen.throw(value)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.9....../x64/lib/python3.13/contextlib.py:221: in __aexit__
    await anext(self.gen)
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.13-pydantic_ai-v1.10.0/lib/python3.13....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools
Stack Traces | 0.292s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:204: in test_agent_with_tools
    result = await test_agent.run("What is 5 + 3?")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
             ^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
               ^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.12.12....../x64/lib/python3.12/contextlib.py:217: in __aexit__
    await anext(self.gen)
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
     ^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.12-pydantic_ai-v1.10.0/lib/python3.12....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given
tests.integrations.pydantic_ai.test_pydantic_ai::test_agent_with_tools
Stack Traces | 0.317s run time
.../integrations/pydantic_ai/test_pydantic_ai.py:204: in test_agent_with_tools
    result = await test_agent.run("What is 5 + 3?")
.../pydantic_ai/patches/agent_run.py:128: in wrapper
    raise exc from None
.../pydantic_ai/patches/agent_run.py:119: in wrapper
    result = await original_func(self, *args, **kwargs)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_ai/agent/abstract.py:234: in run
    async for node in agent_run:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../site-packages/pydantic_ai/run.py:148: in __anext__
    task = await anext(self._graph_run)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:410: in __anext__
    self._next = await self._iterator.asend(self._next)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:497: in iter_graph
    with _unwrap_exception_groups():
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:153: in __exit__
    self.gen.throw(typ, value, traceback)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:866: in _unwrap_exception_groups
    raise exception
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:638: in _run_tracked_task
    result = await self._run_task(t_)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/graph.py:667: in _run_task
    output = await node.call(step_context)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.../pydantic_graph/beta/step.py:253: in _call_node
    return await node.run(GraphRunContext(state=ctx.state, deps=ctx.deps))
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:543: in run
    async with self.stream(ctx):
.../hostedtoolcache/Python/3.10.19....../x64/lib/python3.10/contextlib.py:206: in __aexit__
    await anext(self.gen)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:557: in stream
    async for _event in stream:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:671: in _run_stream
    async for event in self._events_iterator:
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:632: in _run_stream
    async for event in self._handle_tool_calls(ctx, tool_calls):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:687: in _handle_tool_calls
    async for event in process_tool_calls(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:884: in process_tool_calls
    async for event in _call_tools(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1014: in _call_tools
    if event := await handle_call_or_result(coro_or_task=task, index=index):
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:979: in handle_call_or_result
    (await coro_or_task) if inspect.isawaitable(coro_or_task) else coro_or_task.result()
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10.........................../site-packages/pydantic_ai/_agent_graph.py:1033: in _call_tool
    tool_result = await tool_manager.handle_call(tool_call)
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:112: in handle_call
    return await self._call_function_tool(
.tox/py3.10-pydantic_ai-v1.10.0/lib/python3.10....../site-packages/pydantic_ai/_tool_manager.py:236: in _call_function_tool
    tool_result = await self._call_tool(call, allow_partial, wrap_validation_errors)
E   TypeError: ToolManager._call_tool() takes 2 positional arguments but 4 were given

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Copy link
Contributor

@sentrivana sentrivana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reworking this with iso scopes. Looks good to me, but please check the cursor comment if it applies.

@constantinius constantinius merged commit 3101fe0 into master Nov 13, 2025
132 checks passed
@constantinius constantinius deleted the constantinius/feat/integrations/implement-context-management-for-invoke_agent-spans branch November 13, 2025 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants