Metadata-Version: 2.1
Name: gigagraph-checkpoint-sqlite
Version: 1.0.0
Summary: Library with a SQLite implementation of GigaGraph checkpoint saver.
Home-page: https://github.com/ai-forever/gigagraph
License: MIT
Requires-Python: >=3.9.0,<4.0.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
Requires-Dist: gigagraph-checkpoint (>=1.0.0,<2.0.0)
Project-URL: Repository, https://github.com/ai-forever/gigagraph
Description-Content-Type: text/markdown

# LangGraph SQLite Checkpoint

Implementation of LangGraph CheckpointSaver that uses SQLite DB (both sync and async, via `aiosqlite`)

## Usage

```python

from langgraph.checkpoint.sqlite import SqliteSaver

checkpointer = SqliteSaver.from_conn_string(":memory:")
checkpoint = {
  "v": 1,
  "ts": "2024-07-31T20:14:19.804150+00:00",
  "id": "1ef4f797-8335-6428-8001-8a1503f9b875",
  "channel_values": {
    "my_key": "meow",
    "node": "node"
  },
  "channel_versions": {
    "__start__": 2,
    "my_key": 3,
    "start:node": 3,
    "node": 3
  },
  "versions_seen": {
    "__input__": {},
    "__start__": {
      "__start__": 1
    },
    "node": {
      "start:node": 2
    }
  },
  "pending_sends": [],
  "current_tasks": {}
}

# store checkpoint
checkpointer.put(thread_config, checkpoint, {})

# load checkpoint
checkpointer.get(thread_config)

# list checkpoints
list(checkpointer.list(thread_config))
```

### Async

```python

from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver

checkpointer = AsyncSqliteSaver.from_conn_string(":memory:")
checkpoint = {
  "v": 1,
  "ts": "2024-07-31T20:14:19.804150+00:00",
  "id": "1ef4f797-8335-6428-8001-8a1503f9b875",
  "channel_values": {
    "my_key": "meow",
    "node": "node"
  },
  "channel_versions": {
    "__start__": 2,
    "my_key": 3,
    "start:node": 3,
    "node": 3
  },
  "versions_seen": {
    "__input__": {},
    "__start__": {
      "__start__": 1
    },
    "node": {
      "start:node": 2
    }
  },
  "pending_sends": [],
  "current_tasks": {}
}

# store checkpoint
await checkpointer.aput(thread_config, checkpoint, {})

# load checkpoint
await checkpointer.aget(thread_config)

# list checkpoints
[c async for c in checkpointer.alist(thread_config)]
```
