Repository navigation
Make new Release v2.1.0: couchbase>=4.6.4, Python 3.14, CI on Couchbase 7.6 and 8.0 - #13
Conversation
…se 7.6 and 8.0 - Raise the couchbase SDK floor to 4.6.4. It includes PYCBC-1954 (acouchbase could close the caller's running event loop, which AsyncCouchbaseSaver uses) and other client fixes. - Declare Python 3.14 support. couchbase 4.6.4 ships cp314 wheels. - CI tests Python 3.10-3.14 against Couchbase Server 7.6.12 and 8.0.3. - Set pytest-asyncio's default fixture loop scope to silence its deprecation warning. - Bump __version__ to 2.1.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain in the version 2.1.0 release-preparation changes.
No open issues 🎉
What changed in this PR
Prepares version 2.1.0 of the Couchbase checkpointer package with an updated SDK requirement, declared Python 3.14 support, and broader CI coverage. Publishing remains a separate maintainer action after merge.
Changes:
- Raises the Couchbase SDK minimum to 4.6.4 and updates the documented requirement.
- Adds Python 3.14 support and expands CI to 10 combinations across Couchbase Server 7.6.12 and 8.0.3.
- Sets the default pytest async fixture loop scope to
function.
| File | Description |
|---|---|
| README.md | Updates the minimum Couchbase SDK requirement. |
| pyproject.toml | Raises the SDK floor, adds the Python 3.14 classifier, and configures async fixture scope. |
| langgraph_checkpointer_couchbase/__about__.py | Bumps the package version to 2.1.0. |
| .github/workflows/ci.yaml | Expands the Python and Couchbase Server test matrix and names jobs by combination. |
Review effort: Balanced
Lifecycle evidence (t_1510b6dc)Head: Local automated runsCouchbase ran with no published ports, and Python ran in
Manual README validation (live OpenAI
|
Monthly Couchbase Ecosystem lifecycle sweep for
langgraph-checkpointer-couchbase(Hermes Kanbancouchbase-ecosystem/t_1510b6dc, run2026-11-05T090023Z).Before making changes I read the manifest entry and the repo's
AGENTS.md. Following the AGENTS.md rules, this PR bumps the version, uses theMake new Releasetitle, keeps hatch/pip, and adds no lockfile.Version
release.yaml) onmain. The draft GitHub releasev2.1.0is published by that workflow.Changes
couchbase(Python SDK) floor>=4.6.3>=4.6.4(latest, released 2026-10-28)couchbase:enterprise-7.6.4enterprise-7.6.12,enterprise-8.0.3(10 jobs)asyncio_default_fixture_loop_scope = "function"__version__Couchbase SDK: 4.6.4 is the latest release. The fix most relevant to this package is PYCBC-1954: "acouchbase closes the caller's running event loop while resolving it". In 4.6.3,
LoopValidatorcouldclose()a running loop it considers invalid, and the 4.6.4 fix returns the running loop unchanged.AsyncCouchbaseSaverconnects throughacouchbase. The release also carries 13 other client fixes (close-path lifecycle, request timeouts, exception messages, and others).Other direct dependencies: I left the floors unchanged because none of them needs a raise. The latest versions resolve and pass: langgraph 1.2.20 (langgraph-checkpoint 4.3.1), langchain 1.4.9, langchain-core 1.7.6, langchain-openai 1.7.4, pydantic 2.14.3, typing_extensions 4.16.0, python-dotenv 1.2.4, reo-census 0.2.0. The current floors still pass too (see the floor run below).
GitHub Actions: no change needed.
checkout@v7,setup-python@v7,labeler@v7andpypa/gh-action-pypi-publish@release/v1are already the latest majors. Dependabot reports no open alerts.Validation
Couchbase ran in containers with no published ports, and the tests ran in
python:<v>-slim --network container:<cb>. Each run did the CI-equivalent setup: atestbucket andlanggraphscope, the README indexes,pytest tests/test_checkpointer.py tests/test_python_version_guard.py, thenhatch build.mainbefore this changeManual validation (README sync and async flows, live OpenAI)
On each of Couchbase 8.0.3 (Python 3.13) and 7.6.12 (Python 3.10), I did the following with a fresh task-scoped bucket
lgcp_t1510and scopereadme:checkpointsandcheckpoint_writescollections, and I created the README indexesidx_checkpoints_threadandidx_checkpoint_writes_threadon(thread_id, checkpoint_ns, checkpoint_id).gpt-5-mini.get,get_tupleandlistread them back, and the final AI message was "…always sunny in SF".aget,aget_tupleandalistworked, and the reply was "It might be cloudy in NYC."AsyncCouchbaseSaver.from_conn_infocontinued sync thread 1. Asked "which city did I ask about first?", the agent answeredsf, so the checkpoint persisted across savers and connections.python tests/agent_e2e_test.py: exit 0, with both the sync and async result blocks printed.checkpointscollection held 21 docs on 8.0.3 and 23 on 7.6.12. I rancouchbase-cli bucket-delete --bucket lgcp_t1510, thenGET /pools/default/buckets/lgcp_t1510returned 404 on both clusters.There is no browser UI surface, so UI evidence is not applicable (per the manifest).
Release process
Classification:
manual_github_dispatch, alsotag_triggers_releaseonv*. Evidence:.github/workflows/release.yamlruns onworkflow_dispatchor on av*tag push, anddraft-release.ymlrefreshes the draft on every push tomain. Merging does not publish anything. It only refreshes thev2.1.0draft. No tags, releases or dispatches were made by this sweep.Risk and rollback
test (pyX, enterprise-…). I found no branch protection or ruleset that requires the old names.Reviewers / notification
I requested a GitHub review from @VirajAgarwal-couchbase. The manifest owner handle
VirajAgarwal1is not a repo collaborator (the request returned 422), andVirajAgarwal-couchbasereviewed #8–#10. I sent a Slack owner notification that tags the Slack ID mapped tovirajagarwal-couchbaseinpeople.json.🤖 Generated with Claude Code