mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-09-26 11:35:02 +02:00
## Summary Add a user-facing design doc and `get_delta_channel_keepset` helper for third-party `BaseCheckpointSaver` authors who need to support graphs using `DeltaChannel`. **Deliverables:** 1. ~~**`docs/delta-channel-checkpointer-guide.md`** — comprehensive guide covering~~: moved to docs repo 2. **`BaseCheckpointSaver.get_delta_channel_keepset` / `aget_delta_channel_keepset`** — returns the minimum set of ancestor `checkpoint_id`s that must survive deletion for a given head's `DeltaChannel` reconstruction to remain intact. Enables safe `prune` implementations without silently corrupting delta history. 3. **Docstring warnings** on `prune`, `aprune`, `delete_for_runs`, `adelete_for_runs`, `copy_thread`, `acopy_thread` explaining the DeltaChannel pitfall (silent data loss if ancestor writes/snapshots are deleted). 4. **Three new conformance capabilities** in `libs/checkpoint-conformance`: - `delta_channel_history` — validates the `aget_delta_channel_history` walk contract - `delta_channel_keepset` — validates the keep-set contract - `delta_channel_reconstruction` — end-to-end round-trip (aput + aput_writes + history + reconstruct) ## Test plan - [x] `make format lint` passes in `libs/checkpoint`, `libs/checkpoint-conformance` - [x] All three new conformance capabilities pass against `InMemorySaver` - [x] Run conformance against SQLite saver - [x] Run conformance against Postgres saver --------- Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
1.9 KiB
TOML
74 lines
1.9 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "langgraph-checkpoint-conformance"
|
|
version = "0.0.2"
|
|
description = "Conformance test suite for LangGraph checkpointer implementations."
|
|
authors = [{name = "William FH", email = "13333726+hinthornw@users.noreply.github.com"}]
|
|
requires-python = ">=3.10"
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
dependencies = [
|
|
"langgraph-checkpoint>=2.0.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Source = "https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-conformance"
|
|
|
|
[dependency-groups]
|
|
test = [
|
|
"pytest",
|
|
"pytest-asyncio",
|
|
]
|
|
lint = [
|
|
"ruff",
|
|
"ty",
|
|
]
|
|
dev = [
|
|
{include-group = "test"},
|
|
{include-group = "lint"},
|
|
]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
include = ["langgraph"]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "--strict-markers --strict-config --durations=5 -vv"
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
|
|
[tool.ty.rules]
|
|
# The extended methods (acopy_thread, adelete_for_runs, aprune) are checked
|
|
# at runtime via capability detection and may not exist on the installed
|
|
# base class. Dict literal inference is also overly strict for RunnableConfig.
|
|
# Delta-channel tests import from `langgraph` (not a declared dep of this
|
|
# package — at test time it is installed alongside); private `_DeltaSnapshot`
|
|
# imports are intentional (beta surface).
|
|
unresolved-attribute = "ignore"
|
|
unresolved-import = "ignore"
|
|
invalid-argument-type = "ignore"
|
|
invalid-return-type = "ignore"
|
|
missing-typed-dict-key = "ignore"
|
|
|
|
[tool.ruff]
|
|
lint.select = [
|
|
"E", # pycodestyle
|
|
"F", # Pyflakes
|
|
"UP", # pyupgrade
|
|
"B", # flake8-bugbear
|
|
"I", # isort
|
|
]
|
|
lint.ignore = ["E501", "B008"]
|
|
target-version = "py310"
|
|
|
|
[tool.uv.sources]
|
|
langgraph-checkpoint = {path = "../checkpoint", editable = true}
|
|
|
|
[[tool.uv.index]]
|
|
name = "testpypi"
|
|
url = "https://test.pypi.org/simple/"
|
|
publish-url = "https://test.pypi.org/legacy/"
|
|
explicit = true
|