Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langchain-anthropic for 
openSUSE:Factory checked in at 2026-08-12 16:12:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langchain-anthropic (Old)
 and      /work/SRC/openSUSE:Factory/.python-langchain-anthropic.new.17972 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langchain-anthropic"

Wed Aug 12 16:12:18 2026 rev:6 rq:1370781 version:1.5.5

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-langchain-anthropic/python-langchain-anthropic.changes
    2026-08-09 21:41:50.483562202 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langchain-anthropic.new.17972/python-langchain-anthropic.changes
 2026-08-12 16:13:27.960901189 +0200
@@ -1,0 +2,11 @@
+Wed Aug 12 05:23:10 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 1.5.5:
+  * Report reasoning tokens via output_token_details in usage metadata
+  * Raise a clearer error when Anthropic credentials are missing
+  * Fix source path handling for file renames in the Anthropic tools
+    middleware
+  * Refresh bundled model profile data
+- Require langchain-core >= 1.5.4
+
+-------------------------------------------------------------------

Old:
----
  langchain_anthropic-1.5.4.tar.gz

New:
----
  langchain_anthropic-1.5.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-langchain-anthropic.spec ++++++
--- /var/tmp/diff_new_pack.Y9IKqf/_old  2026-08-12 16:13:28.944942755 +0200
+++ /var/tmp/diff_new_pack.Y9IKqf/_new  2026-08-12 16:13:28.944942755 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-langchain-anthropic
-Version:        1.5.4
+Version:        1.5.5
 Release:        0
 Summary:        Integration package connecting Claude (Anthropic) APIs and 
LangChain
 License:        MIT
@@ -29,7 +29,7 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-anthropic >= 0.120.0
-Requires:       python-langchain-core >= 1.5.2
+Requires:       python-langchain-core >= 1.5.4
 Requires:       python-pydantic >= 2.7.4
 BuildArch:      noarch
 # SECTION test requirements
@@ -37,7 +37,7 @@
 BuildRequires:  %{python_module blockbuster}
 BuildRequires:  %{python_module defusedxml}
 BuildRequires:  %{python_module freezegun}
-BuildRequires:  %{python_module langchain-core >= 1.5.2}
+BuildRequires:  %{python_module langchain-core >= 1.5.4}
 BuildRequires:  %{python_module pydantic >= 2.7.4}
 BuildRequires:  %{python_module pytest-asyncio}
 BuildRequires:  %{python_module pytest-mock}

++++++ langchain_anthropic-1.5.4.tar.gz -> langchain_anthropic-1.5.5.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_anthropic-1.5.4/PKG-INFO 
new/langchain_anthropic-1.5.5/PKG-INFO
--- old/langchain_anthropic-1.5.4/PKG-INFO      2020-02-02 01:00:00.000000000 
+0100
+++ new/langchain_anthropic-1.5.5/PKG-INFO      2020-02-02 01:00:00.000000000 
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.4
+Metadata-Version: 2.5
 Name: langchain-anthropic
-Version: 1.5.4
+Version: 1.5.5
 Summary: Integration package connecting Claude (Anthropic) APIs and LangChain
 Project-URL: Homepage, 
https://docs.langchain.com/oss/python/integrations/providers/anthropic
 Project-URL: Documentation, 
https://reference.langchain.com/python/integrations/langchain_anthropic/
@@ -24,7 +24,7 @@
 Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
 Requires-Python: <4.0.0,>=3.10.0
 Requires-Dist: anthropic<1.0.0,>=0.120.0
-Requires-Dist: langchain-core<2.0.0,>=1.5.2
+Requires-Dist: langchain-core<2.0.0,>=1.5.4
 Requires-Dist: pydantic<3.0.0,>=2.7.4
 Description-Content-Type: text/markdown
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/langchain_anthropic/_version.py 
new/langchain_anthropic-1.5.5/langchain_anthropic/_version.py
--- old/langchain_anthropic-1.5.4/langchain_anthropic/_version.py       
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_anthropic-1.5.5/langchain_anthropic/_version.py       
2020-02-02 01:00:00.000000000 +0100
@@ -1,3 +1,3 @@
 """Version information for `langchain-anthropic`."""
 
