diff --git a/python/packages/a2a/agent_framework_a2a/_agent.py b/python/packages/a2a/agent_framework_a2a/_agent.py index 5dca644f184..1cfe7c12443 100644 --- a/python/packages/a2a/agent_framework_a2a/_agent.py +++ b/python/packages/a2a/agent_framework_a2a/_agent.py @@ -355,8 +355,8 @@ def _create_timeout_config(self, timeout: float | httpx.Timeout | None) -> httpx write=10.0, # 10 seconds to send request pool=5.0, # 5 seconds to get connection from pool ) - if isinstance(timeout, float): - # Simple timeout + if isinstance(timeout, (int, float)) and not isinstance(timeout, bool): + # Simple timeout (ints are accepted per PEP 484's numeric tower) return httpx.Timeout(timeout) if isinstance(timeout, httpx.Timeout): # Full timeout configuration provided by user diff --git a/python/packages/a2a/tests/test_a2a_agent.py b/python/packages/a2a/tests/test_a2a_agent.py index b7bb617db90..0fc5b3007c9 100644 --- a/python/packages/a2a/tests/test_a2a_agent.py +++ b/python/packages/a2a/tests/test_a2a_agent.py @@ -754,6 +754,36 @@ def test_create_timeout_config_httpx_timeout() -> None: assert timeout_config.pool == 8.0 +def test_create_timeout_config_integer_timeout() -> None: + """Test _create_timeout_config accepts an int timeout (PEP 484 numeric tower).""" + agent = A2AAgent(name="Test Agent", client=cast(Any, MockA2AClient()), http_client=None) + + timeout_config = agent._create_timeout_config(30) + + assert isinstance(timeout_config, httpx.Timeout) + assert timeout_config.connect == 30.0 + assert timeout_config.read == 30.0 + assert timeout_config.write == 30.0 + assert timeout_config.pool == 30.0 + + +def test_a2a_agent_initialization_with_integer_timeout_parameter() -> None: + """Test A2AAgent initialization accepts an int timeout without raising TypeError.""" + with ( + patch("agent_framework_a2a._agent.httpx.AsyncClient") as mock_async_client, + patch("agent_framework_a2a._agent.ClientFactory") as mock_factory, + ): + mock_client_instance = MagicMock() + mock_factory.return_value.create.return_value = mock_client_instance + + A2AAgent(name="Test Agent", url="https://test-agent.example.com", timeout=120) + + mock_async_client.assert_called_once() + timeout_arg = mock_async_client.call_args.kwargs["timeout"] + assert isinstance(timeout_arg, httpx.Timeout) + assert timeout_arg.read == 120.0 + + def test_create_timeout_config_invalid_type() -> None: """Test _create_timeout_config with invalid type raises TypeError.""" agent = A2AAgent(name="Test Agent", client=cast(Any, MockA2AClient()), http_client=None)