hgraph-persistence
Durable record/replay and frame storage for hgraph (RFC 0025): the FrameStore (memory / local filesystem / S3, Arrow IPC / Parquet), the frame-backed record/replay/compare overloads for the core operator markers, and the DataFrameStorage compatibility surface.
The public C++ ObjectStore is the durable metadata substrate shared by
checkpoint/recovery and the versioned dataflow fabric. It provides:
- immutable create-if-absent with distinct created, idempotent, and conflict outcomes;
- typed absent reads carrying an opaque version token when present, with
backend failures reported separately as
ObjectStoreError; - deterministic lexicographic prefix paging;
- compare/exchange for small named references; and
- memory, local-filesystem, and S3 strategies behind one owning erased handle.
Local immutable publication uses atomic filesystem creation and reference CAS
uses cross-process file locking plus atomic replacement. S3 conditional writes
are sent with If-None-Match / If-Match and AWS Signature V4 through
libcurl; they are not emulated with a read followed by an unconditional write.
FrameStore immutable local and S3 writes use this same backend publication
path after serialising the Frame. This requires one additional
serialized-Frame-sized buffer for an immutable local or S3 write; mutable
FrameStore writes retain their streaming path.
Wheel builds embed a pinned private curl for conditional S3 requests. A shared
hgraph::persistence library carries that implementation itself; consumers of
a static installed C++ library must provide CURL::libcurl version 7.75 or
newer at the final link.
Installing and importing hgraph_persistence registers the
"hgraph.persistence.frame" backend with the shared hgraph runtime;
selecting that backend (set_record_replay_config) activates it from
unchanged hgraph imports.
Runnable Python examples for direct record/replay, transparent component
modes, and keyed time-series storage are in
python/examples.
ComponentCheckpointStore stores a complete eligible component image under
one immutable key. configure_component_recovery(store, component_id, checkpoint_key, restore_key=None, revision="1", global_state=state) selects
the previous completed day and the next key before wiring. The runtime captures
the component before stop and publishes only after a successful bounded run
and successful teardown. Recovery quietly restores outputs, declared recorded
state, and supported keyed map membership before new input is evaluated.
Inputs must come directly from pull sources used exclusively by the component.
Each run supplies future events for its interval; recovery restores the source
endpoint baseline, while the caller remains responsible for its input cursor.
Each image is one Arrow frame containing versioned topology and endpoint metadata plus schema-directed value payloads. The whole frame is encoded before the native store publishes it through its immutable object operation. Encoding must round-trip without changing scalar values; unsupported payloads, including non-finite JSON numbers, fail before publication. There is no mutable latest pointer: applications select an exact predecessor and use a new key for every completed day. Filesystem and S3 durability follow the native object store's guarantees; this does not coordinate external sink transactions or external input acknowledgements.
The initial contract is deterministic simulation within a component, using
declared RECORDABLE_STATE for semantic user-node state. Unsupported services,
ordinary user STATE, captured Python closure state, schedulers, endpoint
representations, and dynamic owners are refused explicitly. Error capture is
also refused so a failed evaluation cannot be committed as a completed day.
Python callback identity includes module, qualified
name, input policy and scalar arguments. The application must change revision
when its strategy code changes. Explicit __recordable_id__ values identify
Python nodes inside a configured component and must be unique there.
See completed_days.py for a runnable
example that restores day one in a new process and computes day two.
Metadata
Release files for hgraph-persistence 0.8.25
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hgraph_persistence-0.8.25.tar.gz | 143.2 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hgraph_persistence-0.8.25-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| hgraph_persistence-0.8.25-cp312-abi3-manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| hgraph_persistence-0.8.25-cp312-abi3-macosx_15_0_arm64.whl | CPython 3.12 | abi3 | macOS 15.0+ ARM64 | Details |
Total release size: 3.7 MB
Release files / hgraph_persistence-0.8.25.tar.gz
| Download URL | hgraph_persistence-0.8.25.tar.gz |
|---|---|
| Size | 143.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d2f1423dd9046a07ae434eb4d633f6013234af7bd1ddab8f32cb3bef30165f1
|
|
BLAKE2b-256 checksum How to use checksums |
763311a71e12656eafd469a11c4580dafeef351c1ec775472ce03426f1834084
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / hgraph_persistence-0.8.25-cp312-abi3-win_amd64.whl
| Download URL | hgraph_persistence-0.8.25-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 635.0 kB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
29957ac6201efbef7efbfafcbac898501ed965998d2e8bc1f43a2c59412f165a
|
|
BLAKE2b-256 checksum How to use checksums |
40b00539b481668fe78ed218cfecc80b817279394a05f49b0c216e516b8b5bf1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / hgraph_persistence-0.8.25-cp312-abi3-manylinux_2_28_x86_64.whl
| Download URL | hgraph_persistence-0.8.25-cp312-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
bf5a7716d8b7f9fc93614883b8be562ceffb968d0272868f19c2d201010bf06d
|
|
BLAKE2b-256 checksum How to use checksums |
6f98f551a8812de0d7fdba7b0383bbd57a531654350859eb7201f37a071a9c72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / hgraph_persistence-0.8.25-cp312-abi3-macosx_15_0_arm64.whl
| Download URL | hgraph_persistence-0.8.25-cp312-abi3-macosx_15_0_arm64.whl |
|---|---|
| Size | 313.2 kB |
| Tags | CPython 3.12 abi3 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a06570e56b37138565c9d14c4879f932577af9214fdbd558ec639f1858128441
|
|
BLAKE2b-256 checksum How to use checksums |
76e6426d38b4d324a87ad29e70ab4413935418cd6021bef1edd537b7312b6ad1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency log