diff --git a/pyproject.toml b/pyproject.toml index f32ecd0..416c148 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ evals = [ [tool.uv] override-dependencies = [ - "openai>=1.108.0", # Override appworld-experiments' openai<=1.99.8 constraint + "openai[aiohttp]>=1.108.0", # Override appworld-experiments' openai<=1.99.8 constraint ] [tool.uv.sources] @@ -119,4 +119,4 @@ ignore_errors = true [[tool.mypy.overrides]] module = "tests.benchmarks.appworld.mcp_server" -disable_error_code = ["attr-defined", "no-untyped-call", "misc"] \ No newline at end of file +disable_error_code = ["attr-defined", "no-untyped-call", "misc"] diff --git a/tests/unit/utils/test_handlers_generator.py b/tests/unit/utils/test_handlers_generator.py index e2d8b39..d95f03f 100644 --- a/tests/unit/utils/test_handlers_generator.py +++ b/tests/unit/utils/test_handlers_generator.py @@ -95,7 +95,10 @@ def test_all_type_conversions(self) -> None: assert json_schema_to_python_type({"type": "boolean"}) == "bool" assert json_schema_to_python_type({"type": "null"}) == "None" assert json_schema_to_python_type({"type": "array", "items": {"type": "string"}}) == "list[str]" - nested_array = {"type": "array", "items": {"type": "array", "items": {"type": "integer"}}} + nested_array = { + "type": "array", + "items": {"type": "array", "items": {"type": "integer"}}, + } assert json_schema_to_python_type(nested_array) == "list[list[int]]" obj_schema = {"type": "object", "properties": {"key": {"type": "string"}}} assert json_schema_to_python_type(obj_schema) == "dict[str, Any]" @@ -125,7 +128,11 @@ class TestGenerateMethodStub: """Tests for generate_method_stub function.""" def test_all_tool_types( - self, tool_with_params: Tool, tool_with_enum: Tool, tool_with_boolean: Tool, empty_tool: Tool + self, + tool_with_params: Tool, + tool_with_enum: Tool, + tool_with_boolean: Tool, + empty_tool: Tool, ) -> None: """Test generating method stubs for all tool types.""" # Test simple tool with parameters diff --git a/uv.lock b/uv.lock index d16fe1b..fd3eb29 100644 --- a/uv.lock +++ b/uv.lock @@ -7,7 +7,7 @@ resolution-markers = [ ] [manifest] -overrides = [{ name = "openai", specifier = ">=1.108.0" }] +overrides = [{ name = "openai", extras = ["aiohttp"], specifier = ">=1.108.0" }] [[package]] name = "a2a-sdk" @@ -204,7 +204,7 @@ dependencies = [ { name = "jsonnet", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "jsonnet-binary", marker = "sys_platform == 'win32'" }, { name = "litellm" }, - { name = "openai" }, + { name = "openai", extra = ["aiohttp"] }, ] [package.optional-dependencies] @@ -312,7 +312,7 @@ dependencies = [ { name = "mpmath" }, { name = "networkx" }, { name = "numpy" }, - { name = "openai" }, + { name = "openai", extra = ["aiohttp"] }, { name = "overrides" }, { name = "pandas" }, { name = "pathlib" }, @@ -757,7 +757,7 @@ dependencies = [ { name = "google-genai" }, { name = "keyring" }, { name = "mcp" }, - { name = "openai" }, + { name = "openai", extra = ["aiohttp"] }, { name = "opentelemetry-distro" }, { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "opentelemetry-instrumentation-anthropic", marker = "python_full_version < '4'" }, @@ -1075,6 +1075,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, @@ -1082,6 +1084,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, + { url = "https://files.pythonhosted.org/packages/0d/da/343cd760ab2f92bac1845ca07ee3faea9fe52bee65f7bcb19f16ad7de08b/greenlet-3.2.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:015d48959d4add5d6c9f6c5210ee3803a830dce46356e3bc326d6776bde54681", size = 1680760, upload-time = "2025-11-04T12:42:25.341Z" }, { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425, upload-time = "2025-08-07T13:32:27.59Z" }, ] @@ -1177,6 +1181,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[[package]] +name = "httpx-aiohttp" +version = "0.1.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "httpx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/f2/9a86ce9bc48cf57dabb3a3160dfed26d8bbe5a2478a51f9d1dbf89f2f1fc/httpx_aiohttp-0.1.9.tar.gz", hash = "sha256:4ee8b22e6f2e7c80cd03be29eff98bfe7d89bd77f021ce0b578ee76b73b4bfe6", size = 206023, upload-time = "2025-10-15T08:52:57.475Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/db/5cfa8254a86c34a1ab7fe0dbec9f81bb5ebd831cbdd65aa4be4f37027804/httpx_aiohttp-0.1.9-py3-none-any.whl", hash = "sha256:3dc2845568b07742588710fcf3d72db2cbcdf2acc93376edf85f789c4d8e5fda", size = 6180, upload-time = "2025-10-15T08:52:56.521Z" }, +] + [[package]] name = "httpx-sse" version = "0.4.0" @@ -1627,7 +1644,7 @@ dependencies = [ { name = "importlib-metadata" }, { name = "jinja2" }, { name = "jsonschema" }, - { name = "openai" }, + { name = "openai", extra = ["aiohttp"] }, { name = "pydantic" }, { name = "python-dotenv" }, { name = "tiktoken" }, @@ -1960,6 +1977,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/0a/58e9dcd34abe273eaeac3807a8483073767b5609d01bb78ea2f048e515a0/openai-2.6.0-py3-none-any.whl", hash = "sha256:f33fa12070fe347b5787a7861c8dd397786a4a17e1c3186e239338dac7e2e743", size = 1005403, upload-time = "2025-10-20T17:17:22.091Z" }, ] +[package.optional-dependencies] +aiohttp = [ + { name = "aiohttp" }, + { name = "httpx-aiohttp" }, +] + [[package]] name = "openapi-core" version = "0.19.5" @@ -3016,7 +3039,7 @@ dependencies = [ { name = "json5" }, { name = "jsonlines" }, { name = "jsonschema" }, - { name = "openai" }, + { name = "openai", extra = ["aiohttp"] }, { name = "pillow" }, { name = "pydantic" }, { name = "requests" },