From 7cc0327f1e9d563f478fd4141a0fa868a0c663f3 Mon Sep 17 00:00:00 2001 From: Abhinav Rastogi Date: Mon, 5 Oct 2026 16:49:24 +0530 Subject: [PATCH] fix: include LangChain Anthropic in agent extras --- CHANGELOG.md | 2 + README.md | 1 + poetry.lock | 170 ++++++++++++++++++++++++++++++++++++------------- pyproject.toml | 4 +- 4 files changed, 132 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a98406b..52d427d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Include `langchain-anthropic` in the `agents` extra so the LangGraph Claude example can import `ChatAnthropic`; it is also available as a standalone extra. + - `@worker_task` workers are now picklable, making the decorator path work with the `spawn`/`forkserver` start methods (fixes `TypeError: cannot pickle '_thread.lock' object` and `PicklingError: it's not the same object as ...`; issues #264, #271): `Worker.api_client` is created lazily in the worker process, runtime state (locks, pending async tasks, background loop) is excluded from pickling and rebuilt in the child, and decorated functions are pickled as importable references resolved in the child - `TaskHandler.start_processes()` no longer hangs the interpreter when a worker fails to start (e.g., unpicklable state under `spawn`); it now cleans up already-started subprocesses and raises with actionable guidance - Worker processes killed by a signal now log a diagnostic hint (signal number, `PYTHONFAULTHANDLER=1` guidance) instead of restarting silently diff --git a/README.md b/README.md index cb20402f..61612193 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ pip install conductor-python |---|---| | `conductor-python` | Workflow, task, worker, metadata, scheduler, and metrics clients | | `conductor-python[agents]` | Durable Conductor agents, tools, guardrails, handoffs, and all supported framework bridges | +| `conductor-python[langchain-anthropic]` | LangChain Anthropic model integration (`ChatAnthropic`) | | `conductor-python[adk]` | Google ADK bridge | | `conductor-python[langchain]` | LangChain bridge | | `conductor-python[langgraph]` | LangGraph bridge | diff --git a/poetry.lock b/poetry.lock index 458c4dfc..c27bffd2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.5.1 and should not be changed by hand. [[package]] name = "aiosqlite" @@ -37,7 +37,7 @@ description = "Reusable constraint types to use with typing.Annotated" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"openai\" or extra == \"adk\" or extra == \"anthropic\"" +markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"openai\" or extra == \"anthropic\" or extra == \"adk\"" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -45,32 +45,32 @@ files = [ [[package]] name = "anthropic" -version = "0.116.0" +version = "1.11.0" description = "The official Python library for the anthropic API" optional = true -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"anthropic\" or extra == \"agents\"" +markers = "extra == \"langchain-anthropic\" or extra == \"agents\" or extra == \"anthropic\"" files = [ - {file = "anthropic-0.116.0-py3-none-any.whl", hash = "sha256:6c0a7698e8d652455da3499978279bb2588c7264d0a35be3666009a4258c8256"}, - {file = "anthropic-0.116.0.tar.gz", hash = "sha256:5fc248fbb9fe03ef686f8a774f81586bca31a043260aab88b387ea3660f4a396"}, + {file = "anthropic-1.11.0-py3-none-any.whl", hash = "sha256:52f97b2c485cca7ac66058374f5073a3febb7e6849b16989c145d602a3efee21"}, + {file = "anthropic-1.11.0.tar.gz", hash = "sha256:3906fabac7ad7b5b46c6186040398fc7826885c77ce34e4dd7849de16fc8d0f8"}, ] [package.dependencies] -anyio = ">=3.5.0,<5" -distro = ">=1.7.0,<2" +anyio = ">=4.1.0,<5" docstring-parser = ">=0.15,<1" -httpx = ">=0.25.0,<1" +httpx2 = ">=2.0.0,<3" jiter = ">=0.4.0,<1" -pydantic = ">=1.9.0,<3" -sniffio = "*" +pydantic = ">=1.10.0,<3" +sniffio = ">=1,<2" typing-extensions = ">=4.14,<5" [package.extras] -aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.9)"] -aws = ["boto3 (>=1.28.57)", "botocore (>=1.31.57)"] -bedrock = ["boto3 (>=1.28.57)", "botocore (>=1.31.57)"] -mcp = ["mcp (>=1.0) ; python_version >= \"3.10\""] +aiohttp = ["aiohttp (>=3.10.0,<4)"] +aws = ["boto3 (>=1.28.57,<2)", "botocore (>=1.31.57,<2)"] +bedrock = ["boto3 (>=1.28.57,<2)", "botocore (>=1.31.57,<2)"] +google-cloud = ["google-auth[requests] (>=2,<3)"] +mcp = ["mcp (>=1.0,<3) ; python_version >= \"3.10\""] vertex = ["google-auth[requests] (>=2,<3)"] webhooks = ["standardwebhooks (>=1.0.1,<2)"] @@ -726,7 +726,7 @@ description = "Distro - an OS platform information API" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"openai\" or extra == \"openai-agents\" or extra == \"adk\" or extra == \"anthropic\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"openai\" or extra == \"openai-agents\" or extra == \"adk\"" files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, @@ -739,7 +739,7 @@ description = "Parse Python docstrings in reST, Google and Numpydoc format" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"anthropic\" or extra == \"agents\"" +markers = "extra == \"langchain-anthropic\" or extra == \"agents\" or extra == \"anthropic\"" files = [ {file = "docstring_parser-0.18.0-py3-none-any.whl", hash = "sha256:b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b"}, {file = "docstring_parser-0.18.0.tar.gz", hash = "sha256:292510982205c12b1248696f44959db3cdd1740237a968ea1e2e7a900eeb2015"}, @@ -1039,6 +1039,29 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] trio = ["trio (>=0.22.0,<1.0)"] +[[package]] +name = "httpcore2" +version = "2.3.0" +description = "A minimal low-level HTTP client." +optional = true +python-versions = ">=3.10" +groups = ["main"] +markers = "extra == \"langchain-anthropic\" or extra == \"agents\" or extra == \"anthropic\"" +files = [ + {file = "httpcore2-2.3.0-py3-none-any.whl", hash = "sha256:477e9e334f74e5240dcac002e890580f36a57d40ff0fb14cc9655731d23b8415"}, + {file = "httpcore2-2.3.0.tar.gz", hash = "sha256:07327e251560960eea8e969d92d4c6a325feb13cca39e25340731336c3baf924"}, +] + +[package.dependencies] +h11 = ">=0.16" +truststore = ">=0.10" + +[package.extras] +asyncio = ["anyio (>=4.5.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + [[package]] name = "httpx" version = "0.28.1" @@ -1078,6 +1101,32 @@ files = [ {file = "httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d"}, ] +[[package]] +name = "httpx2" +version = "2.3.0" +description = "The next generation HTTP client." +optional = true +python-versions = ">=3.10" +groups = ["main"] +markers = "extra == \"langchain-anthropic\" or extra == \"agents\" or extra == \"anthropic\"" +files = [ + {file = "httpx2-2.3.0-py3-none-any.whl", hash = "sha256:6f393663bdf6dbe7fe90118e3eb5b2bd024a675cae0390ac08cec9198812d8b7"}, + {file = "httpx2-2.3.0.tar.gz", hash = "sha256:227e7c41d95a76d4077a52640564132777215fc3394e07b66a3116c33d668fa9"}, +] + +[package.dependencies] +anyio = "*" +httpcore2 = "2.3.0" +idna = "*" +truststore = ">=0.10" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<15)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0) ; python_version <= \"3.13\""] + [[package]] name = "hyperframe" version = "6.1.0" @@ -1155,7 +1204,7 @@ description = "Fast iterable JSON parser." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"openai\" or extra == \"openai-agents\" or extra == \"anthropic\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"openai\" or extra == \"openai-agents\" or extra == \"langchain-anthropic\" or extra == \"anthropic\"" files = [ {file = "jiter-0.16.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c5fc4f8def331036a7b8e981b4347ebe409981edbc8308a5ea842b8c3614fa6c"}, {file = "jiter-0.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5a71d0d2014c3275043e1170bf3d4e771493cb0dcf07be54c567155f4d8ee64b"}, @@ -1290,7 +1339,7 @@ description = "Apply JSON-Patches (RFC 6902)" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, @@ -1306,7 +1355,7 @@ description = "Identify specific nodes in a JSON document (RFC 6901) " optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "jsonpointer-3.1.1-py3-none-any.whl", hash = "sha256:8ff8b95779d071ba472cf5bc913028df06031797532f08a7d5b602d8b2a488ca"}, {file = "jsonpointer-3.1.1.tar.gz", hash = "sha256:0b801c7db33a904024f6004d526dcc53bbb8a4a0f4e32bfd10beadf60adf1900"}, @@ -1388,27 +1437,46 @@ perplexity = ["langchain-perplexity"] together = ["langchain-together"] xai = ["langchain-xai"] +[[package]] +name = "langchain-anthropic" +version = "1.7.5" +description = "Integration package connecting Claude (Anthropic) APIs and LangChain" +optional = true +python-versions = "<4.0.0,>=3.10.0" +groups = ["main"] +markers = "extra == \"langchain-anthropic\" or extra == \"agents\"" +files = [ + {file = "langchain_anthropic-1.7.5-py3-none-any.whl", hash = "sha256:b21ef0e0c2d6175235a5b7eef4f5f89057df92d42dbfab66920a05605ef7173a"}, + {file = "langchain_anthropic-1.7.5.tar.gz", hash = "sha256:6016f38e5c4bf12c16ecfa76abf133a978f459f4d2887b8e28435ae1ff00beb3"}, +] + +[package.dependencies] +anthropic = ">=0.120.0,<2.0.0" +langchain-core = ">=1.6.6,<2.0.0" +pydantic = ">=2.7.4,<3.0.0" + [[package]] name = "langchain-core" -version = "1.4.8" +version = "1.6.6" description = "Building applications with LLMs through composability" optional = true python-versions = "<4.0.0,>=3.10.0" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ - {file = "langchain_core-1.4.8-py3-none-any.whl", hash = "sha256:d84c28b05e3ba8d4271d0827aad5b592ccdaaf986e76768c23503f0a2045e8aa"}, - {file = "langchain_core-1.4.8.tar.gz", hash = "sha256:5bf1f8411077c904182ad8f975943d36adcbf579c4e017b3a118b719229ebf9a"}, + {file = "langchain_core-1.6.6-py3-none-any.whl", hash = "sha256:d9a71e312ab7443701238750e04a57aefc037c4f1ec82837c8a1609d9a14a9b1"}, + {file = "langchain_core-1.6.6.tar.gz", hash = "sha256:67616d984c085009be2c381c2efd330d32429a58aebab295b4f51b6573964511"}, ] [package.dependencies] +httpx = ">=0.23.0,<1.0.0" jsonpatch = ">=1.33.0,<2.0.0" langchain-protocol = ">=0.0.17" langsmith = ">=0.3.45,<1.0.0" packaging = ">=23.2.0" pydantic = ">=2.7.4,<3.0.0" pyyaml = ">=5.3.0,<7.0.0" -tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10.0.0" +tenacity = ">=8.1.0,!=8.4.0,<10.0.0" typing-extensions = ">=4.7.0,<5.0.0" uuid-utils = ">=0.12.0,<1.0" @@ -1437,7 +1505,7 @@ description = "Python bindings for the LangChain agent streaming protocol" optional = true python-versions = "<4.0.0,>=3.10.0" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "langchain_protocol-0.0.18-py3-none-any.whl", hash = "sha256:70b53a86fbf9cedc863555effe44da192ab02d556ddbf2cf95b8873adcf41b5a"}, {file = "langchain_protocol-0.0.18.tar.gz", hash = "sha256:ec3e11782f1ed0c9db38e5a9ed01b0e7a0d3fba406faa8aef6594b73c56a63e6"}, @@ -1528,7 +1596,7 @@ description = "Client library to connect to the LangSmith Observability and Eval optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "langsmith-0.9.8-py3-none-any.whl", hash = "sha256:098da9fc6c184284f17913cb813a41e28c5ab1508e90bd50db40c28166681017"}, {file = "langsmith-0.9.8.tar.gz", hash = "sha256:8c3d6a6d5246a3ea6d439b726d59edefba31dfb251de9eedb256119bbea4439e"}, @@ -1953,7 +2021,7 @@ description = "Fast, correct Python JSON library supporting dataclasses, datetim optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "(extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\") and platform_python_implementation != \"PyPy\" or extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" files = [ {file = "orjson-3.11.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:135869ef917b8704ea0a94e01620e0c05021c15c52036e4663baffe75e72f8ce"}, {file = "orjson-3.11.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115ab5f5f4a0f203cc2a5f0fb09aee503a3f771aa08392949ab5ca230c4fbdbd"}, @@ -2102,7 +2170,7 @@ files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] -markers = {main = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"adk\""} +markers = {main = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"adk\""} [[package]] name = "pathspec" @@ -2237,7 +2305,7 @@ description = "Data validation using Python type hints" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"openai\" or extra == \"adk\" or extra == \"anthropic\"" +markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"openai\" or extra == \"anthropic\" or extra == \"adk\"" files = [ {file = "pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba"}, {file = "pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6"}, @@ -2260,7 +2328,7 @@ description = "Core functionality for Pydantic validation and serialization" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"openai\" or extra == \"adk\" or extra == \"anthropic\"" +markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"openai\" or extra == \"anthropic\" or extra == \"adk\"" files = [ {file = "pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4"}, {file = "pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5"}, @@ -2467,7 +2535,7 @@ dill = [ {version = ">=0.3.6", markers = "python_version == \"3.11\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, ] -isort = ">=4.2.5,<5.13 || >5.13,<7" +isort = ">=4.2.5,!=5.13,<7" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2" tomli = {version = ">=1.1", markers = "python_version < \"3.11\""} @@ -2556,7 +2624,7 @@ files = [ [package.dependencies] packaging = ">=17.1" -pytest = ">=8.2,<8.2.2 || >8.2.2" +pytest = ">=8.2,!=8.2.2" [[package]] name = "pytest-xdist" @@ -2737,7 +2805,7 @@ files = [ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] -markers = {main = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"adk\""} +markers = {main = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"adk\""} [[package]] name = "referencing" @@ -2911,7 +2979,7 @@ description = "A utility belt for advanced users of python-requests" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, @@ -3309,7 +3377,7 @@ description = "Retry code until it succeeds" optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"adk\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"adk\"" files = [ {file = "tenacity-9.1.4-py3-none-any.whl", hash = "sha256:6095a360c919085f28c6527de529e76a06ad89b23659fa881ae0649b867a9d55"}, {file = "tenacity-9.1.4.tar.gz", hash = "sha256:adb31d4c263f2bd041081ab33b498309a57c77f9acf2db65aadf0898179cf93a"}, @@ -3471,6 +3539,19 @@ notebook = ["ipywidgets (>=6)"] slack = ["envwrap", "slack-sdk"] telegram = ["envwrap", "requests"] +[[package]] +name = "truststore" +version = "0.10.4" +description = "Verify certificates using native system trust stores" +optional = true +python-versions = ">=3.10" +groups = ["main"] +markers = "extra == \"langchain-anthropic\" or extra == \"agents\" or extra == \"anthropic\"" +files = [ + {file = "truststore-0.10.4-py3-none-any.whl", hash = "sha256:adaeaecf1cbb5f4de3b1959b42d41f6fab57b2b1666adb59e89cb0b53361d981"}, + {file = "truststore-0.10.4.tar.gz", hash = "sha256:9d91bd436463ad5e4ee4aba766628dd6cd7010cf3e2461756b3303710eebc301"}, +] + [[package]] name = "typing-extensions" version = "4.14.1" @@ -3490,7 +3571,7 @@ description = "Runtime typing introspection tools" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"openai\" or extra == \"adk\" or extra == \"anthropic\"" +markers = "extra == \"openai-agents\" or extra == \"agents\" or extra == \"claude\" or extra == \"langchain\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"openai\" or extra == \"anthropic\" or extra == \"adk\"" files = [ {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, @@ -3557,7 +3638,7 @@ description = "Fast, drop-in replacement for Python's uuid module, powered by Ru optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "uuid_utils-0.16.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:89a627f74cb55aa508809592ab9149806649e4ee37f4bc91b60c7ec10929f0eb"}, {file = "uuid_utils-0.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e92875a315f3cc4fe7a2324c17b3c7ac5e3fd0e24b14fc4deb28370431fe6a2b"}, @@ -3745,7 +3826,7 @@ description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"adk\" or extra == \"openai-agents\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\" or extra == \"adk\" or extra == \"openai-agents\"" files = [ {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, @@ -3914,7 +3995,7 @@ description = "Python binding for xxHash" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "xxhash-3.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:27a9e475157f7315826118e3f3127909a0fe25f1b43d3d3be9c584f9d265f937"}, {file = "xxhash-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b2ce44bf8f4a1d01f418b3110ff8dff32fd3f3e836c0e06333c3725f243fa6c"}, @@ -4112,7 +4193,7 @@ description = "Zstandard bindings for Python" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\"" +markers = "extra == \"langchain\" or extra == \"agents\" or extra == \"langgraph\" or extra == \"langchain-anthropic\"" files = [ {file = "zstandard-0.25.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e59fdc271772f6686e01e1b3b74537259800f57e24280be3f29c8a0deb1904dd"}, {file = "zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d441506e9b372386a5271c64125f72d5df6d2a8e8a2a45a0ae09b03cb781ef7"}, @@ -4220,10 +4301,11 @@ cffi = ["cffi (>=1.17,<2.0) ; platform_python_implementation != \"PyPy\" and pyt [extras] adk = ["google-adk"] -agents = ["anthropic", "claude-code-sdk", "google-adk", "langchain", "langchain-core", "langchain-openai", "langgraph", "openai", "openai-agents"] +agents = ["anthropic", "claude-code-sdk", "google-adk", "langchain", "langchain-anthropic", "langchain-core", "langchain-openai", "langgraph", "openai", "openai-agents"] anthropic = ["anthropic"] claude = ["claude-code-sdk"] langchain = ["langchain", "langchain-core", "langchain-openai"] +langchain-anthropic = ["langchain-anthropic"] langgraph = ["langchain-core", "langgraph"] openai = ["openai"] openai-agents = ["openai-agents"] @@ -4231,4 +4313,4 @@ openai-agents = ["openai-agents"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "c9fd605d1f56bc517db3abd078ea0a56e411d01371115ba6ef4229d508b9f939" +content-hash = "8bb9f36ee0802038c88a15af656532a8fce924a85644ac488ddebb37d912bda2" diff --git a/pyproject.toml b/pyproject.toml index 0e9845a4..1aabf83d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ cloudpickle = ">=2.0" langchain = { version = ">=1.2.13", optional = true } langchain-core = { version = ">=1.2.20", optional = true } langchain-openai = { version = ">=1.1.11", optional = true } +langchain-anthropic = { version = ">=1.5.5", optional = true } langgraph = { version = ">=1.1.3", optional = true } google-adk = { version = ">=1.27.1", optional = true } openai = { version = ">=2.28.0", optional = true } @@ -54,13 +55,14 @@ claude-code-sdk = { version = ">=0.0.25", optional = true } [tool.poetry.extras] langchain = ["langchain", "langchain-core", "langchain-openai"] +langchain-anthropic = ["langchain-anthropic"] langgraph = ["langgraph", "langchain-core"] adk = ["google-adk"] openai = ["openai"] openai-agents = ["openai-agents"] anthropic = ["anthropic"] claude = ["claude-code-sdk"] -agents = ["langchain", "langchain-core", "langchain-openai", "langgraph", +agents = ["langchain", "langchain-core", "langchain-openai", "langchain-anthropic", "langgraph", "google-adk", "openai", "openai-agents", "anthropic", "claude-code-sdk"] [tool.poetry.group.dev.dependencies]