-__version__ = "1.5.4"
+__version__ = "1.5.5"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/langchain_anthropic/chat_models.py 
new/langchain_anthropic-1.5.5/langchain_anthropic/chat_models.py
--- old/langchain_anthropic-1.5.4/langchain_anthropic/chat_models.py    
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_anthropic-1.5.5/langchain_anthropic/chat_models.py    
2020-02-02 01:00:00.000000000 +0100
@@ -36,7 +36,11 @@
     is_data_content_block,
 )
 from langchain_core.messages import content as types
-from langchain_core.messages.ai import InputTokenDetails, UsageMetadata
+from langchain_core.messages.ai import (
+    InputTokenDetails,
+    OutputTokenDetails,
+    UsageMetadata,
+)
 from langchain_core.messages.tool import tool_call_chunk as 
create_tool_call_chunk
 from langchain_core.output_parsers import (
     JsonOutputKeyToolsParser,
@@ -889,6 +893,20 @@
     """BadRequestError raised when input exceeds Anthropic's context limit."""
 
 
+def _raise_if_authentication_error(e: TypeError) -> None:
+    """Re-raise anthropic SDK's missing-credentials `TypeError` with 
guidance."""
+    if "Could not resolve authentication method" in str(e):
+        msg = (
+            "Anthropic authentication failed: no API key or authorization "
+            "credentials were provided. Set the ANTHROPIC_API_KEY environment "
+            "variable, pass api_key=... to ChatAnthropic, or provide "
+            'credentials via default_headers={"Authorization": ...}. If you '
+            "are routing through the LangSmith gateway, set LANGSMITH_GATEWAY "
+            "and LANGSMITH_GATEWAY_API_KEY."
+        )
+        raise TypeError(msg) from e
+
+
 def _handle_anthropic_bad_request(e: anthropic.BadRequestError) -> None:
     """Handle Anthropic BadRequestError."""
     if "prompt is too long" in e.message:
@@ -1593,14 +1611,22 @@
         return {k: v for k, v in payload.items() if v is not None}
 
     def _create(self, payload: dict) -> Any:
-        if "betas" in payload:
-            return self._client.beta.messages.create(**payload)
-        return self._client.messages.create(**payload)
+        try:
+            if "betas" in payload:
+                return self._client.beta.messages.create(**payload)
+            return self._client.messages.create(**payload)
+        except TypeError as e:
+            _raise_if_authentication_error(e)
+            raise
 
     async def _acreate(self, payload: dict) -> Any:
-        if "betas" in payload:
-            return await self._async_client.beta.messages.create(**payload)
-        return await self._async_client.messages.create(**payload)
+        try:
+            if "betas" in payload:
+                return await self._async_client.beta.messages.create(**payload)
+            return await self._async_client.messages.create(**payload)
+        except TypeError as e:
+            _raise_if_authentication_error(e)
+            raise
 
     def _stream(
         self,
@@ -2696,7 +2722,18 @@
     )
     output_tokens = getattr(anthropic_usage, "output_tokens", 0) or 0
 
-    return UsageMetadata(
+    # Reasoning (thinking) tokens are a decomposition of `output_tokens` (not
+    # additive), reported by Anthropic via 
`output_tokens_details.thinking_tokens`.
+    # Older models omit `output_tokens_details` entirely, so guard with 
`getattr`.
+    output_token_details: dict = {
+        "reasoning": getattr(
+            getattr(anthropic_usage, "output_tokens_details", None),
+            "thinking_tokens",
+            None,
+        ),
+    }
+
+    usage_metadata = UsageMetadata(
         input_tokens=input_tokens,
         output_tokens=output_tokens,
         total_tokens=input_tokens + output_tokens,
@@ -2704,3 +2741,13 @@
             **{k: v for k, v in input_token_details.items() if v is not None},
         ),
     )
+
+    filtered_output_token_details = {
+        k: v for k, v in output_token_details.items() if v is not None
+    }
+    if filtered_output_token_details:
+        usage_metadata["output_token_details"] = OutputTokenDetails(
+            **filtered_output_token_details,
+        )
+
+    return usage_metadata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/langchain_anthropic/data/_profiles.py 
new/langchain_anthropic-1.5.5/langchain_anthropic/data/_profiles.py
--- old/langchain_anthropic-1.5.4/langchain_anthropic/data/_profiles.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_anthropic-1.5.5/langchain_anthropic/data/_profiles.py 
2020-02-02 01:00:00.000000000 +0100
@@ -95,57 +95,11 @@
         "tool_call_streaming": True,
     },
     "claude-opus-4-1": {
-        "name": "Claude Opus 4.1 (latest)",
-        "status": "deprecated",
-        "release_date": "2025-08-05",
-        "last_updated": "2025-08-05",
-        "open_weights": False,
-        "max_input_tokens": 200000,
-        "max_output_tokens": 32000,
-        "text_inputs": True,
-        "image_inputs": True,
-        "audio_inputs": False,
-        "pdf_inputs": True,
-        "video_inputs": False,
-        "text_outputs": True,
-        "image_outputs": False,
-        "audio_outputs": False,
-        "video_outputs": False,
-        "reasoning_output": True,
-        "tool_calling": True,
-        "structured_output": True,
-        "attachment": True,
-        "temperature": True,
         "image_url_inputs": True,
-        "pdf_tool_message": True,
-        "image_tool_message": True,
-        "tool_call_streaming": True,
-    },
-    "claude-opus-4-1-20250805": {
-        "name": "Claude Opus 4.1",
-        "status": "deprecated",
-        "release_date": "2025-08-05",
-        "last_updated": "2025-08-05",
-        "open_weights": False,
-        "max_input_tokens": 200000,
-        "max_output_tokens": 32000,
-        "text_inputs": True,
-        "image_inputs": True,
-        "audio_inputs": False,
         "pdf_inputs": True,
-        "video_inputs": False,
-        "text_outputs": True,
-        "image_outputs": False,
-        "audio_outputs": False,
-        "video_outputs": False,
-        "reasoning_output": True,
-        "tool_calling": True,
-        "structured_output": False,
-        "attachment": True,
-        "temperature": True,
-        "image_url_inputs": True,
         "pdf_tool_message": True,
         "image_tool_message": True,
+        "structured_output": True,
         "tool_call_streaming": True,
     },
     "claude-opus-4-5": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/langchain_anthropic/middleware/anthropic_tools.py 
new/langchain_anthropic-1.5.5/langchain_anthropic/middleware/anthropic_tools.py
--- 
old/langchain_anthropic-1.5.4/langchain_anthropic/middleware/anthropic_tools.py 
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_anthropic-1.5.5/langchain_anthropic/middleware/anthropic_tools.py 
    2020-02-02 01:00:00.000000000 +0100
@@ -240,7 +240,9 @@
                 Command for state update or string result.
             """
             # Build args dict for handler methods
-            args: dict[str, Any] = {"path": path}
+            # `old_path` is populated for `_handle_rename`, which reads the 
source
+            # path under that key instead of `path`.
+            args: dict[str, Any] = {"path": path, "old_path": path}
             if file_text is not None:
                 args["file_text"] = file_text
             if old_str is not None:
@@ -742,7 +744,9 @@
                 Command for message update or string result.
             """
             # Build args dict for handler methods
-            args: dict[str, Any] = {"path": path}
+            # `old_path` is populated for `_handle_rename`, which reads the 
source
+            # path under that key instead of `path`.
+            args: dict[str, Any] = {"path": path, "old_path": path}
             if file_text is not None:
                 args["file_text"] = file_text
             if old_str is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_anthropic-1.5.4/pyproject.toml 
new/langchain_anthropic-1.5.5/pyproject.toml
--- old/langchain_anthropic-1.5.4/pyproject.toml        2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_anthropic-1.5.5/pyproject.toml        2020-02-02 
01:00:00.000000000 +0100
@@ -20,11 +20,11 @@
     "Topic :: Scientific/Engineering :: Artificial Intelligence",
 ]
 
