Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langchain-openai for 
openSUSE:Factory checked in at 2026-07-09 22:20:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langchain-openai (Old)
 and      /work/SRC/openSUSE:Factory/.python-langchain-openai.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langchain-openai"

Thu Jul  9 22:20:28 2026 rev:2 rq:1364715 version:1.3.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-langchain-openai/python-langchain-openai.changes
  2026-07-01 16:35:43.019138393 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langchain-openai.new.1991/python-langchain-openai.changes
        2026-07-09 22:21:24.006254837 +0200
@@ -1,0 +2,10 @@
+Thu Jul  9 12:18:44 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 1.3.4:
+  * Suppress spurious pydantic serialization warnings when
+    dumping OpenAI responses (chat models and Azure)
+  * Use asyncio.get_running_loop() instead of the deprecated
+    get_event_loop() in the async client helpers
+- Raise langchain-core requirement to >= 1.4.8
+
+-------------------------------------------------------------------

Old:
----
  langchain_openai-1.3.3.tar.gz

New:
----
  langchain_openai-1.3.4.tar.gz

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

Other differences:
------------------
++++++ python-langchain-openai.spec ++++++
--- /var/tmp/diff_new_pack.aawvmg/_old  2026-07-09 22:21:24.886284897 +0200
+++ /var/tmp/diff_new_pack.aawvmg/_new  2026-07-09 22:21:24.890285035 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-langchain-openai
 #
-# Copyright (c) 2026 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           python-langchain-openai
-Version:        1.3.3
+Version:        1.3.4
 Release:        0
 Summary:        An integration package connecting OpenAI and LangChain
 License:        MIT
@@ -27,13 +27,13 @@
 BuildRequires:  %{python_module pip}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-langchain-core >= 1.4.7
+Requires:       python-langchain-core >= 1.4.8
 Requires:       python-openai >= 2.26.0
 Requires:       python-tiktoken >= 0.7.0
 BuildArch:      noarch
 # SECTION test requirements
 BuildRequires:  %{python_module httpx}
-BuildRequires:  %{python_module langchain-core >= 1.4.7}
+BuildRequires:  %{python_module langchain-core >= 1.4.8}
 BuildRequires:  %{python_module openai >= 2.26.0}
 BuildRequires:  %{python_module pytest-asyncio}
 BuildRequires:  %{python_module tiktoken >= 0.7.0}

++++++ langchain_openai-1.3.3.tar.gz -> langchain_openai-1.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_openai-1.3.3/PKG-INFO 
new/langchain_openai-1.3.4/PKG-INFO
--- old/langchain_openai-1.3.3/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: langchain-openai
-Version: 1.3.3
+Version: 1.3.4
 Summary: An integration package connecting OpenAI and LangChain
 Project-URL: Homepage, 
https://docs.langchain.com/oss/python/integrations/providers/openai
 Project-URL: Documentation, 
https://reference.langchain.com/python/integrations/langchain_openai/
@@ -23,7 +23,7 @@
 Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
 Requires-Python: <4.0.0,>=3.10.0
-Requires-Dist: langchain-core<2.0.0,>=1.4.7
+Requires-Dist: langchain-core<2.0.0,>=1.4.9
 Requires-Dist: openai<3.0.0,>=2.26.0
 Requires-Dist: tiktoken<1.0.0,>=0.7.0
 Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_openai-1.3.3/langchain_openai/_version.py 
new/langchain_openai-1.3.4/langchain_openai/_version.py
--- old/langchain_openai-1.3.3/langchain_openai/_version.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/langchain_openai/_version.py     2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,3 @@
 """Version information for `langchain-openai`."""
 
