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]