-version = "1.5.4"
+version = "1.5.5"
 requires-python = ">=3.10.0,<4.0.0"
 dependencies = [
     "anthropic>=0.120.0,<1.0.0",
-    "langchain-core>=1.5.2,<2.0.0",
+    "langchain-core>=1.5.4,<2.0.0",
     "pydantic>=2.7.4,<3.0.0",
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/tests/unit_tests/middleware/test_anthropic_tools.py
 
new/langchain_anthropic-1.5.5/tests/unit_tests/middleware/test_anthropic_tools.py
--- 
old/langchain_anthropic-1.5.4/tests/unit_tests/middleware/test_anthropic_tools.py
   2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_anthropic-1.5.5/tests/unit_tests/middleware/test_anthropic_tools.py
   2020-02-02 01:00:00.000000000 +0100
@@ -1,13 +1,17 @@
 """Unit tests for Anthropic text editor and memory tool middleware."""
 
+import tempfile
+from pathlib import Path
 from unittest.mock import MagicMock
 
 import pytest
 from langchain_core.messages import SystemMessage, ToolMessage
+from langgraph.prebuilt import ToolRuntime
 from langgraph.types import Command
 
 from langchain_anthropic.middleware.anthropic_tools import (
     AnthropicToolsState,
+    FilesystemClaudeTextEditorMiddleware,
     StateClaudeMemoryMiddleware,
     StateClaudeTextEditorMiddleware,
     _validate_path,
@@ -309,6 +313,85 @@
         assert files.get("/memories/new.txt") is not None
         assert files["/memories/new.txt"]["content"] == ["line1"]
 
+    def test_rename_via_tool_dispatch(self) -> None:
+        """End-to-end: renaming through the actual `file_tool` dispatch.
+
+        Regression test for the dispatch building `args` with the source path
+        under `"path"` while `_handle_rename` read `args["old_path"]`, which
+        raised `KeyError` on every rename command.
+        """
+        middleware = StateClaudeTextEditorMiddleware()
+        state: AnthropicToolsState = {
+            "messages": [],
+            "text_editor_files": {
+                "/notes/old.txt": {
+                    "content": ["hello"],
+                    "created_at": "2025-01-01T00:00:00",
+                    "modified_at": "2025-01-01T00:00:00",
+                }
+            },
+        }
+        (file_tool,) = middleware.tools
+
+        result = file_tool.invoke(
+            {
+                "command": "rename",
+                "path": "/notes/old.txt",
+                "new_path": "/notes/new.txt",
+                "runtime": ToolRuntime(
+                    context=None,
+                    state=state,
+                    config={},
+                    stream_writer=lambda _: None,
+                    tool_call_id="tc-1",
+                    store=None,
+                ),
+            }
+        )
+
+        assert isinstance(result, Command)
+        assert result.update is not None
+        files = result.update["text_editor_files"]
+        assert files["/notes/old.txt"] is None
+        assert files["/notes/new.txt"]["content"] == ["hello"]
+        message = result.update["messages"][0]
+        assert isinstance(message, ToolMessage)
+        assert "renamed" in message.content
+
+
+class TestFilesystemRenameViaToolDispatch:
+    """End-to-end tests for filesystem-backed rename through `file_tool`."""
+
+    def test_rename_via_tool_dispatch(self) -> None:
+        """Regression test mirroring 
`TestFileOperations.test_rename_via_tool_dispatch`
+        for the filesystem-backed middleware, which has its own dispatch 
closure
+        and `_handle_rename` implementation.
+        """
+        with tempfile.TemporaryDirectory() as root:
+            (Path(root) / "old.txt").write_text("hello")
+            middleware = FilesystemClaudeTextEditorMiddleware(root_path=root)
+            (file_tool,) = middleware.tools
+
+            result = file_tool.invoke(
+                {
+                    "command": "rename",
+                    "path": "/old.txt",
+                    "new_path": "/new.txt",
+                    "runtime": ToolRuntime(
+                        context=None,
+                        state={},
+                        config={},
+                        stream_writer=lambda _: None,
+                        tool_call_id="tc-2",
+                        store=None,
+                    ),
+                }
+            )
+
+            assert isinstance(result, Command)
+            assert not (Path(root) / "old.txt").exists()
+            assert (Path(root) / "new.txt").read_text() == "hello"
+
 
 class TestSystemMessageHandling:
     """Test system message handling in wrap_model_call."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_anthropic-1.5.4/tests/unit_tests/test_chat_models.py 
new/langchain_anthropic-1.5.5/tests/unit_tests/test_chat_models.py
--- old/langchain_anthropic-1.5.4/tests/unit_tests/test_chat_models.py  
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_anthropic-1.5.5/tests/unit_tests/test_chat_models.py  
2020-02-02 01:00:00.000000000 +0100
@@ -150,10 +150,6 @@
     llm = ChatAnthropic(model="claude-sonnet-4-5-20250929", 
anthropic_api_key="test")
     assert llm.max_tokens == 64000
 
-    # Test claude-opus-4-1 models
-    llm = ChatAnthropic(model="claude-opus-4-1-20250805", 
anthropic_api_key="test")
-    assert llm.max_tokens == 32000
-
     # Test claude-haiku-4-5 models
     llm = ChatAnthropic(model="claude-haiku-4-5-20251001", 
anthropic_api_key="test")
     assert llm.max_tokens == 64000
@@ -2081,6 +2077,42 @@
     assert result["total_tokens"] == 0
 
 
+def test_usage_metadata_reasoning_tokens() -> None:
+    """Reasoning tokens should be surfaced via 
`output_token_details.reasoning`.
+
+    Anthropic reports these through `output_tokens_details.thinking_tokens` as 
a
+    decomposition of `output_tokens` (not additive).
+    """
+
+    class OutputTokensDetails(BaseModel):
+        thinking_tokens: int = 20
+
+    class UsageWithReasoning(BaseModel):
+        input_tokens: int = 100
+        output_tokens: int = 50
+        output_tokens_details: OutputTokensDetails | None = 
OutputTokensDetails()
+
+    # Case 1: reasoning tokens present
+    result = _create_usage_metadata(UsageWithReasoning())
+    assert result["input_tokens"] == 100
+    assert result["output_tokens"] == 50
+    assert result["total_tokens"] == 150
+    assert result.get("output_token_details") == {"reasoning": 20}
+
+    # Case 2: output_tokens_details explicitly None
+    result = 
_create_usage_metadata(UsageWithReasoning(output_tokens_details=None))
+    assert result["output_tokens"] == 50
+    assert "output_token_details" not in result
+
+    # Case 3: output_tokens_details field absent (older models)
+    class UsageNoDetails(BaseModel):
+        input_tokens: int = 100
+        output_tokens: int = 50
+
+    result = _create_usage_metadata(UsageNoDetails())
+    assert "output_token_details" not in result
+
+
 def test_usage_metadata_cache_creation_ttl() -> None:
     """Test _create_usage_metadata with granular cache_creation TTL fields."""
 
@@ -4567,3 +4599,65 @@
     llm = ChatAnthropic(model=MODEL_NAME)
     assert llm.anthropic_api_url == "https://api.anthropic.com";
     assert llm.anthropic_api_key.get_secret_value() == "provider-key"
+
+
+_MISSING_CREDENTIALS_TYPE_ERROR = TypeError(
+    "Could not resolve authentication method. Expected one of api_key, "
+    "auth_token, or credentials to be set. Or for one of the `X-Api-Key` or "
+    "`Authorization` headers to be explicitly omitted"
+)
+
+
+def _clear_auth_env(monkeypatch: pytest.MonkeyPatch) -> None:
+    monkeypatch.delenv("ANTHROPIC_API_KEY", raising=False)
+    monkeypatch.delenv("LANGSMITH_GATEWAY", raising=False)
+    monkeypatch.delenv("LANGSMITH_GATEWAY_API_KEY", raising=False)
+    monkeypatch.delenv("ANTHROPIC_API_URL", raising=False)
+    monkeypatch.delenv("ANTHROPIC_BASE_URL", raising=False)
+
+
+def test_missing_credentials_error_sync(monkeypatch: pytest.MonkeyPatch) -> 
None:
+    """Missing credentials raise a `TypeError` with LangChain guidance."""
+    _clear_auth_env(monkeypatch)
+    llm = ChatAnthropic(model=MODEL_NAME)
+
+    with (  # noqa: PT012
+        patch.object(llm._client.messages, "create") as mock_create,
+        pytest.raises(TypeError, match="ANTHROPIC_API_KEY") as exc_info,
+    ):
+        mock_create.side_effect = _MISSING_CREDENTIALS_TYPE_ERROR
+        llm.invoke([HumanMessage(content="test")])
+
+    assert exc_info.value.__cause__ is _MISSING_CREDENTIALS_TYPE_ERROR
+
+
+async def test_missing_credentials_error_async(
+    monkeypatch: pytest.MonkeyPatch,
+) -> None:
+    """Missing credentials raise a `TypeError` with LangChain guidance 
(async)."""
+    _clear_auth_env(monkeypatch)
+    llm = ChatAnthropic(model=MODEL_NAME)
+
+    with (  # noqa: PT012
+        patch.object(llm._async_client.messages, "create") as mock_create,
+        pytest.raises(TypeError, match="ANTHROPIC_API_KEY") as exc_info,
+    ):
+        mock_create.side_effect = _MISSING_CREDENTIALS_TYPE_ERROR
+        await llm.ainvoke([HumanMessage(content="test")])
+
+    assert exc_info.value.__cause__ is _MISSING_CREDENTIALS_TYPE_ERROR
+
+
+def test_unrelated_type_error_propagates_unchanged() -> None:
+    """A `TypeError` not about authentication is re-raised as-is."""
+    llm = ChatAnthropic(model=MODEL_NAME)
+    unrelated_error = TypeError("some unrelated client error")
+
+    with (  # noqa: PT012
+        patch.object(llm._client.messages, "create") as mock_create,
+        pytest.raises(TypeError) as exc_info,
+    ):
+        mock_create.side_effect = unrelated_error
+        llm.invoke([HumanMessage(content="test")])
+
+    assert exc_info.value is unrelated_error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_anthropic-1.5.4/uv.lock 
new/langchain_anthropic-1.5.5/uv.lock
--- old/langchain_anthropic-1.5.4/uv.lock       2020-02-02 01:00:00.000000000 
+0100
+++ new/langchain_anthropic-1.5.5/uv.lock       2020-02-02 01:00:00.000000000 
+0100
@@ -343,7 +343,7 @@
 version = "1.3.0"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
-    { name = "typing-extensions" },
+    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = 
"https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz";,
 hash = 
"sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size 
= 29749, upload-time = "2025-05-10T17:42:51.123Z" }
 wheels = [
@@ -552,7 +552,7 @@
 
 [[package]]
 name = "langchain"
-version = "1.3.14"
+version = "1.3.15"
 source = { editable = "../../langchain_v1" }
 dependencies = [
     { name = "langchain-core" },
@@ -581,7 +581,7 @@
     { name = "langchain-perplexity", marker = "extra == 'perplexity'" },
     { name = "langchain-together", marker = "extra == 'together'" },
     { name = "langchain-xai", marker = "extra == 'xai'" },
-    { name = "langgraph", specifier = ">=1.2.5,<1.3.0" },
+    { name = "langgraph", specifier = ">=1.2.11,<1.3.0" },
     { name = "pydantic", specifier = ">=2.7.4,<3.0.0" },
 ]
 provides-extras = ["community", "anthropic", "openai", "azure-ai", 
"google-vertexai", "google-genai", "fireworks", "ollama", "together", 
"mistralai", "huggingface", "groq", "aws", "baseten", "deepseek", "xai", 
"perplexity", "meta"]
@@ -617,7 +617,7 @@
 
 [[package]]
 name = "langchain-anthropic"
-version = "1.5.4"
+version = "1.5.5"
 source = { editable = "." }
 dependencies = [
     { name = "anthropic" },
@@ -690,7 +690,7 @@
 
 [[package]]
 name = "langchain-core"
-version = "1.5.3"
+version = "1.5.4"
 source = { editable = "../../core" }
 dependencies = [
     { name = "jsonpatch" },
@@ -808,7 +808,7 @@
 
 [[package]]
 name = "langgraph"
-version = "1.2.5"
+version = "1.2.11"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "langchain-core" },
@@ -818,9 +818,9 @@
     { name = "pydantic" },
     { name = "xxhash" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/77/9d/7c9ebd17b95569122e2d2e641f535cf086c870d66bb8e59be33cdba856b3/langgraph-1.2.5.tar.gz";,
 hash = 
"sha256:09a3bdec6fdb3228623fc78b6f69a1400d383f66348d0b04d0efb692022cc6ef", size 
= 712532, upload-time = "2026-06-12T20:30:58.498Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/56/0d/c8e7ee98896659e1b6555db0ab115a9ca899844744645d5d894032bab1d7/langgraph-1.2.11.tar.gz";,
 hash = 
"sha256:9ecfe11e50d338b34b15cf4d8a442642de103e8ae6971320efba84e4542eb363", size 
= 725753, upload-time = "2026-08-11T14:00:36.945Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/a2/03/187281cf61845c5a9c397ae6cd9cd73bb54b39435e5575a7b83c853e5b76/langgraph-1.2.5-py3-none-any.whl";,
 hash = 
"sha256:9286bb5def82fc865959c14378fe473518dc097d586225f622f029637a2a4bb9", size 
= 246150, upload-time = "2026-06-12T20:30:57.018Z" },
+    { url = 
"https://files.pythonhosted.org/packages/0a/7f/c5c30e4be99ff821029c7ac872a480676bb179c9f3df85ea3f38d13f86d4/langgraph-1.2.11-py3-none-any.whl";,
 hash = 
"sha256:8bab70de7b2d00b5300fb289bcf38d8b241400f3184c1e95e8ce706fb0e8686b", size 
= 248854, upload-time = "2026-08-11T14:00:35.494Z" },
 ]
 
 [[package]]

Reply via email to