Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langgraph-sdk for 
openSUSE:Factory checked in at 2026-10-15 12:25:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langgraph-sdk (Old)
 and      /work/SRC/openSUSE:Factory/.python-langgraph-sdk.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langgraph-sdk"

Thu Oct 15 12:25:35 2026 rev:7 rq:1384882 version:0.4.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-langgraph-sdk/python-langgraph-sdk.changes    
    2026-10-08 12:00:17.910250560 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langgraph-sdk.new.3698736/python-langgraph-sdk.changes
   2026-10-15 12:25:38.920898128 +0200
@@ -1,0 +2,7 @@
+Thu Oct 15 04:46:41 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 0.4.7:
+  * End a thread stream run only on a root lifecycle event
+  * Order delta channel replay by task path
+
+-------------------------------------------------------------------

Old:
----
  langgraph_sdk-0.4.6.tar.gz

New:
----
  langgraph_sdk-0.4.7.tar.gz

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

Other differences:
------------------
++++++ python-langgraph-sdk.spec ++++++
--- /var/tmp/diff_new_pack.LBsE1C/_old  2026-10-15 12:25:39.787934408 +0200
+++ /var/tmp/diff_new_pack.LBsE1C/_new  2026-10-15 12:25:39.788934450 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-langgraph-sdk
-Version:        0.4.6
+Version:        0.4.7
 Release:        0
 Summary:        SDK for interacting with the LangGraph API
 License:        MIT

++++++ langgraph_sdk-0.4.6.tar.gz -> langgraph_sdk-0.4.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/PKG-INFO 
new/langgraph_sdk-0.4.7/PKG-INFO
--- old/langgraph_sdk-0.4.6/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.5
 Name: langgraph-sdk
-Version: 0.4.6
+Version: 0.4.7
 Summary: SDK for interacting with LangGraph API
 Project-URL: Source, 
https://github.com/langchain-ai/langgraph/tree/main/libs/sdk-py
 Project-URL: Twitter, https://x.com/langchain_oss
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/integration/Dockerfile 
new/langgraph_sdk-0.4.7/integration/Dockerfile
--- old/langgraph_sdk-0.4.6/integration/Dockerfile      2020-02-02 
01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/integration/Dockerfile      2020-02-02 
01:00:00.000000000 +0100
@@ -22,18 +22,23 @@
     "langchain>=1.3.0" \
     "deepagents>=0.6.2"
 
-# Swap the published langgraph *core* for this monorepo's local copy, so the
-# server executes the langgraph under test rather than the latest release.
+# Swap the published langgraph *core* and *checkpoint* for this monorepo's
+# local copies, so the server executes the langgraph under test rather than the
+# latest release.
 # We keep the rest of the base image (langgraph-api, runtime, Go core server)
 # on `latest` — that still surfaces upstream regressions — but the core the
 # server runs is now the PR's, which is what lets this suite catch core
 # regressions (e.g. ensure_config / runtime changes) before they're published.
-# `--no-deps` keeps the base image's already-compatible
-# checkpoint/prebuilt/sdk; we only replace core. The local source comes from
-# the `langgraph_src` additional build context (see docker-compose.yml).
+# Checkpoint goes with core because core can need a checkpoint API from the
+# same release. `--no-deps` keeps the base image's already-compatible
+# prebuilt/sdk. The local sources come from the `checkpoint_src` and
+# `langgraph_src` additional build contexts (see docker-compose.yml).
+COPY --from=checkpoint_src pyproject.toml README.md LICENSE 
/opt/checkpoint-src/
+COPY --from=checkpoint_src langgraph /opt/checkpoint-src/langgraph/
 COPY --from=langgraph_src pyproject.toml README.md LICENSE /opt/langgraph-src/
 COPY --from=langgraph_src langgraph /opt/langgraph-src/langgraph/
-RUN pip install --no-cache-dir --force-reinstall --no-deps /opt/langgraph-src
+RUN pip install --no-cache-dir --force-reinstall --no-deps \
+    /opt/checkpoint-src /opt/langgraph-src
 
 # Project graphs + registration config.
 COPY graph/ /app/graph/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/integration/docker-compose.yml 
