Skip to main content

Corium Python client

corium is the asynchronous Python API for both Corium deployment modes:

  • LocalPeer runs a full peer in-process.
  • RemotePeer connects to corium peer-server.

Both satisfy the same runtime-checkable Peer protocol and return immutable Db values. The native extension connects LocalPeer directly to Corium's peer library and RemotePeer to corium peer-server.

from corium import LocalPeer, Query

async with await LocalPeer.connect(
    "http://127.0.0.1:4334",
    database="people",
) as peer:
    db = await peer.db()
    rows = await db.query(Query.find("?name").where("?entity", ":person/name", "?name"))

Explicit close() (or async with) is required for deterministic shutdown. Wall-clock database views accept timezone-aware, millisecond-precision datetime values only. Custom Tagged values may use any tag except bytes, eid, inst, and uuid, which are reserved for dedicated boundary types. https:// endpoints automatically enable platform TLS roots, and bearer tokens are rejected for plaintext http:// endpoints by default. Local development may opt in explicitly with allow_insecure_token=True. Every endpoint must include an http:// or https:// scheme. Datom scans use limit=None for an explicitly unbounded scan.

Query, Pull, and transaction builders

All builders are immutable: every fluent method returns a new value, and Db.query, Db.pull, and Peer.transact accept either builders or the existing raw data-form escape hatches.

from corium import (
    EntityMap,
    Pull,
    Query,
    TxBuilder,
    data,
    gte,
    lookup,
    tempid,
)

tx = (
    TxBuilder()
    .entity(
        EntityMap.with_id(tempid("ada")).set("person/name", "Ada").set("person/age", 36)
    )
    .build()
)
report = await peer.transact(tx)

adults = (
    Query.find_collection("?name")
    .in_scalar("?minimum")
    .where(data("?entity", ":person/name", "?name"))
    .where("?entity", ":person/age", "?age")
    .where(gte("?age", "?minimum"))
)
names = await report.db_after.query(adults, 18)

person = await report.db_after.pull(
    Pull().db_id().attr("person/name").attr("person/age"),
    lookup("person/name", "Ada"),
)

Query builders cover relation, collection, tuple, and scalar results; scalar, tuple, collection, relation, database, and rule inputs; data patterns; predicates and functions; not, not-join, or, and or-join; rules; Pull find expressions; and aggregates. Strings beginning with ? are variables, strings beginning with : are keywords, and _ is the blank term. Use lit(...) when one of those spellings must remain a string literal.

Pull builders cover wildcard and entity-id selections, reverse references, nested patterns, bounded and unbounded recursion, aliases, defaults, and limits. Transaction builders cover entity maps, temporary IDs, lookup references, explicit EntityId values, add/retract/CAS/retract-entity operations, and arbitrary raw forms.

See examples/people.py for a complete topology-neutral example. The package includes py.typed, so these APIs are visible to static type checkers without a separate stub distribution.

Private PKI deployments can add a PEM certificate authority and override the certificate DNS name without replacing the platform trust store:

from pathlib import Path

peer = await RemotePeer.connect(
    "https://127.0.0.1:4336",
    database="people",
    token="secret",
    tls_ca=Path("ca.pem").read_bytes(),
    tls_domain="corium.internal",
)

Direct storage

LocalPeer normally reconstructs its in-process database from the transactor's gapless transaction stream. For faster cold starts, DirectStorage asks the transactor for a separately usable, read-only storage connection and loads the latest published snapshot before subscribing to the remaining transaction tail:

from corium import DirectStorage, LocalPeer, SegmentCache

peer = await LocalPeer.connect(
    "https://transactor.example.com",
    database="people",
    token=token,
    storage=DirectStorage(
        cache=SegmentCache(
            "/var/cache/corium/people",
            capacity_bytes=256 * 1024**3,
        )
    ),
)

Filesystem storage is present in the base corium artifact. This repository does not currently publish official Python packages for Turso, PostgreSQL, or S3 plugins. The packaged client supports filesystem direct storage only. Remote peer and replay modes remain available for all storage backends.