-__version__ = "1.3.3"
+__version__ = "1.3.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/langchain_openai/chat_models/_client_utils.py 
new/langchain_openai-1.3.4/langchain_openai/chat_models/_client_utils.py
--- old/langchain_openai-1.3.3/langchain_openai/chat_models/_client_utils.py    
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/langchain_openai/chat_models/_client_utils.py    
2020-02-02 01:00:00.000000000 +0100
@@ -550,7 +550,7 @@
             sync_api_key_value = cast(Callable, api_key)
 
             async def async_api_key_wrapper() -> str:
-                return await asyncio.get_event_loop().run_in_executor(
+                return await asyncio.get_running_loop().run_in_executor(
                     None, cast(Callable, api_key)
                 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/langchain_openai/chat_models/azure.py 
new/langchain_openai-1.3.4/langchain_openai/chat_models/azure.py
--- old/langchain_openai-1.3.3/langchain_openai/chat_models/azure.py    
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/langchain_openai/chat_models/azure.py    
2020-02-02 01:00:00.000000000 +0100
@@ -771,7 +771,8 @@
         chat_result = super()._create_chat_result(response, generation_info)
 
         if not isinstance(response, dict):
-            response = response.model_dump()
+            # warnings=False due to 
https://github.com/openai/openai-python/issues/2872
+            response = response.model_dump(warnings=False)
         for res in response["choices"]:
             if res.get("finish_reason", None) == "content_filter":
                 msg = (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/langchain_openai/chat_models/base.py 
new/langchain_openai-1.3.4/langchain_openai/chat_models/base.py
--- old/langchain_openai-1.3.3/langchain_openai/chat_models/base.py     
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/langchain_openai/chat_models/base.py     
2020-02-02 01:00:00.000000000 +0100
@@ -1761,7 +1761,8 @@
             # `parsed` may hold arbitrary Pydantic models from structured 
output.
             # Exclude it from this dump and copy it from the typed response 
below.
             else response.model_dump(
-                exclude={"choices": {"__all__": {"message": {"parsed"}}}}
+                exclude={"choices": {"__all__": {"message": {"parsed"}}}},
+                warnings=False,
             )
         )
         # Sometimes the AI Model calling will get error, we should raise it 
(this is
@@ -4669,7 +4670,10 @@
 
     response_metadata = {
         k: v
-        for k, v in response.model_dump(exclude_none=True, mode="json").items()
+        # warnings=False due to 
https://github.com/openai/openai-python/issues/2872
+        for k, v in response.model_dump(
+            exclude_none=True, mode="json", warnings=False
+        ).items()
         if k
         in (
             "created_at",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_openai-1.3.3/pyproject.toml 
new/langchain_openai-1.3.4/pyproject.toml
--- old/langchain_openai-1.3.3/pyproject.toml   2020-02-02 01:00:00.000000000 
+0100
+++ new/langchain_openai-1.3.4/pyproject.toml   2020-02-02 01:00:00.000000000 
+0100
@@ -20,10 +20,10 @@
     "Topic :: Scientific/Engineering :: Artificial Intelligence",
 ]
 
-version = "1.3.3"
+version = "1.3.4"
 requires-python = ">=3.10.0,<4.0.0"
 dependencies = [
-    "langchain-core>=1.4.7,<2.0.0",
+    "langchain-core>=1.4.9,<2.0.0",
     "openai>=2.26.0,<3.0.0",
     "tiktoken>=0.7.0,<1.0.0",
 ]
@@ -56,7 +56,7 @@
     "langchain>=1.0.0,<2.0.0",
     "langchain-tests>=1.1.9,<2.0.0",
 ]
-lint = ["ruff>=0.13.1,<0.14.0"]
+lint = ["ruff>=0.13.1,<0.16.0"]
 dev = []
 test_integration = [
     "httpx>=0.27.0,<1.0.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/tests/integration_tests/chat_models/conftest.py 
new/langchain_openai-1.3.4/tests/integration_tests/chat_models/conftest.py
--- old/langchain_openai-1.3.3/tests/integration_tests/chat_models/conftest.py  
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/tests/integration_tests/chat_models/conftest.py  
2020-02-02 01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
-"""Shared fixtures for chat-model integration tests.
+"""Shared fixtures and collection hooks for chat-model integration tests.
 
 The `_ChatOpenAICodex` integration tests run under VCR cassette playback in
 CI (`make test_vcr`), but its `_FileChatGPTOAuthTokenProvider` still tries
@@ -17,6 +17,7 @@
 
 import os
 from datetime import datetime, timedelta, timezone
+from pathlib import Path
 from typing import Any
 
 import pytest
@@ -62,15 +63,33 @@
     return None
 
 
[email protected](autouse=True)
-def _skip_codex_live_ci(request: pytest.FixtureRequest) -> None:
-    """Skip Codex tests in CI unless they are replaying VCR cassettes."""
-    if "codex" not in request.module.__name__:
-        return
-    if _vcr_record_mode(request.config) == "none":
+def pytest_collection_modifyitems(
+    config: pytest.Config, items: list[pytest.Item]
+) -> None:
+    """Skip Codex tests in CI unless they are replaying VCR cassettes.
+
+    Applied at collection time so Codex tests are deselected before
+    pytest-recording opens a cassette. An autouse skip fixture would instead
+    fire during test setup, after the `vcr` fixture has already tried (and
+    failed) to open the cassette against CI's missing on-disk token.
+
+    `pytest_collection_modifyitems` hooks receive the whole session's items, so
+    matches are scoped to this conftest's own directory. Otherwise a same-named
+    module collected elsewhere in the session (e.g. the unit `test_codex`
+    module) would be skipped too.
+    """
+    if not os.getenv("CI") or _vcr_record_mode(config) == "none":
         return
-    if os.getenv("CI"):
-        pytest.skip("Codex tests require VCR playback in CI.")
+    here = Path(__file__).parent
+    skip_codex = pytest.mark.skip(reason="Codex tests require VCR playback in 
CI.")
+    for item in items:
+        item_path = getattr(item, "path", None)
+        if item_path is None or here not in Path(str(item_path)).parents:
+            continue
+        module = getattr(item, "module", None)
+        module_name = getattr(module, "__name__", "")
+        if "codex" in module_name:
+            item.add_marker(skip_codex)
 
 
 @pytest.fixture(autouse=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/tests/integration_tests/chat_models/test_base.py 
new/langchain_openai-1.3.4/tests/integration_tests/chat_models/test_base.py
--- old/langchain_openai-1.3.3/tests/integration_tests/chat_models/test_base.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/tests/integration_tests/chat_models/test_base.py 
2020-02-02 01:00:00.000000000 +0100
@@ -111,8 +111,10 @@
     assert isinstance(async_response, AIMessage)
     assert calls["async"] == 1
 
-    with pytest.raises(ValueError):
-        # We do not create a sync callable from an async one
+    with pytest.raises(ValueError, match="Sync client is not available"):
+        # This intentionally records a failed ChatOpenAI run in scheduled 
LangSmith
+        # traces: async API-key callables are valid for async methods, but sync
+        # invocation must fail.
         _ = model.invoke("hello")
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/tests/unit_tests/chat_models/test_azure.py 
new/langchain_openai-1.3.4/tests/unit_tests/chat_models/test_azure.py
--- old/langchain_openai-1.3.3/tests/unit_tests/chat_models/test_azure.py       
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/tests/unit_tests/chat_models/test_azure.py       
2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,13 @@
 """Test Azure OpenAI Chat API wrapper."""
 
 import os
+import warnings
 from unittest import mock
 
+import openai
 import pytest
 from langchain_core.messages import HumanMessage
-from pydantic import SecretStr
+from pydantic import BaseModel, SecretStr
 from typing_extensions import TypedDict
 
 from langchain_openai import AzureChatOpenAI
@@ -282,3 +284,59 @@
     versions = llm.metadata["lc_versions"]
     assert "langchain-core" in versions
     assert "langchain-openai" in versions
+
+
+def test_create_chat_result_avoids_parsed_model_dump_warning() -> None:
+    """Azure structured output must not emit a serializer warning.
+
+    `AzureChatOpenAI._create_chat_result` re-dumps the response to read 
content-filter
+    metadata; with structured output the SDK's `parsed` field holds a model 
that
+    doesn't match its declared type (openai/openai-python#2872).
+    """
+    from openai.lib._parsing._completions import parse_chat_completion
+    from openai.types.chat import ChatCompletion
+    from openai.types.chat.chat_completion import Choice
+    from openai.types.chat.chat_completion_message import ChatCompletionMessage
+
+    class ModelOutput(BaseModel):
+        output: str
+
+    raw_response = ChatCompletion(
+        id="chatcmpl-1",
+        object="chat.completion",
+        created=0,
+        model="gpt-4o-mini",
+        choices=[
+            Choice(
+                index=0,
+                finish_reason="stop",
+                message=ChatCompletionMessage(
+                    role="assistant", content='{"output": "Paris"}'
+                ),
+            )
+        ],
+    )
+    parsed_response = parse_chat_completion(
+        response_format=ModelOutput,
+        input_tools=openai.omit,
+        chat_completion=raw_response,
+    )
+
+    llm = AzureChatOpenAI(  # type: ignore[call-arg]
+        azure_deployment="35-turbo-dev",
+        openai_api_version="2023-05-15",
+        azure_endpoint="my-base-url",
+        api_key=SecretStr("test"),
+    )
+    with warnings.catch_warnings(record=True) as caught_warnings:
+        warnings.simplefilter("always")
+        result = llm._create_chat_result(parsed_response)
+
+    warning_messages = [str(warning.message) for warning in caught_warnings]
+    assert not any(
+        "PydanticSerializationUnexpectedValue" in message
+        for message in warning_messages
+    )
+    assert result.generations[0].message.additional_kwargs["parsed"] == 
ModelOutput(
+        output="Paris"
+    )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_openai-1.3.3/tests/unit_tests/chat_models/test_base.py 
new/langchain_openai-1.3.4/tests/unit_tests/chat_models/test_base.py
--- old/langchain_openai-1.3.3/tests/unit_tests/chat_models/test_base.py        
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/tests/unit_tests/chat_models/test_base.py        
2020-02-02 01:00:00.000000000 +0100
@@ -36,6 +36,7 @@
 from langchain_core.runnables.base import RunnableBinding, RunnableSequence
 from langchain_core.tracers.base import BaseTracer
 from langchain_core.tracers.schemas import Run
+from langchain_core.utils.pydantic import PYDANTIC_VERSION
 from openai.types.responses import (
     ResponseApplyPatchToolCall,
     ResponseApplyPatchToolCallOutput,
@@ -1702,36 +1703,39 @@
 
 
 def test_create_chat_result_avoids_parsed_model_dump_warning() -> None:
+    """Chat Completions structured output must not emit a serializer warning.
+
+    Built via the SDK's own `parse_chat_completion` (the path
+    `client.beta.chat.completions.parse(...)` uses) so the test exercises the 
real
+    `ParsedChatCompletion` typing (openai/openai-python#2872).
+    """
+    from openai.lib._parsing._completions import parse_chat_completion
+    from openai.types.chat import ChatCompletion
+    from openai.types.chat.chat_completion import Choice
+    from openai.types.chat.chat_completion_message import ChatCompletionMessage
+
     class ModelOutput(BaseModel):
         output: str
 
-    class MockParsedMessage(openai.BaseModel):
-        role: Literal["assistant"] = "assistant"
-        content: str = '{"output": "Paris"}'
-        parsed: None = None
-        refusal: str | None = None
-
-    class MockChoice(openai.BaseModel):
-        index: int = 0
-        finish_reason: Literal["stop"] = "stop"
-        message: MockParsedMessage
-
-    class MockChatCompletion(openai.BaseModel):
-        id: str = "chatcmpl-1"
-        object: str = "chat.completion"
-        created: int = 0
-        model: str = OPENAI_TEST_MODEL
-        choices: list[MockChoice]
-        usage: dict[str, int] | None = None
-
-    parsed_response = ModelOutput(output="Paris")
-    response = MockChatCompletion.model_construct(
+    raw_response = ChatCompletion(
+        id="chatcmpl-1",
+        object="chat.completion",
+        created=0,
+        model=OPENAI_TEST_MODEL,
         choices=[
-            MockChoice.model_construct(
-                
message=MockParsedMessage.model_construct(parsed=parsed_response)
+            Choice(
+                index=0,
+                finish_reason="stop",
+                message=ChatCompletionMessage(
+                    role="assistant", content='{"output": "Paris"}'
+                ),
             )
         ],
-        usage={"prompt_tokens": 1, "completion_tokens": 1, "total_tokens": 2},
+    )
+    response = parse_chat_completion(
+        response_format=ModelOutput,
+        input_tools=openai.omit,
+        chat_completion=raw_response,
     )
 
     llm = ChatOpenAI(model=OPENAI_TEST_MODEL)
@@ -1740,8 +1744,82 @@
         result = llm._create_chat_result(response)
 
     warning_messages = [str(warning.message) for warning in caught_warnings]
-    assert not any("field_name='parsed'" in message for message in 
warning_messages)
-    assert result.generations[0].message.additional_kwargs["parsed"] == 
parsed_response
+    assert not any(
+        "PydanticSerializationUnexpectedValue" in message
+        for message in warning_messages
+    )
+    assert result.generations[0].message.additional_kwargs["parsed"] == 
ModelOutput(
+        output="Paris"
+    )
+
+
[email protected](
+    (PYDANTIC_VERSION.major, PYDANTIC_VERSION.minor) < (2, 8),
+    reason=(
+        "Serializing the generic `ParsedResponse` raises a `MockValSer` 
TypeError on "
+        "pydantic<2.8, independent of the warning under test."
+    ),
+)
+def test__construct_lc_result_from_responses_api_avoids_parsed_dump_warning() 
-> None:
+    """Responses API structured output must not emit serializer warnings.
+
+    With `use_responses_api=True` and structured output, the SDK returns a
+    `ParsedResponse` whose output items don't match their declared field/union 
types.
+    Dumping it for response metadata previously emitted a spurious
+    `PydanticSerializationUnexpectedValue` warning (openai/openai-python#2872).
+    """
+    from openai.lib._parsing._responses import parse_response
+
+    class DocumentScoreResult(BaseModel):
+        reasoning: str
+        relevance_score: int
+
+    # Build the object the way `client.responses.parse(text_format=...)` does, 
so the
+    # test exercises the real `ParsedResponse` typing rather than a 
hand-rolled mock.
+    raw_response = Response(
+        id="resp_123",
+        created_at=1234567890,
+        model=OPENAI_TEST_MODEL,
+        object="response",
+        parallel_tool_calls=True,
+        tools=[],
+        tool_choice="auto",
+        output=[
+            ResponseOutputMessage(
+                type="message",
+                id="msg_123",
+                status="completed",
+                role="assistant",
+                content=[
+                    ResponseOutputText(
+                        type="output_text",
+                        text='{"reasoning": "relevant", "relevance_score": 1}',
+                        annotations=[],
+                    )
+                ],
+            )
+        ],
+    )
+    parsed_response = parse_response(
+        text_format=DocumentScoreResult,
+        input_tools=openai.omit,
+        response=raw_response,
+    )
+
+    with warnings.catch_warnings(record=True) as caught_warnings:
+        warnings.simplefilter("always")
+        result = _construct_lc_result_from_responses_api(
+            parsed_response, schema=DocumentScoreResult
+        )
+
+    warning_messages = [str(warning.message) for warning in caught_warnings]
+    assert not any(
+        "PydanticSerializationUnexpectedValue" in message
+        for message in warning_messages
+    )
+    assert result.generations[0].message.additional_kwargs[
+        "parsed"
+    ] == DocumentScoreResult(reasoning="relevant", relevance_score=1)
 
 
 def test_structured_outputs_parser_valid_falsy_response() -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_openai-1.3.3/uv.lock 
new/langchain_openai-1.3.4/uv.lock
--- old/langchain_openai-1.3.3/uv.lock  2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_openai-1.3.4/uv.lock  2020-02-02 01:00:00.000000000 +0100
@@ -601,7 +601,7 @@
 
 [[package]]
 name = "langchain"
-version = "1.3.10"
+version = "1.3.12"
 source = { editable = "../../langchain_v1" }
 dependencies = [
     { name = "langchain-core" },
@@ -665,7 +665,7 @@
 
 [[package]]
 name = "langchain-core"
-version = "1.4.8"
+version = "1.4.9"
 source = { editable = "../../core" }
 dependencies = [
     { name = "jsonpatch" },
@@ -727,7 +727,7 @@
 
 [[package]]
 name = "langchain-openai"
-version = "1.3.3"
+version = "1.3.4"
 source = { editable = "." }
 dependencies = [
     { name = "langchain-core" },
@@ -776,7 +776,7 @@
 
 [package.metadata.requires-dev]
 dev = []
-lint = [{ name = "ruff", specifier = ">=0.13.1,<0.14.0" }]
+lint = [{ name = "ruff", specifier = ">=0.13.1,<0.16.0" }]
 test = [
     { name = "freezegun", specifier = ">=1.2.2,<2.0.0" },
     { name = "langchain", editable = "../../langchain_v1" },
@@ -880,15 +880,15 @@
 
 [[package]]
 name = "langgraph-checkpoint"
-version = "4.1.0"
+version = "4.1.1"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "langchain-core" },
     { name = "ormsgpack" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/02/b4/6005c5dd88ad484fe6235d4c43a0d2cee7e91b08ad85a180985c2662df87/langgraph_checkpoint-4.1.0.tar.gz";,
 hash = 
"sha256:e5bb304e30fc1363ac8fcb5f7dee5ca2185d77fe475b0d01de2c5f91324c2c21", size 
= 181942, upload-time = "2026-05-12T03:33:49.888Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/83/47/886af6f886f0bff2273164a45f008694e48a96ff3cd25ff0228f2aa9480e/langgraph_checkpoint-4.1.1.tar.gz";,
 hash = 
"sha256:6c2bdb530c91f91d7d9c1bd100925d0fc4f498d418c17f3587d1526279482a25", size 
= 184020, upload-time = "2026-05-22T16:57:38.503Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/93/74/d3be2b41955e20ccd624dba5f6fe9d38dcee385ba470a6e13ed86732fc86/langgraph_checkpoint-4.1.0-py3-none-any.whl";,
 hash = 
"sha256:8bc2a0466a20c38b865ce6671b42093fd5c041133f32351cae4222e0eeaf7fb5", size 
= 56047, upload-time = "2026-05-12T03:33:48.548Z" },
+    { url = 
"https://files.pythonhosted.org/packages/bd/b4/71425e3e38be92611300b9cc5e46a5bf98ab23f5ea8a75b73d02a2f1413c/langgraph_checkpoint-4.1.1-py3-none-any.whl";,
 hash = 
"sha256:25d29144b082827218e7bc3f1e9b0566a4bb007895cd6cc26f66a8428739f56e", size 
= 56212, upload-time = "2026-05-22T16:57:37.203Z" },
 ]
 
 [[package]]

Reply via email to