From 70fbb423a388a0579260da616b5b88ee84d00c90 Mon Sep 17 00:00:00 2001 From: Henry Su Date: Fri, 21 Aug 2026 15:41:05 -0500 Subject: [PATCH] fix: validate function tool concurrency type --- src/agents/run_config.py | 9 ++++++--- tests/test_run_config.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/agents/run_config.py b/src/agents/run_config.py index cf28ec5cf8..653ded1b77 100644 --- a/src/agents/run_config.py +++ b/src/agents/run_config.py @@ -122,9 +122,12 @@ class ToolExecutionConfig: """ def __post_init__(self) -> None: - if self.max_function_tool_concurrency is not None and ( - self.max_function_tool_concurrency < 1 - ): + value = self.max_function_tool_concurrency + if value is not None and (isinstance(value, bool) or not isinstance(value, int)): + raise TypeError( + "tool_execution.max_function_tool_concurrency must be a positive integer or None" + ) + if value is not None and value < 1: raise ValueError("tool_execution.max_function_tool_concurrency must be at least 1") if not isinstance(self.pre_approval_tool_input_guardrails, bool): raise ValueError("tool_execution.pre_approval_tool_input_guardrails must be a bool") diff --git a/tests/test_run_config.py b/tests/test_run_config.py index 8c88046af5..a750bc89b4 100644 --- a/tests/test_run_config.py +++ b/tests/test_run_config.py @@ -334,6 +334,17 @@ def test_tool_execution_config_rejects_invalid_function_tool_concurrency() -> No ToolExecutionConfig(max_function_tool_concurrency=0) +@pytest.mark.parametrize("value", [True, 1.5]) +def test_tool_execution_config_rejects_non_integer_function_tool_concurrency( + value: object, +) -> None: + with pytest.raises( + TypeError, + match="tool_execution.max_function_tool_concurrency must be a positive integer or None", + ): + ToolExecutionConfig(max_function_tool_concurrency=cast(Any, value)) + + def test_tool_execution_config_is_public_from_agents_package() -> None: config = RunConfig(tool_execution=ToolExecutionConfig(max_function_tool_concurrency=2))