The loader supports custom plugin packages through the corium.store_plugins Python entry-point group. At import, the native engine loads each advertised library and registers its backend kinds. A missing backend raises a StorageError. The available_storage_backends() function reports the live process registry.

Filesystem and Turso advertise local paths, so their direct-storage peers must run on a host that can reach the same path as the transactor. Corium rejects a missing store with StorageError; it does not create an empty store or silently fall back to replaying the full transaction stream.

PostgreSQL and S3 discovery never reuses the transactor's write credentials. The transactor must advertise its separately configured read-only PostgreSQL URL or S3 credentials. Temporary S3 credentials are refreshed through GetStorageInfo, and a refresh is rejected if the bucket, prefix, region, or endpoint changes.

The native integration suite uses the same workload for local and remote peers: query result conversion, Pull, datom scans, immutable views, stable caller-error mapping, transactions, and deterministic close. Set CORIUM_TEST_LOCAL_ENDPOINT and/or CORIUM_TEST_REMOTE_ENDPOINT to run it against live services. The dedicated private-CA and bearer-auth test uses CORIUM_TEST_REMOTE_TLS_ENDPOINT, CORIUM_TEST_REMOTE_TLS_TOKEN, CORIUM_TEST_REMOTE_TLS_CA, and optionally CORIUM_TEST_REMOTE_TLS_DOMAIN/CORIUM_TEST_REMOTE_BAD_TOKEN.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

corium-0.1.77-cp310-abi3-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.10+Windows x86-64

corium-0.1.77-cp310-abi3-manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

corium-0.1.77-cp310-abi3-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

corium-0.1.77-cp310-abi3-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

corium-0.1.77-cp310-abi3-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file corium-0.1.77-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: corium-0.1.77-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for corium-0.1.77-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 af8081ed87e4565cbfb47111227250356085fca8ffdfc9a96efcda382e149b59
MD5 6f5feab7185b5df7fedef5570a04279f
BLAKE2b-256 238c8900cbee3649d7285f789bd54f320b46597abad06e37429b7ef2ea3f2ad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for corium-0.1.77-cp310-abi3-win_amd64.whl:

Publisher: publish.yml on csm/corium

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corium-0.1.77-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for corium-0.1.77-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6fa7b76a0312876c477cdbf34e1bc3e7b8b7e17b609ed2dd6f0fcc56ca99d91
MD5 35261631cb14ea4bd8094606badb2693
BLAKE2b-256 08136ad11c4ed437fe65cdfaf5f1517a666e9f4d1e84877cbf1b1d93998b6801

See more details on using hashes here.

Provenance

The following attestation bundles were made for corium-0.1.77-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on csm/corium

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corium-0.1.77-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for corium-0.1.77-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7f05c8866cdd5bc983ff75eef5e7ef09bce35e22939966514caf5cf26bcb71af
MD5 57d9788e85b0a9a066aa2626663d79c0
BLAKE2b-256 cb07b9e9eb9a7dd518c80082282001476ba90df977d7a7257e2fe70cdc63b5cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for corium-0.1.77-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on csm/corium

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corium-0.1.77-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for corium-0.1.77-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e62915980fccd04b8e1250c9d2948ae3b6458966ebc01cc1162ac4886d313a7c
MD5 7bba80a815e55ed2cf5d8da3f3746034
BLAKE2b-256 4d639a5a40fe467c7690cc575ce07ca820bfc553612488e6a5434be27b42ffcd

See more details on using hashes here.

Provenance

The following attestation bundles were made for corium-0.1.77-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish.yml on csm/corium

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corium-0.1.77-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for corium-0.1.77-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ee7040a2278f06791ea8027e943c7817363477a798e4c0c77ddbfa0d62bb75ef
MD5 db0188315af5857bb145b4ddcab06cf0
BLAKE2b-256 1026d6607222b1c02442286c057a7935d0e66da5967cf3a3e2c9e9ac194476b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for corium-0.1.77-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: publish.yml on csm/corium

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page