From e1aa7f2f0dc7ac8c5aed2fcc86301831868d0e47 Mon Sep 17 00:00:00 2001 From: Chojan Shang Date: Wed, 15 Apr 2026 02:15:28 +0800 Subject: [PATCH 1/2] chore(deps): bump any-llm-sdk from 1.7.0 to 1.13.0 --- pyproject.toml | 2 +- uv.lock | 51 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d3cd9b6..d974952 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ keywords = [ ] requires-python = ">=3.11,<4.0" dependencies = [ - "any-llm-sdk>=1.7.0", + "any-llm-sdk>=1.13.0", "authlib>=1.6.5", "httpx>=0.28.1", "pydantic>=2.7.0", diff --git a/uv.lock b/uv.lock index ce23844..5fdbe90 100644 --- a/uv.lock +++ b/uv.lock @@ -11,19 +11,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] +[[package]] +name = "anthropic" +version = "0.94.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "docstring-parser" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/f2/fb4a04ff676742588a41f94dd318883d6d77e88e2b5e20b664ae3bf20e1b/anthropic-0.94.1.tar.gz", hash = "sha256:96c7033069c16074f90638dff8bf1f1616f9eefeb8ef7d1b0df4a0393ab34685", size = 654451, upload-time = "2026-04-13T18:08:18.453Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/18/6d5b5948cbe450d3c98336c8a8c4804aedb3ab24fa37922d05063f8ba266/anthropic-0.94.1-py3-none-any.whl", hash = "sha256:58fb20dc60f35e75a5a82a1c73a3e196ac3b18ff2ed4826cba345f4adb78919d", size = 627710, upload-time = "2026-04-13T18:08:19.629Z" }, +] + [[package]] name = "any-llm-sdk" -version = "1.7.0" +version = "1.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "anthropic" }, { name = "httpx" }, { name = "openai" }, + { name = "openresponses-types" }, { name = "pydantic" }, { name = "rich" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/8a/4ec31cf0c0edd6204749a0939df823c797088319c4aae31c4919929a1e5c/any_llm_sdk-1.7.0.tar.gz", hash = "sha256:667f3a1ba5ef0478fd30cf961a62ebb74c2a47597a7ae2c8947ba983f2f97bc5", size = 122620, upload-time = "2026-01-16T09:25:27.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/4b/dea4eeeb5e4e3e55fa6b37a7ec033a18a2527aabf565bd598071d6308fbd/any_llm_sdk-1.13.0.tar.gz", hash = "sha256:967c5f4dd099f5f6cc9673f2888d5550f6e821d25341d31133a05741c1ce903e", size = 153753, upload-time = "2026-03-23T10:27:29.843Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/7f/2f18e3f27da280724bfa1ab5576d28ae3489c480b305611f68bf80a3e177/any_llm_sdk-1.7.0-py3-none-any.whl", hash = "sha256:037b5c34fbabb67a38803e7589fb84cbd85ff0c4cc839d4c9352986fd7bdb4b0", size = 174078, upload-time = "2026-01-16T09:25:26.024Z" }, + { url = "https://files.pythonhosted.org/packages/64/a1/0106667efdf870595981a0fc3e807675d1f8ded8dc8c20e936e6c42bcd95/any_llm_sdk-1.13.0-py3-none-any.whl", hash = "sha256:7e456a843cec249ae1cb3a498aa89df5baff8aa62d76a24718babb3b8a51e495", size = 216557, upload-time = "2026-03-23T10:27:28.306Z" }, ] [[package]] @@ -350,6 +372,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, ] +[[package]] +name = "docstring-parser" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/4d/f332313098c1de1b2d2ff91cf2674415cc7cddab2ca1b01ae29774bd5fdf/docstring_parser-0.18.0.tar.gz", hash = "sha256:292510982205c12b1248696f44959db3cdd1740237a968ea1e2e7a900eeb2015", size = 29341, upload-time = "2026-04-14T04:09:19.867Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/5f/ed01f9a3cdffbd5a008556fc7b2a08ddb1cc6ace7effa7340604b1d16699/docstring_parser-0.18.0-py3-none-any.whl", hash = "sha256:b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b", size = 22484, upload-time = "2026-04-14T04:09:18.638Z" }, +] + [[package]] name = "filelock" version = "3.20.3" @@ -771,6 +802,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/16/83/0315bf2cfd75a2ce8a7e54188e9456c60cec6c0cf66728ed07bd9859ff26/openai-2.16.0-py3-none-any.whl", hash = "sha256:5f46643a8f42899a84e80c38838135d7038e7718333ce61396994f887b09a59b", size = 1068612, upload-time = "2026-01-27T23:28:00.356Z" }, ] +[[package]] +name = "openresponses-types" +version = "2.3.0.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/26/b612c3215f5599714fa94d63eb5ee59b4eb66dbdeeaf86bb4d848359484d/openresponses_types-2.3.0.post1.tar.gz", hash = "sha256:11b8896d3621d2ac2439f6ff106f34ddcb1bbd517c317a6c852a9df2e98a0753", size = 19254, upload-time = "2026-01-22T20:02:03.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/5f/e16dad89ed24f586da5b01b9b206d3adbf21fe1af8e4dc55d5b93158fde6/openresponses_types-2.3.0.post1-py3-none-any.whl", hash = "sha256:88f6abcef9cad839203abff420dd080978bf6eb33cc06ddc5d78da4ccdba7613", size = 13847, upload-time = "2026-01-22T20:02:02.582Z" }, +] + [[package]] name = "packaging" version = "26.0" @@ -1136,7 +1179,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "any-llm-sdk", specifier = ">=1.7.0" }, + { name = "any-llm-sdk", specifier = ">=1.13.0" }, { name = "authlib", specifier = ">=1.6.5" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "pydantic", specifier = ">=2.7.0" }, From ddcbd2398fc3d3ca33d86f46f7d1078f5bbe41e5 Mon Sep 17 00:00:00 2001 From: Chojan Shang Date: Wed, 15 Apr 2026 02:25:13 +0800 Subject: [PATCH 2/2] fix: unblock ty check after any-llm-sdk bump --- src/republic/core/execution.py | 2 +- tests/test_tape_contract.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/republic/core/execution.py b/src/republic/core/execution.py index afac0e6..6a363ba 100644 --- a/src/republic/core/execution.py +++ b/src/republic/core/execution.py @@ -518,7 +518,7 @@ def _call_completion_like_sync( stream=request.stream, reasoning_effort=request.reasoning_effort, **completion_kwargs, - ), + ), # ty: ignore[no-matching-overload] ) async def _call_responses_async( diff --git a/tests/test_tape_contract.py b/tests/test_tape_contract.py index d2a9afc..383a982 100644 --- a/tests/test_tape_contract.py +++ b/tests/test_tape_contract.py @@ -47,7 +47,7 @@ class _AwaitableMessages: def __init__(self, messages: list[dict[str, str]]) -> None: self._messages = messages - def __await__(self): # type: ignore[no-untyped-def] + def __await__(self): async def _resolve() -> list[dict[str, str]]: return self._messages @@ -55,7 +55,7 @@ async def _resolve() -> list[dict[str, str]]: def test_sync_manager_rejects_async_context_selector(manager) -> None: - def select(entries, context): # type: ignore[no-untyped-def] + def select(entries, context): return _AwaitableMessages([{"role": "assistant", "content": str(len(list(entries)))}]) context = TapeContext(anchor=LAST_ANCHOR, select=select) @@ -73,7 +73,7 @@ async def test_async_manager_awaits_context_selector_after_anchor_slice() -> Non seen: dict[str, object] = {} - async def select(entries, context): # type: ignore[no-untyped-def] + async def select(entries, context): entry_list = list(entries) seen["contents"] = [entry.payload["content"] for entry in entry_list] seen["state"] = dict(context.state)