new/langgraph_sdk-0.4.7/integration/docker-compose.yml
--- old/langgraph_sdk-0.4.6/integration/docker-compose.yml      2020-02-02 
01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/integration/docker-compose.yml      2020-02-02 
01:00:00.000000000 +0100
@@ -38,16 +38,17 @@
     # see ./Dockerfile. The base image bundles langgraph-api +
     # langgraph_runtime_postgres + langgraph_license + the Go core-server;
     # on top we add graph deps (deepagents), the graph files, and this
-    # monorepo's local langgraph *core* (so the server runs the code under
-    # test, not the released langgraph).
+    # monorepo's local langgraph *core* and *checkpoint* (so the server runs
+    # the code under test, not the released langgraph).
     build:
       context: .
       dockerfile: Dockerfile
       additional_contexts:
-        # The monorepo's local langgraph core (libs/langgraph), installed over
-        # the base image so the server runs the langgraph under test. See the
-        # Dockerfile for why.
+        # The monorepo's local langgraph core (libs/langgraph) and checkpoint
+        # (libs/checkpoint), installed over the base image so the server runs
+        # the langgraph under test. See the Dockerfile for why.
         langgraph_src: ../../langgraph
+        checkpoint_src: ../../checkpoint
     image: langgraph-v3-integration-api:local
     depends_on:
       postgres:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/langgraph_sdk/__init__.py 
new/langgraph_sdk-0.4.7/langgraph_sdk/__init__.py
--- old/langgraph_sdk-0.4.6/langgraph_sdk/__init__.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/langgraph_sdk/__init__.py   2020-02-02 
01:00:00.000000000 +0100
@@ -3,7 +3,7 @@
 from langgraph_sdk.encryption import Encryption
 from langgraph_sdk.encryption.types import DecryptResult, EncryptionContext
 
-__version__ = "0.4.6"
+__version__ = "0.4.7"
 
 __all__ = [
     "Auth",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/langgraph_sdk/_async/stream.py 
new/langgraph_sdk-0.4.7/langgraph_sdk/_async/stream.py
--- old/langgraph_sdk-0.4.6/langgraph_sdk/_async/stream.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/langgraph_sdk/_async/stream.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1972,7 +1972,7 @@
                 # Mark that we have observed an active run so thread.output
                 # knows a run exists (handles reattach without run.start).
                 self._run_seen = True
-            elif phase in ("completed", "failed"):
+            elif _is_root_terminal_lifecycle(event):
                 # Why: interrupts describe current-run state. Clear on terminal
                 # lifecycle so a subsequent run.respond() can't fire against a
                 # stale prior-run interrupt_id. Acquire `_interrupts_lock` so
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/langgraph_sdk/_sync/stream.py 
new/langgraph_sdk-0.4.7/langgraph_sdk/_sync/stream.py
--- old/langgraph_sdk-0.4.6/langgraph_sdk/_sync/stream.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/langgraph_sdk/_sync/stream.py       2020-02-02 
01:00:00.000000000 +0100
@@ -35,7 +35,11 @@
     validate_interleave_channels,
 )
 from langgraph_sdk.stream.subscription import compute_union_filter, 
