Skip to main content

icegraph-client

Python client and CLI for the IceGraph server API - script access to tables, snapshot history, and the metadata graph.

Install

icegraph-client is only guaranteed compatible with the exact version of the IceGraph server it talks to - pin to that version:

pip install icegraph-client==<version>

CLI

icegraph --base-url http://<icegraph-server-host> tables
icegraph --base-url http://<icegraph-server-host> snapshots <database.table> [--before-snapshot-id ID]
icegraph --base-url http://<icegraph-server-host> metadata <database.table>
icegraph --base-url http://<icegraph-server-host> sparkdesc <database.table>
icegraph --base-url http://<icegraph-server-host> graph <database.table> [--start-snapshot-id ID] [--end-snapshot-id ID]

--base-url also falls back to the ICEGRAPH_BASE_URL environment variable. If your server sits behind a proxy that requires auth, pass --token/--cookie (or ICEGRAPH_TOKEN/ICEGRAPH_COOKIE).

Each command prints its result as JSON on stdout; status messages go to stderr, so output pipes cleanly.

snapshots returns one page, starting from the table's newest snapshots, as {"snapshots": [...], "next_before_snapshot_id": ...}. Pass next_before_snapshot_id as --before-snapshot-id to get the next older page; it is null when no older snapshots remain.

metadata returns the table's latest metadata, plus warnings, which maps a source to a list of messages and is empty when there are none. For example, it warns when the table uses an Iceberg format version other than 2, which IceGraph doesn't fully support yet.

sparkdesc returns Spark's description of any table Spark can resolve, Iceberg or not, as {"spark_schema": {...}, "spark_partitions": [...], "sections": [...], "properties": {...}, "warnings": {...}}. Use it when another command reports that the table is not an Iceberg table.

Python

from icegraph_client import IceGraphClient

client = IceGraphClient("http://<icegraph-server-host>")
client.list_tables()
page = client.get_snapshot_map("database.table")
if page.next_before_snapshot_id is not None:  # None when no older snapshots remain
    client.get_snapshot_map("database.table", before_snapshot_id=page.next_before_snapshot_id)
client.get_table_metadata("database.table")
client.get_table_description("database.table")
client.get_graph("database.table", start_snapshot_id, end_snapshot_id)

Docs

Product page: https://yanivzalach.github.io/IceGraph-Site/

Full documentation, the IceGraph application, and the source code: github.com/YanivZalach/IceGraph

License

icegraph-client is licensed under the GNU Affero General Public License version 3 only.

Copyright (c) 2026 Yaniv Zalach and the IceGraph contributors.

Metadata

Release files for icegraph-client 0.20.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for icegraph-client 0.20.3
File Size Uploaded
icegraph_client-0.20.3.tar.gz 34.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for icegraph-client 0.20.3
File Interpreter ABI Platform
icegraph_client-0.20.3-py3-none-any.whl Python 3 none any Details

Total release size: 55.4 kB

Release files / icegraph_client-0.20.3.tar.gz

Download URL icegraph_client-0.20.3.tar.gz
Size 34.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fb84eb32c3b9ca641402d058dc8ca3f5afea8604363e077d6a22b5c5687d91a2
BLAKE2b-256 checksum
How to use checksums
dfd71872420c32556aada14ef157d5baabb86aaf09ef262acca8c803349abaf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / icegraph_client-0.20.3-py3-none-any.whl

Download URL icegraph_client-0.20.3-py3-none-any.whl
Size 20.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c78fa69ae2a7435322af7e9563672d8fd547b587656c8932f44969ea62e68d6e
BLAKE2b-256 checksum
How to use checksums
36ee32472a9fdfcdff979a32c77e818b600f53a64a64152f23a6aac6ea9df728
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page