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.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| icegraph_client-0.20.2.tar.gz | 34.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| icegraph_client-0.20.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.4 kB
Release files / icegraph_client-0.20.2.tar.gz
| Download URL | icegraph_client-0.20.2.tar.gz |
|---|---|
| Size | 34.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30c87f0a99bfe49a163c6c28c2c2a2e677527f76f356af773bf389ebb93238b1
|
|
BLAKE2b-256 checksum How to use checksums |
30befebfccb9c8e0cfafdc777f9fada5c3e02cf94dc5032d482b9dbb11f44207
|
| 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.2-py3-none-any.whl
| Download URL | icegraph_client-0.20.2-py3-none-any.whl |
|---|---|
| Size | 20.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07cd9ba640a4c8e194d3adafa40177d735f46653f241c6aaa8aada0bc6d0580e
|
|
BLAKE2b-256 checksum How to use checksums |
bc0b9ad4e4233765420cef4a71680e7cb4939a43fd1d1ada80291c56fb5698d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|