2b1abc807b
chore: migrate Python type checking to ty ( #8002 )
...
## Summary
- replace Python lint type-checking from mypy to ty across LangGraph
packages
- remove mypy config/cache wiring and mypy-only references
- regenerate uv locks with ty 0.0.43
## Verification
- git diff --check
- make lint_package && make lint_tests in libs/langgraph
- make lint_package && make lint_tests in libs/checkpoint
- make lint_package && make lint_tests in libs/checkpoint-sqlite
- make lint_package && make lint_tests in libs/checkpoint-postgres
- make lint_package && make lint_tests in libs/prebuilt
- make lint_package && make lint_tests in libs/cli
- make lint in libs/sdk-py
- make lint in libs/checkpoint-conformance
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: open-swe[bot] <215916821+open-swe[bot]@users.noreply.github.com>
2026-06-05 10:55:47 -04:00
Nick Hollon and GitHub
054a6f3d8b
release(langgraph): 1.2.4 ( #7991 )
...
Releases langgraph 1.2.4 replacement for the **yanked 1.2.3**.
2026-06-02 13:02:42 -04:00
Nick Hollon and GitHub
83dd61feac
release(langgraph): 1.2.3 ( #7945 )
2026-06-01 14:51:31 -04:00
Nick Hollon and GitHub
312c6d0ac1
feat(langgraph): wire RemoteGraph.interleave to sdk-py interleave_projections ( #7938 )
2026-06-01 12:42:42 -04:00
Nick Hollon and GitHub
68fa011fc9
feat(langgraph): add v3 streaming support to RemoteGraph ( #7927 )
...
## Summary
- Adds `stream_events(version="v3")` and `astream_events(version="v3")`
to `RemoteGraph`, matching the local `CompiledStateGraph` surface and
unblocking polymorphic v3 streaming over `Graph | RemoteGraph`.
- Implementation is a thin adapter
(`libs/langgraph/langgraph/pregel/_remote_run_stream.py`) that wraps the
v3 SDK's `AsyncThreadStream` / `SyncThreadStream` and duck-types
`GraphRunStream` / `AsyncGraphRunStream`. No coupling to local v3 mux
internals.
- `v1` / `v2` paths unchanged. `astream_events(version='v1'|'v2')` still
raises `NotImplementedError` (separate gap).
### Scope decisions baked into this PR
- Unsupported v3 kwargs hard-reject at dispatch with
`NotImplementedError`: `control`, `transformers`, `interrupt_before`,
`interrupt_after`, and any unknown `**kwargs`. Server / SDK don't plumb
these through v3 yet; easy to lift later.
- Sync `interleave()` raises `NotImplementedError` pointing callers at
`astream_events`. Real sync interleave would need drainer threads;
deferred since most sync RemoteGraph callers just iterate raw events.
- Async `interleave()` is best-effort ordering (client receive order),
documented as a divergence from local v3's monotonic stamp ordering.
- Adapter `interrupted` / `interrupts` properties are **non-blocking**
snapshots of the SDK's current state. This differs from local
`(Async)GraphRunStream.interrupted`, which pump-drives the run to
terminal before returning. Callers needing a wait-for-interrupt pattern
should drain a projection (e.g., `interleave('values')`) until the SDK's
paused sentinel fires. Documented in the adapter docstrings.
### Audit of impact
Existing RemoteGraph callers in this org all use the v2 `.stream()` /
`.astream()` path (deepagents production wrapper, langgraph-api test
graphs, langgraph-supervisor TS type guard). **Zero callers** use
`stream_events` / `astream_events` on RemoteGraph today, so the new v3
methods are net-new surface — no risk of breaking existing consumers.
### Out of scope (follow-ups)
- Bumping `libs/langgraph/pyproject.toml`'s `langgraph-sdk` constraint
from `<0.4.0` to `<0.5.0`. Deferred until 0.4.0 publishes to PyPI; dev
resolution unaffected via the editable workspace dep.
- Real `astream_events(version='v1'|'v2')` implementation.
- Server-side plumbing for `control` / `interrupt_before` /
`interrupt_after` on v3 runs.
- Sync `interleave()` via drainer threads.
## Test plan
- [x] \`make test\` in \`libs/langgraph/\`: 1874 passed, 4 skipped (43
new in \`test_remote_graph_v3.py\`)
- [x] \`make lint\` in \`libs/langgraph/\`: ruff + mypy clean
- [x] \`pytest -m integration
tests/integration/test_remote_graph_v3.py\` in \`libs/sdk-py/\` against
the docker stack: 4/4 passed in 1.35s
- [x] Manual smoke: \`RemoteGraph('tools_agent',
url='http://localhost:2024 ').astream_events(..., version='v3')\`
end-to-end against the v3 integration api
- [x] Existing RemoteGraph v2 tests untouched (31 passed, 3 skipped with
docker up)
- [x] Will need rebase after \`langgraph-sdk 0.4.0\` lands on PyPI and
the version constraint is bumped in a separate PR
2026-05-29 17:13:43 -04:00
Sydney Runkle and GitHub
add269632b
chore(langgraph): bump version to 1.2.2 ( #7914 )
...
Patch bump to 1.2.2 following the 1.2.1 release.
2026-05-26 13:59:41 -04:00
Nick Hollon and GitHub
bf7fec0bd1
release(langgraph): 1.2.1 ( #7883 )
...
releasing 1.2.1
Notable changes since 1.2.0:
- feat(langgraph): add `before_builtins` opt-in for stream transformers
(#7882 )
- fix(langgraph): keep tool results out of v3 messages (#7838 )
- chore(deps): bump langsmith from 0.7.31 to 0.8.0 (#7788 )
- chore(deps): bump idna from 3.11 to 3.15 (#7866 )
2026-05-21 14:28:25 -04:00
Sydney Runkle and GitHub
3614e88c58
release: bump alpha packages to official versions ( #7775 )
...
## Summary
Bumps all alpha-versioned packages to their official releases:
- `langgraph`: `1.2.0a7` → `1.2.0`
- `langgraph-checkpoint`: `4.1.0a4` → `4.1.0`
- `langgraph-checkpoint-postgres`: `3.1.0a4` → `3.1.0`
- `langgraph-checkpoint-sqlite`: `3.1.0a1` → `3.1.0`
- `langgraph-prebuilt`: `1.1.0a2` → `1.1.0`
Also removes the `a*` alpha specifiers from cross-dependency pins in
`langgraph`, `checkpoint-postgres`, and `checkpoint-sqlite`, and
regenerates all `uv.lock` files.
2026-05-11 23:27:38 -04:00
Nick Hollon and GitHub
2c04b03f72
chore(langgraph): bump langchain-core to 1.4.0 ( #7767 )
2026-05-11 12:25:30 -07:00
Sydney Runkle and GitHub
125d10052c
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres ( #7701 )
...
- Bumps `langgraph` 1.2.0a6 → 1.2.0a7
- Bumps `langgraph-checkpoint` 4.1.0a3 → 4.1.0a4
- Bumps `langgraph-checkpoint-postgres` 3.1.0a3 → 3.1.0a4
- Bumps min `langgraph-checkpoint` constraint in `langgraph` and
`checkpoint-postgres` to `>=4.1.0a4`
- Refreshes uv locks across the workspace
2026-05-04 15:26:20 -04:00
Nick Hollon and GitHub
35cea28707
release: alpha bump langgraph 1.2.0a6 ( #7697 )
2026-05-04 08:58:57 -04:00
Nick Hollon and GitHub
b82d380634
release: alpha bump prebuilt 1.1.0a2, langgraph 1.2.0a5 ( #7682 )
2026-05-01 13:56:21 -04:00
Nick Hollon and GitHub
85bca24635
release: alpha bump prebuilt 1.1.0a1, langgraph 1.2.0a4 ( #7679 )
2026-05-01 11:55:05 -04:00
Nick Hollon and GitHub
f2bd3224f0
feat(langgraph): dispatch stream_events(version='v3') on Pregel ( #7677 )
2026-05-01 11:30:32 -04:00
Sydney Runkle and GitHub
530fcabfc3
release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres ( #7678 )
...
## Summary
- Bumps `langgraph` 1.2.0a1 → 1.2.0a3
- Bumps `langgraph-checkpoint` 4.1.0a1 → 4.1.0a3
- Bumps `langgraph-checkpoint-postgres` 3.1.0a1 → 3.1.0a3
- Bumps min `langgraph-checkpoint` constraint in `langgraph` to
`>=4.1.0a3`
- Refreshes uv locks across the workspace
(Note: `a2` was already cut from another branch.)
## Test plan
- [ ] CI passes
2026-05-01 11:18:52 -04:00
4a5765dd23
release: alpha for timers ( #7647 )
...
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
Co-authored-by: Sydney Runkle <sydneymarierunkle@gmail.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-04-29 17:49:01 -04:00
5c18bde0f8
feat(langgraph): DeltaChannel: store sentinel in blobs, reconstruct from checkpoint_writes ( #7586 )
...
# DeltaChannel: sentinel-based checkpoint blobs + write-replay
reconstruction
## Summary
`DeltaChannel` is a new fold-reducer channel that stores only a
zero-byte sentinel in checkpoint blobs instead of the full accumulated
value. On restore, the runtime replays ancestor writes through the
reducer to reconstruct state. For long-running threads with large
accumulating state (e.g. message histories), this delivers dramatically
smaller checkpoint blobs with configurable read-depth bounds.
```python
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.channels.delta import DeltaChannel
from langgraph.graph.message import _messages_delta_reducer
class State(TypedDict):
# blob per step: ~60 bytes (sentinel) instead of growing full list
messages: Annotated[list, DeltaChannel(_messages_delta_reducer)]
# bound read depth to 10 steps via periodic snapshots
messages_bounded: Annotated[list, DeltaChannel(_messages_delta_reducer, snapshot_frequency=10)]
```
---
## Storage benchmarks (InMemory, ~400 char/msg)
**Messages blob storage** (`checkpoint_blobs` bytes for the messages
channel):
| turns | add\_messages | delta(inf) | delta(freq=50) | delta(freq=10) |
delta(freq=5) |
|------:|-------------:|-----------:|---------------:|---------------:|--------------:|
| 10 | 91.0 KB | 60 B (1517x) | 60 B (1517x) | 14.4 KB (6x) | 32.6 KB
(3x) |
| 50 | 2.20 MB | 300 B (7347x) | 67.1 KB (33x) | 423 KB (5x) | 864 KB
(3x) |
| 100 | 8.78 MB | 600 B (14636x) | 310 KB (28x) | 1.72 MB (5x) | 3.48 MB
(3x) |
| 250 | 54.80 MB | 1.5 KB (36536x) | 2.09 MB (26x) | 10.87 MB (5x) |
21.84 MB (3x) |
| 500 | 219.19 MB | 3.0 KB (73063x) | 8.56 MB (26x) | 43.67 MB (5x) |
87.50 MB (3x) |
**Total checkpoint storage** (blobs + writes + metadata):
| turns | add\_messages | delta(inf) | delta(freq=50) | delta(freq=10) |
delta(freq=5) |
|------:|-------------:|-----------:|---------------:|---------------:|--------------:|
| 10 | 129.7 KB | 38.7 KB (3.4x) | 38.7 KB (3.4x) | 53.1 KB (2.4x) |
71.2 KB (1.8x) |
| 50 | 2.40 MB | 196 KB (12x) | 263 KB (9x) | 620 KB (3.9x) | 1.06 MB
(2.3x) |
| 100 | 9.18 MB | 394 KB (23x) | 703 KB (13x) | 2.12 MB (4.3x) | 3.87 MB
(2.4x) |
| 250 | 55.79 MB | 987 KB (57x) | 3.07 MB (18x) | 11.86 MB (4.7x) |
22.82 MB (2.4x) |
| 500 | 221.16 MB | 1.98 MB (112x) | 10.53 MB (21x) | 45.64 MB (4.9x) |
89.48 MB (2.5x) |
**Write-phase peak heap**:
| turns | add\_messages | delta(inf) | delta(freq=50) | delta(freq=10) |
delta(freq=5) |
|------:|-------------:|-----------:|---------------:|---------------:|--------------:|
| 10 | 456 KB | 199 KB (2.3x) | 199 KB (2.3x) | 212 KB (2.2x) | 232 KB
(2.0x) |
| 50 | 3.04 MB | 742 KB (4.1x) | 805 KB (3.8x) | 1.21 MB (2.5x) | 1.67
MB (1.8x) |
| 100 | 10.70 MB | 1.41 MB (7.6x) | 1.82 MB (5.9x) | 3.42 MB (3.1x) |
5.25 MB (2.0x) |
| 250 | 60.44 MB | 3.36 MB (18x) | 5.67 MB (11x) | 14.87 MB (4.1x) |
26.31 MB (2.3x) |
**Read-phase avg `get_state` latency** (5 calls, InMemory):
| turns | add\_messages | delta(inf) | delta(freq=50) | delta(freq=10) |
delta(freq=5) |
|------:|-------------:|-----------:|---------------:|---------------:|--------------:|
| 10 | 0.7 ms | 1.1 ms (0.6x) | 1.1 ms (0.6x) | 0.8 ms (0.9x) | 0.6 ms
(1.1x) |
| 50 | 2.7 ms | 5.3 ms (0.5x) | 3.5 ms (0.8x) | 2.7 ms (1.0x) | 2.7 ms
(1.0x) |
| 100 | 5.5 ms | 11.1 ms (0.5x) | 6.0 ms (0.9x) | 5.2 ms (1.1x) | 5.4 ms
(1.0x) |
| 250 | 12.9 ms | 27.2 ms (0.5x) | 13.6 ms (0.9x) | 12.9 ms (1.0x) |
13.0 ms (1.0x) |
**Postgres `get_tuple` read latency** (~100 tok/msg per step):
| steps | full-list | delta(inf) | delta(freq=50) | delta(freq=10) |
delta(freq=5) |
|------:|----------:|-----------:|---------------:|---------------:|--------------:|
| 10 | 0.29 ms | 0.21 ms (1.4x) | 0.19 ms (1.6x) | 0.19 ms (1.5x) | 0.19
ms (1.6x) |
| 50 | 0.19 ms | 0.15 ms (1.3x) | 0.19 ms (1.0x) | 0.22 ms (0.8x) | 0.29
ms (0.7x) |
| 100 | 0.27 ms | 0.17 ms (1.6x) | 0.22 ms (1.2x) | 0.23 ms (1.2x) |
0.21 ms (1.3x) |
| 500 | 0.60 ms | 0.30 ms (2.0x) | 0.66 ms (0.9x) | 0.56 ms (1.1x) |
0.69 ms (0.9x) |
**Takeaway:** `snapshot_frequency=10` matches full-list read latency
while still saving 5x on blob storage and ~4x on total storage.
---
## How it works
### Checkpoint blobs
`checkpoint()` always returns `DELTA_SENTINEL` (a zero-byte msgpack ext
marker) instead of the accumulated value. On restore, the saver's
`_get_channel_writes_history` walks the ancestor chain collecting
`checkpoint_writes` entries and replays them through the reducer:
```python
# blob stored per step: ~1 byte (sentinel)
# vs. full list growing O(N) every step with BinaryOperatorAggregate
```
### Reducer interface
`DeltaChannel` takes a **batch reducer** `(state, list[writes]) ->
state` — all writes for a step arrive in one call, enabling single-pass
implementations:
```python
# ❌ Don't use add_messages directly — it's a binary operator, not a batch reducer
messages: Annotated[list, DeltaChannel(add_messages)] # wrong
# ✅ Use _messages_delta_reducer — single pass, dedup by ID, RemoveMessage support
messages: Annotated[list, DeltaChannel(_messages_delta_reducer)]
# ✅ Or write your own batch reducer for custom types
def my_dict_reducer(state: dict, writes: list[dict]) -> dict:
result = dict(state)
for w in writes:
result.update(w)
return result
files: Annotated[dict, DeltaChannel(my_dict_reducer)]
```
### Snapshot frequency
`snapshot_frequency=N` writes a full `_DeltaSnapshot` blob every N
pregel steps, bounding replay depth regardless of thread length.
Snapshots are eager — written even if the channel had no update that
step, so the depth bound always holds:
```python
# Replay walks at most 10 ancestors before hitting a snapshot
messages: Annotated[list, DeltaChannel(_messages_delta_reducer, snapshot_frequency=10)]
```
### Migration from `BinaryOperatorAggregate`
Pre-existing threads written under `BinaryOperatorAggregate` work
transparently after swapping the annotation — the saver detects a
plain-value ancestor blob and uses it as the reconstruction seed:
```python
# Before: BinaryOperatorAggregate stores full list every step
items: Annotated[list, add_messages]
# After: DeltaChannel — existing checkpoints still readable, new steps use sentinel
items: Annotated[list, DeltaChannel(_messages_delta_reducer)]
```
### Async write-ordering safety
In `durability="async"` mode (default), `put_writes` calls are
fire-and-forget. `AsyncPregelLoop` tracks in-flight `aput_writes`
futures for DeltaChannel channels in `_delta_write_futs` and drains them
via `await asyncio.gather()` in `_checkpointer_put_after_previous`
before `aput()` — ensuring `checkpoint_writes` are durable before the
sentinel blob is committed.
---
## What's in scope
- **`libs/langgraph/langgraph/channels/delta.py`** — `DeltaChannel`
implementation
- **`libs/langgraph/langgraph/graph/message.py`** —
`_messages_delta_reducer` (experimental)
- **`libs/checkpoint/`** — `_get_channel_writes_history` ancestor-walk
API on `BaseCheckpointSaver`, `InMemorySaver` optimized override
- **`libs/checkpoint-postgres/`** — `PostgresSaver` /
`AsyncPostgresSaver` single-roundtrip UNION ALL override
- **`libs/langgraph/langgraph/pregel/`** — `channels_from_checkpoint` /
`create_checkpoint` wiring, async write-ordering safety
---
## Follow-ups
- **Batch reconstruction**: each DeltaChannel field issues its own
`_get_channel_writes_history` call; a single walk collecting all
sentinel channels would reduce roundtrips proportionally to the number
of DeltaChannel fields.
- **Sync write ordering**: `BackgroundExecutor.__exit__` guarantees
completion before `invoke()` returns, but within a run there's no
explicit ordering between `put_writes` and `put`. Two-phase commit for
sync would close this gap.
- **`ShallowPostgresSaver` compatibility**: shallow savers keep only the
latest checkpoint and have no parent chain to walk; DeltaChannel is
currently incompatible and should raise or warn at compile time.
- Updating the writes table w/ delta epoch ids for more efficient reads
- follow up w/ LSD checkpointer implementations to support delta
channel! and update prune
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: ccurme <chester.curme@gmail.com >
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
2026-04-29 17:26:17 -04:00
168674dd2a
chore: update x links to langchain_oss ( #7645 )
...
## Description
Updates the X/Twitter social links to point to the new `@langchain_oss`
account across README badges and Python package metadata.
## Test Plan
- [ ] Verify README badges and package metadata point to
`@langchain_oss` on X
_Opened collaboratively by Mason Daugherty and open-swe._
---------
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com >
Co-authored-by: Mason Daugherty <61371264+mdrxy@users.noreply.github.com >
Co-authored-by: Mason Daugherty <mason@langchain.dev >
2026-04-29 14:02:51 -04:00
Nick Hollon and GitHub
f4388df77f
feat(langgraph): add streaming transformer infrastructure and tests ( #7519 )
2026-04-28 20:29:21 +00:00
Sydney Runkle and GitHub
cb328b57f1
release(prebuilt): 1.0.12, langgraph 1.1.10 ( #7623 )
...
## Summary
- Bumps `langgraph-prebuilt` `1.0.11` → `1.0.12`
- Bumps `langgraph` `1.1.9` → `1.1.10` (requires
`langgraph-prebuilt>=1.0.12`)
- Updates all downstream `uv.lock` files
## Changes since last release
**prebuilt (`1.0.11` → `1.0.12`)**
- fix(prebuilt): hydrate ToolNode state from channels via pregel helpers
(#7594 )
**langgraph (`1.1.8` → `1.1.10`)**
- fix: don't propagate ReplayState to subgraphs on plain resume (#7561 )
2026-04-27 13:11:43 -04:00
Sydney Runkle and GitHub
a529b9bede
chore(langgraph): bump version 1.1.8 -> 1.1.9 ( #7563 )
...
## Summary
- Bumps `langgraph` patch version from `1.1.8` to `1.1.9` in
`libs/langgraph/pyproject.toml`
## Test plan
- [ ] Verify version string is correct in `pyproject.toml`
- [ ] Confirm release workflow triggers on merge
2026-04-21 09:38:58 -04:00
Eugene Yurtsev and GitHub
4956134a37
release(langgraph): 1.1.8 ( #7545 )
...
releasing 1.1.8
2026-04-17 19:41:13 +00:00
Eugene Yurtsev and GitHub
d194c18c06
release(langgraph): 1.1.7 ( #7540 )
...
release langgraph 1.1.7
2026-04-17 15:19:18 +00:00
Eugene Yurtsev and GitHub
2ff294af77
release(langgraph): 1.1.7a2 ( #7511 )
...
Release 1.1.7a2
2026-04-14 16:55:35 +00:00
4c67f84016
chore: allow passing some metadata only for tracing purposes ( #7383 )
...
Allows us to put some more information for tracing purposes (e.g.,
ls_integration) without dumping it into the streaming APIs (good for
performance)
Move some other metadata into tracing only since it's not needed in
streaming APIs
---------
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com >
2026-04-14 09:58:24 -04:00
Eugene Yurtsev and GitHub
b442bf802a
release(langgraph): 1.1.7a1 ( #7476 )
...
Adding graph life cycle callbacks
2026-04-10 21:12:03 +00:00
Sydney Runkle and GitHub
c3ba590079
release: langgraph 1.1.6 ( #7407 )
2026-04-03 14:57:24 -04:00
Sydney Runkle and GitHub
4705248c5b
release: prebuilt 1.0.9 and langgraph 1.1.5 ( #7401 )
2026-04-03 14:01:24 +00:00
Eugene Yurtsev and GitHub
5c9c1d598d
release(langgraph): 1.1.4 ( #7356 )
...
1.1.4
2026-03-31 08:48:44 -04:00
Quanzheng Long and GitHub
7031421cb0
release(langgraph): 1.1.3 ( #7215 )
...
- [x] **Add tests and docs**:NA
- [x] **Lint and test**:
Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to `pyproject.toml` files (even
optional ones) unless they are **required** for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
2026-03-17 18:17:48 -07:00
Sydney Runkle and GitHub
56834787eb
release(langgraph): 1.1.2 ( #7135 )
2026-03-12 13:07:16 -04:00
Sydney Runkle and GitHub
ed540155e3
release(langgraph): 1.1.1 ( #7120 )
2026-03-11 18:10:09 -04:00
Sydney Runkle and GitHub
3330ccdea4
release(langgraph): 1.1 ( #7102 )
...
exciting!
relnotes preview:
# LangGraph 1.1.0 Release Notes
## Type-Safe Streaming & Invoke
LangGraph 1.1 introduces `version="v2"` — a new opt-in streaming format
that brings full type safety to `stream()`, `astream()`, `invoke()`, and
`ainvoke()`.
### What's changing
**v1 (default, unchanged):** `stream()` yields bare tuples like
`(stream_mode, data)` or just `data`. `invoke()` returns a plain `dict`.
Interrupts are mixed into the output dict under `"__interrupt__"`.
**v2 (opt-in):** `stream()` yields strongly-typed `StreamPart` dicts
with `type`, `ns`, `data`, and (for values) `interrupts` fields.
`invoke()` returns a `GraphOutput` object with `.value` and
`.interrupts` attributes. When your state schema is a Pydantic model or
dataclass, outputs are automatically coerced to the correct type.
### `invoke()` / `ainvoke()` with `version="v2"`
```python
from langgraph.types import GraphOutput
result = graph.invoke({"input": "hello"}, version="v2")
# result is a GraphOutput, not a dict
assert isinstance(result, GraphOutput)
result.value # your output — dict, Pydantic model, or dataclass
result.interrupts # tuple[Interrupt, ...], empty if none occurred
```
With a non-`"values"` stream mode, `invoke(..., stream_mode="updates",
version="v2")` returns `list[StreamPart]` instead of `list[tuple]`.
### `stream()` / `astream()` with `version="v2"`
```python
for part in graph.stream({"input": "hello"}, version="v2"):
if part["type"] == "values":
part["data"] # OutputT — full state
part["interrupts"] # tuple[Interrupt, ...]
elif part["type"] == "updates":
part["data"] # dict[str, Any]
elif part["type"] == "messages":
part["data"] # tuple[BaseMessage, dict]
elif part["type"] == "custom":
part["data"] # Any
elif part["type"] == "tasks":
part["data"] # TaskPayload | TaskResultPayload
elif part["type"] == "debug":
part["data"] # DebugPayload
```
Each stream mode has its own `TypedDict` — `ValuesStreamPart`,
`UpdatesStreamPart`, `MessagesStreamPart`, `CustomStreamPart`,
`CheckpointStreamPart`, `TasksStreamPart`, `DebugStreamPart` — all
importable from `langgraph.types`. The union type `StreamPart` is a
discriminated union on `part["type"]`, enabling full type narrowing in
editors and type checkers.
### Pydantic & dataclass output coercion
When your graph's state schema is a Pydantic model or dataclass,
`version="v2"` automatically coerces outputs to the declared type:
```python
from pydantic import BaseModel
class MyState(BaseModel):
answer: str
count: int
graph = StateGraph(MyState)
# ... build graph ...
compiled = graph.compile()
result = compiled.invoke({"answer": "", "count": 0}, version="v2")
assert isinstance(result.value, MyState) # not a dict!
```
### Backward compatibility
- **Default is still `version="v1"`** — existing code works without
changes.
- To make migration easier, `GraphOutput` supports old-style best-effort
access to graph values and interrupts. Dict-style access
(`result["key"]`, `"key" in result`, `result["__interrupt__"]`) still
works and delegates to `result.value` / `result.interrupts` under the
hood. However, this is **deprecated** and emits a
`LangGraphDeprecatedSinceV11` warning. It will be removed in v3.0 —
migrate to `result.value` and `result.interrupts` at your convenience.
```python
result = graph.invoke({"input": "hello"}, version="v2")
# Old style — still works, but deprecated
result["input"] # delegates to result.value["input"]
result["__interrupt__"] # delegates to result.interrupts
"input" in result # delegates to "input" in result.value
# New style — preferred
result.value["input"]
result.interrupts
```
## Migration Guide
1. **No action required** — `version="v1"` remains the default. All
existing code continues to work.
2. **Adopt v2 incrementally** — Add `version="v2"` to individual
`invoke()`/`stream()` calls to get typed outputs.
3. **Use typed imports** — Import `GraphOutput`, `StreamPart`, and
individual part types from `langgraph.types` for type-safe code.
2026-03-10 12:41:30 +00:00
William FH and GitHub
cdda595e6e
release(langgraph) 1.0.10 ( #6967 )
2026-02-27 13:00:05 -08:00
William FH and GitHub
a04ec5d6f0
release: Candidate ( #6947 )
2026-02-26 12:09:34 -08:00
Sydney Runkle and GitHub
73cebea3c2
release: langgraph + prebuilt ( #6875 )
2026-02-19 13:12:01 -05:00
4eb1766b58
chore(deps): bump the all-dependencies group in /libs/langgraph with 6 updates ( #6815 )
...
Bumps the all-dependencies group in /libs/langgraph with 6 updates:
| Package | From | To |
| --- | --- | --- |
| [langchain-core](https://github.com/langchain-ai/langchain ) | `1.2.7`
| `1.2.12` |
| [syrupy](https://github.com/syrupy-project/syrupy ) | `5.0.0` | `5.1.0`
|
| [uvloop](https://github.com/MagicStack/uvloop ) | `0.21.0beta1` |
`0.22.1` |
| [pyperf](https://github.com/psf/pyperf ) | `2.9.0` | `2.10.0` |
| [redis](https://github.com/redis/redis-py ) | `7.1.0` | `7.1.1` |
| [ruff](https://github.com/astral-sh/ruff ) | `0.14.13` | `0.15.1` |
Updates `langchain-core` from 1.2.7 to 1.2.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases ">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.2.12</h2>
<p>Changes since langchain-core==1.2.11</p>
<p>release(core): 1.2.12 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35192 ">#35192</a>)
fix(core): fix setting <code>ChatGeneration.text</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35191 ">#35191</a>)</p>
<h2>langchain-core==1.2.11</h2>
<p>Changes since langchain-core==1.2.10</p>
<p>release(core): 1.2.11 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35144 ">#35144</a>)
fix(openai): sanitize urls when counting tokens in images (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35143 ">#35143</a>)
chore(core): clean up docstring mismatch and redundant logic in
langchain-core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35064 ">#35064</a>)
fix(core): replace bare except with Exception in tracer (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35138 ">#35138</a>)</p>
<h2>langchain-core==1.2.10</h2>
<p>Changes since langchain-core==1.2.9</p>
<p>release(core): 1.2.10 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35136 ">#35136</a>)
chore(deps): bump the langchain-deps group across 3 directories with 40
updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35129 ">#35129</a>)
chore(deps): bump the langchain-deps group across 3 directories with 11
updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35121 ">#35121</a>)
feat(core): add ContextOverflowError, raise in anthropic and openai (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35099 ">#35099</a>)
feat(model-profiles): add <code>text_inputs</code> and
<code>text_outputs</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35084 ">#35084</a>)
feat(core): count tokens from tool schemas in
<code>count_tokens_approximately</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35098 ">#35098</a>)
docs(core): add missing <code>name</code> docstring for
<code>RunnableSerializable</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35088 ">#35088</a>)</p>
<h2>langchain-core==1.2.9</h2>
<p>Changes since langchain-core==1.2.8</p>
<p>release(core): 1.2.9 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35025 ">#35025</a>)
fix(core): adjust cap when scaling approximate token counts (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35017 ">#35017</a>)
revert: precompile hex color regex pattern at module level (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35016 ">#35016</a>)
chore: add <code>make type</code> target (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35015 ">#35015</a>)
revert: "chore: add typing target in <code>Makefile</code>"
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35013 ">#35013</a>)
chore: add typing target in <code>Makefile</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35012 ">#35012</a>)
fix(core): apply cap when scaling approximate token counts (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35005 ">#35005</a>)
feat(core): allow scaling by reported usage when counting tokens
approximately (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34996 ">#34996</a>)
test(core): increase <code>delta_time</code> for flaky test (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34982 ">#34982</a>)
chore: enrich <code>pyproject.toml</code> files (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34980 ">#34980</a>)</p>
<h2>langchain-core==1.2.8</h2>
<p>Changes since langchain-core==1.2.7</p>
<p>release(core): 1.2.8 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34975 ">#34975</a>)
docs(core): add examples for <code>pretty_repr</code>,
<code>pretty_print</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34968 ">#34968</a>)
docs(core): use proper admonition for <code>get_buffer_string</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34967 ">#34967</a>)
docs: add usage examples to core classes (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34841 ">#34841</a>)
chore(core): fix docstring format (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34966 ">#34966</a>)
chore(deps): bump the uv group across 20 directories with 3 updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34941 ">#34941</a>)
docs: add example to create_message function docstring (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34851 ">#34851</a>)
docs(core): clarify <a
href="https://github.com/tool "><code>@tool</code></a> decorator
argument and return type requirements (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34860 ">#34860</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b06716fb879f0d656ce4d1dad4a9710a61e8ec1e "><code>b06716f</code></a>
release(core): 1.2.12 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35192 ">#35192</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/16cabfa212782d03b00e08658fb3e74160a1dd45 "><code>16cabfa</code></a>
fix(core): fix setting <code>ChatGeneration.text</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35191 ">#35191</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8f859bd91f122b532689db199f69a6464a1bf7ef "><code>8f859bd</code></a>
release(huggingface): 1.2.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35182 ">#35182</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/19ddd42891514aba6d2c92cd32a915e7bb4b7b31 "><code>19ddd42</code></a>
fix(ollama): raise error when clients are not initialized (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35185 ">#35185</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/a50d86c353bdf611bd0b908d5fc3d737086dba98 "><code>a50d86c</code></a>
docs(langchain-classic): clarify MultiVectorRetriever usage (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35053 ">#35053</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/f89e30eb131d48c5354dd98c068a229b4c585f2d "><code>f89e30e</code></a>
chore(huggingface): version bump for huggingface-hub and transformers
deps (#...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/6ac12b330a5c4912c37aa3bd888bc086d5d387f7 "><code>6ac12b3</code></a>
chore: bump pillow from 11.3.0 to 12.1.1 in /libs/partners/openai (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35177 ">#35177</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/d41dedae978dfd4e4ee82d57fc1f0c530d827b90 "><code>d41deda</code></a>
fix(langchain-classic): validate ensemble retriever weights (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35078 ">#35078</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/9d0bd8376cdd19dc19ac34d15a34dabe94361d8b "><code>9d0bd83</code></a>
chore: bump pillow from 11.3.0 to 12.1.1 in /libs/partners/perplexity
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35176 ">#35176</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/f22f5d5d673d2db5dc8a68991cdc063664c6f96b "><code>f22f5d5</code></a>
chore(deps): bump pillow from 11.3.0 to 12.1.1 in /libs/langchain (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35175 ">#35175</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.2.7...langchain-core==1.2.12 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `syrupy` from 5.0.0 to 5.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/releases ">syrupy's
releases</a>.</em></p>
<blockquote>
<h2>v5.1.0</h2>
<h1><a
href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0 ">5.1.0</a>
(2026-01-25)</h1>
<h3>Features</h3>
<ul>
<li>add serializer plugin system; plugins for data models (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1062 ">#1062</a>)
(<a
href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a ">df9bc8f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md ">syrupy's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0 ">5.1.0</a>
(2026-01-25)</h1>
<h3>Features</h3>
<ul>
<li>add serializer plugin system; plugins for data models (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1062 ">#1062</a>)
(<a
href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a ">df9bc8f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/7096efdee61a8e1bc47492bdd0bc860766df40e9 "><code>7096efd</code></a>
chore(release): 5.1.0 [skip ci]</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/07aa00dd48d65e74814cec863b5f236e09afb464 "><code>07aa00d</code></a>
chore(deps): update dependency attrs to v25 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1063 ">#1063</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/1f29ae061e9557e205e50fb2f9971ee95c4bd08e "><code>1f29ae0</code></a>
docs: add bwrob as a contributor for code (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1064 ">#1064</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a "><code>df9bc8f</code></a>
feat: add serializer plugin system; plugins for data models (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1062 ">#1062</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/841257deaf598df7c3d154b8e2d694f8bb7e5055 "><code>841257d</code></a>
chore(deps): update dependency coverage to v7.13.1 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1061 ">#1061</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/2d8dfa7f7bb2a5f7c0210107dbb65b62a615d434 "><code>2d8dfa7</code></a>
chore(deps): update codecov/codecov-action action to v5.5.2 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1056 ">#1056</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/f5f9ef77027983d3b62d8cc5bfc3a9ef058fe509 "><code>f5f9ef7</code></a>
chore(deps): update dependency debugpy to v1.8.18 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1057 ">#1057</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/eaeb6ae11f57aa3e595d4c45e7be4a3ed2d66dfc "><code>eaeb6ae</code></a>
chore(deps): update dependency pytest to v9.0.2 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1055 ">#1055</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/263b23b768ef761c3f7e1faa0671b0709c1887b1 "><code>263b23b</code></a>
chore(deps): update python docker tag to v3.14.1 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1054 ">#1054</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/a0dd77b023fee34ff0968a822e0d0740c9c7fb93 "><code>a0dd77b</code></a>
chore(deps): update actions/checkout action to v6.0.1 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1053 ">#1053</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `uvloop` from 0.21.0beta1 to 0.22.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/MagicStack/uvloop/releases ">uvloop's
releases</a>.</em></p>
<blockquote>
<h2>v0.22.1</h2>
<p>This is identical to 0.22.0, re-ran with CI fixes</p>
<h2>v0.22.0</h2>
<h1>Changes</h1>
<ul>
<li>
<p>Fixes for Python 3.14 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/638 ">#638</a>)
(by <a href="https://github.com/graingert "><code>@graingert</code></a>
<a href="https://github.com/hroncok "><code>@hroncok</code></a> <a
href="https://github.com/paulocheque "><code>@paulocheque</code></a> <a
href="https://github.com/fantix "><code>@fantix</code></a> in 46456b6a
for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/637 ">#637</a>)</p>
</li>
<li>
<p>Add free-threading support (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/693 ">#693</a>)
(by <a
href="https://github.com/kumaraditya303 "><code>@kumaraditya303</code></a>
in 286b3707 for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/642 ">#642</a>)</p>
</li>
</ul>
<h1>Fixes</h1>
<ul>
<li>
<p>Use Cython <code>enum</code> for <code>__PREALLOCED_BUFS</code> (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/634 ">#634</a>)
(by <a href="https://github.com/jakirkham "><code>@jakirkham</code></a>
in 7bb12a17 for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/634 ">#634</a>)</p>
</li>
<li>
<p>test: fix getaddrinfo test (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/663 ">#663</a>)
(by <a href="https://github.com/fantix "><code>@fantix</code></a> in
56807922 for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/663 ">#663</a>)</p>
</li>
<li>
<p>test: fix task name for Python 3.13.3/3.14 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/662 ">#662</a>)
(by <a href="https://github.com/cjwatson "><code>@cjwatson</code></a> in
96b7ed31 for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/662 ">#662</a>)</p>
</li>
</ul>
<h2>v0.21.0</h2>
<h1>Changes</h1>
<ul>
<li>Add cleanup_socket param on create_unix_server()
(<a
href="https://redirect.github.com/MagicStack/uvloop/issues/623 ">#623</a>)
(by <a href="https://github.com/fantix "><code>@fantix</code></a> in
d6114d2)</li>
</ul>
<h1>Fixes</h1>
<ul>
<li>
<p>Use cythonized SO_REUSEPORT rather than the unwrapped native one. (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/609 ">#609</a>)
(by <a href="https://github.com/ptribble "><code>@ptribble</code></a> in
4083a94e for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/550 ">#550</a>)</p>
</li>
<li>
<p>UDP errors should result in protocol.error_received (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/601 ">#601</a>)
(by <a
href="https://github.com/jensbjorgensen "><code>@jensbjorgensen</code></a>
in 3c3bbeff)</p>
</li>
<li>
<p>Updates for Cython3 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/587 ">#587</a>)
(by <a
href="https://github.com/alan-brooks "><code>@alan-brooks</code></a> in
3fba9fab for <a
href="https://redirect.github.com/MagicStack/uvloop/issues/587 ">#587</a>)</p>
</li>
<li>
<p>Test with Python 3.13 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/610 ">#610</a>)
(by <a
href="https://github.com/edgarrmondragon "><code>@edgarrmondragon</code></a>
in fb5a139)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/MagicStack/uvloop/commit/74f4c96d3fc5281b1820491d2568de771ea7851b "><code>74f4c96</code></a>
uvloop 0.22.1</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/321d345bdadd4d9f244a22ab9778a66d6cdd7f4f "><code>321d345</code></a>
ci: bump pypa/gh-action-pypi-publish</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/3cf6b44fb39e0a865c812b8070fc8af640750476 "><code>3cf6b44</code></a>
uvloop 0.22.0</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/e4d569e244ba1c44305254a89e1abb7484759f73 "><code>e4d569e</code></a>
ci: use native ubuntu-24.04-arm</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/d9fa054cf882615f7810081ed2bbb7820544371d "><code>d9fa054</code></a>
ci: fix test and release workflow</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/7effa903f6f4e6d66a6f330afac63079135826ec "><code>7effa90</code></a>
ci: fix artifact handling</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/286b370702109f84f60cfe80deae9abf8da2a2e4 "><code>286b370</code></a>
add free-threading support (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/693 ">#693</a>)</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/46456b6abd7e98b70e1dd38252272a98533cc75b "><code>46456b6</code></a>
Fixes for Python 3.14 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/638 ">#638</a>)</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/96b7ed31afaf02800d779a395591da6a2c8c50e1 "><code>96b7ed3</code></a>
test: fix task name for Python 3.13.3/3.14 (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/662 ">#662</a>)</li>
<li><a
href="https://github.com/MagicStack/uvloop/commit/56807922f847ddac231a53d5b03eef70092b987c "><code>5680792</code></a>
test: fix getaddrinfo test (<a
href="https://redirect.github.com/MagicStack/uvloop/issues/663 ">#663</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/MagicStack/uvloop/compare/v0.21.0beta1...v0.22.1 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `pyperf` from 2.9.0 to 2.10.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/pyperf/releases ">pyperf's
releases</a>.</em></p>
<blockquote>
<h2>2.10.0</h2>
<h2>What's Changed</h2>
<ul>
<li>ReadTheDocs: use latest Ubuntu and Python by <a
href="https://github.com/vstinner "><code>@vstinner</code></a> in <a
href="https://redirect.github.com/psf/pyperf/pull/218 ">psf/pyperf#218</a></li>
<li>Add BSD support for track-memory by <a
href="https://github.com/lcheylus "><code>@lcheylus</code></a> in <a
href="https://redirect.github.com/psf/pyperf/pull/220 ">psf/pyperf#220</a></li>
<li>Docs: Update minimum Python version. Add matching badge by <a
href="https://github.com/moreati "><code>@moreati</code></a> in <a
href="https://redirect.github.com/psf/pyperf/pull/226 ">psf/pyperf#226</a></li>
<li>Remove fallbacks for unsupported Python versions (< 3.9) by <a
href="https://github.com/moreati "><code>@moreati</code></a> in <a
href="https://redirect.github.com/psf/pyperf/pull/228 ">psf/pyperf#228</a></li>
<li>Setup Dependabot for Github actions, bump checkout and setup-python
actions by <a
href="https://github.com/maurycy "><code>@maurycy</code></a> in <a
href="https://redirect.github.com/psf/pyperf/pull/229 ">psf/pyperf#229</a></li>
<li>Recognise CPython as a JIT implementation by <a
href="https://github.com/Fidget-Spinner "><code>@Fidget-Spinner</code></a>
in <a
href="https://redirect.github.com/psf/pyperf/pull/231 ">psf/pyperf#231</a></li>
<li>Prepare 2.10.0 release by <a
href="https://github.com/Fidget-Spinner "><code>@Fidget-Spinner</code></a>
in <a
href="https://redirect.github.com/psf/pyperf/pull/232 ">psf/pyperf#232</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lcheylus "><code>@lcheylus</code></a>
made their first contribution in <a
href="https://redirect.github.com/psf/pyperf/pull/220 ">psf/pyperf#220</a></li>
<li><a href="https://github.com/maurycy "><code>@maurycy</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/pyperf/pull/229 ">psf/pyperf#229</a></li>
<li><a
href="https://github.com/Fidget-Spinner "><code>@Fidget-Spinner</code></a>
made their first contribution in <a
href="https://redirect.github.com/psf/pyperf/pull/231 ">psf/pyperf#231</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/psf/pyperf/compare/2.9.0...2.10.0 ">https://github.com/psf/pyperf/compare/2.9.0...2.10.0 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/pyperf/blob/main/doc/changelog.rst ">pyperf's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.10.0 (2026-02-07)</h2>
<ul>
<li>Feature: JIT builds of CPython are now recognized as a JIT
implementation by :func:<code>perf.python_has_jit</code>.
Patch by Ken Jin.</li>
<li>Feature: Memory tracker now supports BSD.
Patch by Laurent Cheylus and Victor Stinner.</li>
<li>Maintenance: <code>pyperf</code> now requires Python 3.9 or higher.
Patch by Alex Willmer.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/pyperf/commit/ddb748a44d766dac28b2b1fa570c64503bbec82c "><code>ddb748a</code></a>
Prepare 2.10.0 release (<a
href="https://redirect.github.com/psf/pyperf/issues/232 ">#232</a>)</li>
<li><a
href="https://github.com/psf/pyperf/commit/8f6e7d037a890dc26c01713a279d06ae5694123e "><code>8f6e7d0</code></a>
Recognise CPython as a JIT implementation (<a
href="https://redirect.github.com/psf/pyperf/issues/231 ">#231</a>)</li>
<li><a
href="https://github.com/psf/pyperf/commit/ff3ba746161edae3d514635e6a722ce0fb3efbd3 "><code>ff3ba74</code></a>
Setup Dependabot for Github actions, bump checkout and setup-python
actions (...</li>
<li><a
href="https://github.com/psf/pyperf/commit/188810f42e79755ea43c5f85a55d7757c31f5ce9 "><code>188810f</code></a>
Remove fallbacks for unsupported Python versions (< 3.9) (<a
href="https://redirect.github.com/psf/pyperf/issues/228 ">#228</a>)</li>
<li><a
href="https://github.com/psf/pyperf/commit/e6675c6208b15c7409745dfd19d206e7f03844f1 "><code>e6675c6</code></a>
Docs: Update minimum Python version. Add matching badge (<a
href="https://redirect.github.com/psf/pyperf/issues/226 ">#226</a>)</li>
<li><a
href="https://github.com/psf/pyperf/commit/d2cc8031ef2ab8e398ff01ffa545d07cf6adfdf1 "><code>d2cc803</code></a>
Add BSD support for track-memory (<a
href="https://redirect.github.com/psf/pyperf/issues/220 ">#220</a>)</li>
<li><a
href="https://github.com/psf/pyperf/commit/2fcee6089886e15fdc23cbde820ae1cc582610ea "><code>2fcee60</code></a>
ReadTheDocs: use latest Ubuntu and Python (<a
href="https://redirect.github.com/psf/pyperf/issues/218 ">#218</a>)</li>
<li>See full diff in <a
href="https://github.com/psf/pyperf/compare/2.9.0...2.10.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `redis` from 7.1.0 to 7.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/redis-py/releases ">redis's
releases</a>.</em></p>
<blockquote>
<h2>7.1.1</h2>
<h1>Changes</h1>
<h2>🧪 Experimental Features</h2>
<ul>
<li>Added initial health check policies, refactored add_database method
(<a
href="https://redirect.github.com/redis/redis-py/issues/3906 ">#3906</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>Disabled SCH in MultiDBClient underlying clients by default (<a
href="https://redirect.github.com/redis/redis-py/issues/3938 ">#3938</a>)</li>
<li>Added logging for MultiDBClients (<a
href="https://redirect.github.com/redis/redis-py/issues/3865 ">#3865</a>
<a
href="https://redirect.github.com/redis/redis-py/issues/3896 ">#3896</a>)</li>
</ul>
<p>We'd like to thank all the contributors who worked on this release!
<a
href="https://github.com/vladvildanov "><code>@vladvildanov</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/redis/redis-py/commit/7351a1e2d68f386ce6079e274df6bf2ae1406188 "><code>7351a1e</code></a>
Updating lib version to 7.1.1</li>
<li><a
href="https://github.com/redis/redis-py/commit/b81c856c6b9f965cc5e4bb5fdcb2d3f323687357 "><code>b81c856</code></a>
Disabled SCH in MultiDBClient underlying clients (<a
href="https://redirect.github.com/redis/redis-py/issues/3938 ">#3938</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/0438784ff41c0f14c6dd78682b9a8d9149a7b33b "><code>0438784</code></a>
Added initial health check policies, refactored add_database method (<a
href="https://redirect.github.com/redis/redis-py/issues/3906 ">#3906</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/76befb443c583815cc99100a58ef943096f27b50 "><code>76befb4</code></a>
Added logging for MultiDBClients (<a
href="https://redirect.github.com/redis/redis-py/issues/3896 ">#3896</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/faee0fbbafd1ab4ad7f5402385f71660c5601948 "><code>faee0fb</code></a>
Remove high-severity exception logging (<a
href="https://redirect.github.com/redis/redis-py/issues/3865 ">#3865</a>)</li>
<li>See full diff in <a
href="https://github.com/redis/redis-py/compare/v7.1.0...v7.1.1 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.14.13 to 0.15.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases ">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-02-12.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Add ruff rules to catch deprecated Airflow
imports for Airflow 3.1 (<code>AIR321</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22376 ">#22376</a>)</li>
<li>[<code>airflow</code>] Third positional parameter not named
<code>ti_key</code> should be flagged for
<code>BaseOperatorLink.get_link</code> (<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22828 ">#22828</a>)</li>
<li>[<code>flake8-gettext</code>] Fix false negatives for plural
argument of <code>ngettext</code> (<code>INT001</code>,
<code>INT002</code>, <code>INT003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21078 ">#21078</a>)</li>
<li>[<code>pyflakes</code>] Fix infinite loop in preview fix for
<code>unused-import</code> (<code>F401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23038 ">#23038</a>)</li>
<li>[<code>pygrep-hooks</code>] Detect non-existent mock methods in
standalone expressions (<code>PGH005</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22830 ">#22830</a>)</li>
<li>[<code>pylint</code>] Allow dunder submodules and improve diagnostic
range (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22804 ">#22804</a>)</li>
<li>[<code>pyupgrade</code>] Improve diagnostic range for tuples
(<code>UP024</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23013 ">#23013</a>)</li>
<li>[<code>refurb</code>] Check subscripts in tuple do not use lambda
parameters in <code>reimplemented-operator</code> (<code>FURB118</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23079 ">#23079</a>)</li>
<li>[<code>ruff</code>] Detect mutable defaults in <code>field</code>
calls (<code>RUF008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23046 ">#23046</a>)</li>
<li>[<code>ruff</code>] Ignore std <code>cmath.inf</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23120 ">#23120</a>)</li>
<li>[<code>ruff</code>] New rule <code>float-equality-comparison</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20585 ">#20585</a>)</li>
<li>Don't format unlabeled Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23106 ">#23106</a>)</li>
<li>Markdown formatting support in LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23063 ">#23063</a>)</li>
<li>Support Quarto Markdown language markers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22947 ">#22947</a>)</li>
<li>Support formatting <code>pycon</code> Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23112 ">#23112</a>)</li>
<li>Use extension mapping to select Markdown code block language (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22934 ">#22934</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid false positive for undefined variables in <code>FAST001</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23224 ">#23224</a>)</li>
<li>Avoid introducing syntax errors for <code>FAST003</code> autofix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23227 ">#23227</a>)</li>
<li>Avoid suggesting <code>InitVar</code> for <code>__post_init__</code>
that references PEP 695 type parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23226 ">#23226</a>)</li>
<li>Deduplicate type variables in generic functions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23225 ">#23225</a>)</li>
<li>Fix exception handler parenthesis removal for Python 3.14+ (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23126 ">#23126</a>)</li>
<li>Fix f-string middle panic when parsing t-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23232 ">#23232</a>)</li>
<li>Wrap <code>RUF020</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23210 ">#23210</a>)</li>
<li>Wrap <code>UP007</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23208 ">#23208</a>)</li>
<li>Fix missing diagnostics for last range suppression in file (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23242 ">#23242</a>)</li>
<li>[<code>pyupgrade</code>] Fix syntax error on string with newline
escape and comment (<code>UP037</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22968 ">#22968</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Use <code>ruff</code> instead of <code>Ruff</code> as the program
name in GitHub output format (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23240 ">#23240</a>)</li>
<li>[<code>PT006</code>] Fix syntax error when unpacking nested tuples
in <code>parametrize</code> fixes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22441 ">#22441</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/22464 ">#22464</a>)</li>
<li>[<code>airflow</code>] Catch deprecated attribute access from
context key for Airflow 3.0 (<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22850 ">#22850</a>)</li>
<li>[<code>airflow</code>] Capture deprecated arguments and a decorator
(<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23170 ">#23170</a>)</li>
<li>[<code>flake8-boolean-trap</code>] Add
<code>multiprocessing.Value</code> to excluded functions for
<code>FBT003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23010 ">#23010</a>)</li>
<li>[<code>flake8-bugbear</code>] Add a secondary annotation showing the
previous occurrence (<code>B033</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22634 ">#22634</a>)</li>
<li>[<code>flake8-type-checking</code>] Add sub-diagnostic showing the
runtime use of an annotation (<code>TC004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23091 ">#23091</a>)</li>
<li>[<code>isort</code>] Support configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23151 ">#23151</a>)</li>
<li>[<code>ruff</code>] Improve the diagnostic for <code>RUF012</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23202 ">#23202</a>)</li>
</ul>
<h3>Formatter</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md ">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.1</h2>
<p>Released on 2026-02-12.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Add ruff rules to catch deprecated Airflow
imports for Airflow 3.1 (<code>AIR321</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22376 ">#22376</a>)</li>
<li>[<code>airflow</code>] Third positional parameter not named
<code>ti_key</code> should be flagged for
<code>BaseOperatorLink.get_link</code> (<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22828 ">#22828</a>)</li>
<li>[<code>flake8-gettext</code>] Fix false negatives for plural
argument of <code>ngettext</code> (<code>INT001</code>,
<code>INT002</code>, <code>INT003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21078 ">#21078</a>)</li>
<li>[<code>pyflakes</code>] Fix infinite loop in preview fix for
<code>unused-import</code> (<code>F401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23038 ">#23038</a>)</li>
<li>[<code>pygrep-hooks</code>] Detect non-existent mock methods in
standalone expressions (<code>PGH005</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22830 ">#22830</a>)</li>
<li>[<code>pylint</code>] Allow dunder submodules and improve diagnostic
range (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22804 ">#22804</a>)</li>
<li>[<code>pyupgrade</code>] Improve diagnostic range for tuples
(<code>UP024</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23013 ">#23013</a>)</li>
<li>[<code>refurb</code>] Check subscripts in tuple do not use lambda
parameters in <code>reimplemented-operator</code> (<code>FURB118</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23079 ">#23079</a>)</li>
<li>[<code>ruff</code>] Detect mutable defaults in <code>field</code>
calls (<code>RUF008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23046 ">#23046</a>)</li>
<li>[<code>ruff</code>] Ignore std <code>cmath.inf</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23120 ">#23120</a>)</li>
<li>[<code>ruff</code>] New rule <code>float-equality-comparison</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20585 ">#20585</a>)</li>
<li>Don't format unlabeled Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23106 ">#23106</a>)</li>
<li>Markdown formatting support in LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23063 ">#23063</a>)</li>
<li>Support Quarto Markdown language markers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22947 ">#22947</a>)</li>
<li>Support formatting <code>pycon</code> Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23112 ">#23112</a>)</li>
<li>Use extension mapping to select Markdown code block language (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22934 ">#22934</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid false positive for undefined variables in <code>FAST001</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23224 ">#23224</a>)</li>
<li>Avoid introducing syntax errors for <code>FAST003</code> autofix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23227 ">#23227</a>)</li>
<li>Avoid suggesting <code>InitVar</code> for <code>__post_init__</code>
that references PEP 695 type parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23226 ">#23226</a>)</li>
<li>Deduplicate type variables in generic functions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23225 ">#23225</a>)</li>
<li>Fix exception handler parenthesis removal for Python 3.14+ (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23126 ">#23126</a>)</li>
<li>Fix f-string middle panic when parsing t-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23232 ">#23232</a>)</li>
<li>Wrap <code>RUF020</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23210 ">#23210</a>)</li>
<li>Wrap <code>UP007</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23208 ">#23208</a>)</li>
<li>Fix missing diagnostics for last range suppression in file (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23242 ">#23242</a>)</li>
<li>[<code>pyupgrade</code>] Fix syntax error on string with newline
escape and comment (<code>UP037</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22968 ">#22968</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Use <code>ruff</code> instead of <code>Ruff</code> as the program
name in GitHub output format (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23240 ">#23240</a>)</li>
<li>[<code>PT006</code>] Fix syntax error when unpacking nested tuples
in <code>parametrize</code> fixes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22441 ">#22441</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/22464 ">#22464</a>)</li>
<li>[<code>airflow</code>] Catch deprecated attribute access from
context key for Airflow 3.0 (<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22850 ">#22850</a>)</li>
<li>[<code>airflow</code>] Capture deprecated arguments and a decorator
(<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23170 ">#23170</a>)</li>
<li>[<code>flake8-boolean-trap</code>] Add
<code>multiprocessing.Value</code> to excluded functions for
<code>FBT003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23010 ">#23010</a>)</li>
<li>[<code>flake8-bugbear</code>] Add a secondary annotation showing the
previous occurrence (<code>B033</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22634 ">#22634</a>)</li>
<li>[<code>flake8-type-checking</code>] Add sub-diagnostic showing the
runtime use of an annotation (<code>TC004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23091 ">#23091</a>)</li>
<li>[<code>isort</code>] Support configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23151 ">#23151</a>)</li>
<li>[<code>ruff</code>] Improve the diagnostic for <code>RUF012</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23202 ">#23202</a>)</li>
</ul>
<h3>Formatter</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d "><code>a2f11d2</code></a>
Prepare for 0.15.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23253 ">#23253</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff "><code>d29628e</code></a>
Remove docker-run-action (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23254 ">#23254</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0 "><code>8a04266</code></a>
[ty] Allow discovering dependencies in system Python environments (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22994 ">#22994</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163 "><code>55d06c8</code></a>
Ensure pending suppression diagnostics are reported (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23242 ">#23242</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea "><code>d056a9f</code></a>
[<code>isort</code>] support for configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23151 ">#23151</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a "><code>e22fa4f</code></a>
[ty] Fix method calls on subclasses of <code>Any</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23248 ">#23248</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c "><code>fa56c15</code></a>
[ty] Fix bound method access on <code>None</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23246 ">#23246</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2 "><code>4fd07d0</code></a>
Make range suppression test snapshot actually useful (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23251 ">#23251</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f "><code>8c63bce</code></a>
[ty] Include conditional symbols (like <code>datetime.UTC</code>) in
auto-import in more...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d "><code>46be943</code></a>
Exclude WASM artifacts from GitHub releases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23221 ">#23221</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.14.13...0.15.1 ">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com >
2026-02-17 09:28:01 -08:00
William FH and GitHub
a7a27dd43a
release(langgraph): 1.0.8 ( #6757 )
2026-02-06 07:27:08 -05:00
Sydney Runkle and GitHub
7b9ff6129b
release: langgraph and prebuilt 1.0.7 ( #6712 )
2026-01-22 11:28:22 -05:00
Mason Daugherty and GitHub
089cdd0ffb
chore: update twitter URLs ( #6683 )
2026-01-13 09:33:56 -05:00
Sydney Runkle and GitHub
f91d79d0c8
fix: flip default on base cache ( #6677 )
...
rebasing https://github.com/langchain-ai/langgraph/pull/6562 w/ current
main
2026-01-12 15:26:37 -05:00
Josh Rogers and GitHub
84023451a2
release(langgraph): bump to 1.0.5 ( #6582 )
...
- **Description:** Bumping to 1.0.5 for compatibility with the latest
changes to the python langgraph-sdk.
- **Issue:** N/A
- **Dependencies:** N/A
- **Twitter handle:** N/A
2025-12-12 17:56:30 -05:00
efe78447b3
feat(sdk-py): emit id as part of stream events ( #6581 )
...
- **Description:** Provide the id of the event for routes that use SSE
streams. This will allow for more custom retry logic when streams
disconnect if needed.
- **Issue:** N/A
- **Dependencies:** N/A
- **Twitter handle:** N/A
---------
Co-authored-by: William FH <13333726+hinthornw@users.noreply.github.com >
2025-12-12 17:16:48 -05:00
William FH and GitHub
b945b1f21e
release(langgraph): 1.0.4 ( #6502 )
...
This patch release includes a couple of small fixes and improvements,
such as:
- Include interrupt information in the values stream mode (no longer
rely solely on the updates stream mode):
https://github.com/langchain-ai/langgraph/pull/6475
- Omit thread_id from configurable to allow using context for stateful
runs via RemoteGraph:
https://github.com/langchain-ai/langgraph/pull/6497
2025-11-25 20:27:49 +00:00
Caspar Broekhuizen and GitHub
0d4ac836e3
chore: langgraph patch release ( #6429 )
2025-11-10 09:37:35 -08:00
Mason Daugherty and GitHub
4ec92f9fb1
chore: add pyproject.toml links ( #6364 )
2025-11-07 07:43:51 -05:00
Sydney Runkle and GitHub
c1661dd07f
chore: bump prebuilt dep for lg ( #6361 )
2025-10-29 18:34:28 +00:00
Sydney Runkle and GitHub
4ac1c628ee
chore: port tool node improvements back to langgraph ( #6321 )
...
namespace decisions
```
langgraph.prebuilt
├── ToolRuntime # new
# all of the other stuff that was already there
langgraph.prebuilt.tool_node
├── ToolNode
├── ToolCallRequest # new
├── ToolRuntime # new
├── InjectedState
├── InjectedStore
├── ToolCallWrapper
├── AsyncToolCallWrapper
├── tools_condition
```
```
langchain.tools
├── ToolRuntime # now from langgraph.prebuilt
├── InjectedState # now from langgraph.prebuilt
├── InjectedStore # now from langgraph.prebuilt
├── ToolException
├── tool
├── BaseTool
├── InjectedToolArg
├── InjectedToolCallId
```
2025-10-29 09:58:06 -07:00
Sydney Runkle and GitHub
41f8e61589
chore: bump core dep for prebuilt ( #6323 )
...
bumping core dependency for `langgraph-prebuilt` to `>1.0.0` so that we
can take advantage of internal utils that allow `ToolRuntime` injection.
We were previously bumping the version in lock step with prebuilt (prev
version was 0.3.67), so this pattern is in line with that.
Also updating snapshots accordingly:
* New mermaid syntax for a few graphs
* Removal of `examples` from `AIMessage`
2025-10-29 09:51:51 -07:00
William FH and GitHub
fca3e4513c
release: Checkpointers 3.0 ( #6313 )
...
In this PR:
- Bump `langgraph-checkpoint` to 3.0
- Bump `langgraph-checkpoint-sqlite` to 3.0; Update
`langgraph-checkpoint` deps to >=3,<4
- Bump `langgraph-checkpoint-postgres` to 3.0; Update
`langgraph-checkpoint` max to <4 (keep prior min since the deprecated
functionality wasn't explicitly used)
- Bump `langgraph` to 1.0.1; update `langgraph-checkpoint` max bound to
4
- Bump `prebuilt` to 1.0.1; update `langgraph-checkpoint` max bound to 4
2025-10-20 11:31:55 -07:00