infer_channel
-from langgraph_sdk.stream.sync_controller import SyncStreamController, 
_SyncSubscription
+from langgraph_sdk.stream.sync_controller import (
+    SyncStreamController,
+    _is_root_terminal_lifecycle,
+    _SyncSubscription,
+)
 from langgraph_sdk.stream.transport import (
     SyncEventStreamHandle,
     SyncProtocolSseTransport,
@@ -1614,7 +1618,7 @@
             phase = data.get("event") if isinstance(data, dict) else None
             if phase in ("started", "running"):
                 self._run_seen = True
-            elif phase in ("completed", "failed"):
+            elif _is_root_terminal_lifecycle(event):
                 self.interrupted = False
                 self.interrupts = []
                 run_done = self._run_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langgraph_sdk-0.4.6/tests/streaming/test_lifecycle_watcher.py 
new/langgraph_sdk-0.4.7/tests/streaming/test_lifecycle_watcher.py
--- old/langgraph_sdk-0.4.6/tests/streaming/test_lifecycle_watcher.py   
2020-02-02 01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/tests/streaming/test_lifecycle_watcher.py   
2020-02-02 01:00:00.000000000 +0100
@@ -15,6 +15,7 @@
 from streaming._events import (
     input_requested_event,
     lifecycle_completed_event,
+    lifecycle_errored_event,
     lifecycle_event,
 )
 from streaming._fake_server import FakeServer, _StreamScript
@@ -115,6 +116,25 @@
     assert thread.interrupts == []
 
 
+async def test_subgraph_completed_event_does_not_end_run():
+    fake = FakeServer()
+    fake.script(
+        [
+            lifecycle_completed_event(seq=0, namespace=["child:1"]),
+            lifecycle_errored_event(seq=1, error="root failed"),
+        ]
+    )
+    asgi = httpx.ASGITransport(app=fake.app)
+    async with httpx.AsyncClient(transport=asgi, base_url="http://test";) as 
raw:
+        threads = ThreadsClient(HttpClient(raw))
+        async with threads.stream(thread_id="t-1", assistant_id="agent") as 
thread:
+            run_done = thread._run_done
+            assert run_done is not None
+            terminal = await asyncio.wait_for(run_done, timeout=2.0)
+    assert terminal.status == "errored", "a subgraph's completed event ended 
the run"
+    assert "root failed" in str(terminal.error)
+
+
 async def test_lifecycle_error_captured_for_output():
     """Lifecycle error terminal state is captured in _run_done with error 
set."""
     fake = FakeServer()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langgraph_sdk-0.4.6/tests/streaming/test_sync_thread_stream.py 
new/langgraph_sdk-0.4.7/tests/streaming/test_sync_thread_stream.py
--- old/langgraph_sdk-0.4.6/tests/streaming/test_sync_thread_stream.py  
2020-02-02 01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/tests/streaming/test_sync_thread_stream.py  
2020-02-02 01:00:00.000000000 +0100
@@ -27,6 +27,7 @@
     checkpoints_event,
     custom_event,
     lifecycle_completed_event,
+    lifecycle_errored_event,
     lifecycle_event,
     lifecycle_started_event,
     message_finish_event,
@@ -475,6 +476,23 @@
     assert fake.stream_request_bodies[1]["since"] == 1
 
 
+def test_sync_subgraph_completed_event_does_not_end_run():
+    fake = SyncFakeServer()
+    fake.script(
+        [
+            lifecycle_completed_event(seq=1, namespace=["child:1"]),
+            lifecycle_errored_event(seq=2, error="root failed"),
+        ]
+    )
+    with httpx.Client(transport=fake.transport, base_url="http://test";) as raw:
+        threads = SyncThreadsClient(SyncHttpClient(raw))
+        with threads.stream(thread_id="existing", assistant_id="agent") as 
thread:
+            terminal = thread._wait_for_run_done()
+
+    assert terminal.status == "errored", "a subgraph's completed event ended 
the run"
+    assert "root failed" in str(terminal.error)
+
+
 def test_sync_threads_stream_accepts_websocket_transport_option():
     with httpx.Client(base_url="http://test";) as raw:
         threads = SyncThreadsClient(SyncHttpClient(raw))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langgraph_sdk-0.4.6/uv.lock 
new/langgraph_sdk-0.4.7/uv.lock
--- old/langgraph_sdk-0.4.6/uv.lock     2020-02-02 01:00:00.000000000 +0100
+++ new/langgraph_sdk-0.4.7/uv.lock     2020-02-02 01:00:00.000000000 +0100
@@ -301,7 +301,7 @@
 
 [[package]]
 name = "langgraph"
-version = "1.2.13"
+version = "1.2.15"
 source = { editable = "../langgraph" }
 dependencies = [
     { name = "langchain-core" },
@@ -385,7 +385,7 @@
 
 [[package]]
 name = "langgraph-checkpoint"
-version = "4.2.0"
+version = "4.3.0"
 source = { editable = "../checkpoint" }
 dependencies = [
     { name = "langchain-core" },

Reply via email to