YXDB reader and writer for Python, backed by a Rust core.
Project description
sigilyx
YXDB reader and writer for Python.
YXDB is the native binary format used by Alteryx Designer. sigilyx reads and writes .yxdb files using Polars DataFrames, PyArrow Tables, or Pandas DataFrames.
The core is written in Rust. No native Alteryx Designer installation is required.
Format scope:
sigilyxhas full read/write support for the E1 (original engine) YXDB layout. Experimental read support for E2 (AMP engine) is included - 13 field types have been verified against real E2 files; 4 rare types (Blob, SpatialObj, Time, WString) have speculative decoders behind an opt-in flag. E2 writing is not yet supported. See SPECIFICATION-E2.md for details.
Installation
pip install sigilyx # Polars only (default)
pip install "sigilyx[arrow]" # + PyArrow
pip install "sigilyx[pandas]" # + Pandas + PyArrow
pip install "sigilyx[all]" # all extras
Requires Python 3.9+. Pre-built wheels for Windows, macOS, and Linux (x64 and ARM).
Quick Start
import polars as pl
import sigilyx # importing registers pl.read_yxdb(), df.yxdb, etc.
# Read
df = pl.read_yxdb("data.yxdb")
# Write
df.yxdb.write("output.yxdb")
API
Polars Integration
Importing sigilyx registers official Polars namespace plugins and top-level IO aliases. No extra calls needed — just import sigilyx.
import polars as pl
import sigilyx
# Top-level IO (mirrors pl.read_parquet / pl.scan_parquet style)
df = pl.read_yxdb("data.yxdb") # returns pl.DataFrame
lf = pl.scan_yxdb("data.yxdb") # returns pl.LazyFrame (IO plugin)
# Namespace API on DataFrame / LazyFrame
df.yxdb.write("output.yxdb") # pl.DataFrame → .yxdb file
lf.yxdb.sink("output.yxdb") # pl.LazyFrame → .yxdb file (streaming)
Reading
import sigilyx as yx
# Polars DataFrame — fastest, zero-copy via Arrow C Data Interface
df = yx.read_yxdb("data.yxdb")
# PyArrow Table
table = yx.read_yxdb_arrow("data.yxdb")
# Pandas DataFrame (via PyArrow)
pdf = yx.read_yxdb_pandas("data.yxdb")
Writing
import sigilyx as yx
# Polars DataFrame
yx.write_yxdb("output.yxdb", df)
# PyArrow Table
yx.write_yxdb_arrow("output.yxdb", table)
# Pandas DataFrame
yx.write_yxdb_pandas("output.yxdb", pdf)
Streaming / Batched Read
Iterate over large files with constant memory usage:
import sigilyx as yx
# Basic iteration — each batch is a Polars DataFrame
for batch in yx.read_yxdb_batches("data.yxdb", batch_size=100_000):
process(batch)
# Column projection — only materialise the columns you need
for batch in yx.read_yxdb_batches("data.yxdb", columns=["Id", "Name", "Amount"]):
process(batch)
# Row limit — stop after N total rows
for batch in yx.read_yxdb_batches("data.yxdb", n_rows=5_000):
process(batch)
Lazy Scan
import polars as pl
import sigilyx as yx
# Returns a Polars LazyFrame backed by a native Rust streaming reader.
# Only the YXDB header is read on construction; data streams on .collect().
lf = yx.scan("data.yxdb")
result = lf.filter(pl.col("amount") > 100).collect()
# Projection pushdown — only selected columns are materialised in Rust
top10 = lf.select("id", "name").head(10).collect()
Pushdown support: projection (
select/with_columns) and row-limit (n_rows/.head()) are pushed down to the Rust reader. Predicate pushdown is not possible — YXDB rows are LZF-compressed with no block-level statistics, so.filter()is applied after the scan.
Metadata
import sigilyx as yx
# Inspect schema without reading any row data
fields = yx.read_yxdb_fields("data.yxdb")
for f in fields:
print(f.name, f.field_type, f.size)
# Record count from the file header — no data read
n = yx.record_count("data.yxdb")
Field Types
| YXDB Type | Polars / Arrow Type | Notes |
|---|---|---|
Bool |
Boolean |
|
Byte |
Int16 |
Unsigned byte stored as Int16 |
Int16 |
Int16 |
|
Int32 |
Int32 |
|
Int64 |
Int64 |
|
Float |
Float32 |
|
Double |
Float64 |
|
FixedDecimal |
Decimal |
Precision and scale preserved |
String |
String / Utf8 |
Fixed-width, ASCII/Latin-1 |
WString |
String / Utf8 |
Fixed-width, UTF-16 decoded |
V_String |
String / LargeUtf8 |
Variable-length, ASCII/Latin-1 |
V_WString |
String / LargeUtf8 |
Variable-length, UTF-16 decoded |
Date |
Date |
Days since Unix epoch |
DateTime |
Datetime(us) |
Microsecond precision |
Time |
Time |
Nanosecond precision |
Blob |
Binary / LargeBinary |
Variable-length binary |
SpatialObj |
Binary / LargeBinary |
Geometry as ISO WKB or raw SHP bytes |
Links
- GitHub: https://github.com/Sigilweaver/SigilYX
- Documentation: https://sigilweaver.app/sigilyx/
- Rust crate (crates.io): https://crates.io/crates/sigilyx
- Changelog: https://github.com/Sigilweaver/SigilYX/blob/main/CHANGELOG.md
- Issues: https://github.com/Sigilweaver/SigilYX/issues
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sigilyx-0.3.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: sigilyx-0.3.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a39aa8c355ac14d2e2cba313780b70c8e47295c805c2ec6bfe50a61ae8b0654
|
|
| MD5 |
a077732aeef65185f24ab57dca284a9a
|
|
| BLAKE2b-256 |
8f8cd568542d034646fa9af345e572e21322b1b1f696157fc34db14702ae1102
|
Provenance
The following attestation bundles were made for sigilyx-0.3.0-cp39-abi3-win_amd64.whl:
Publisher:
publish-pypi.yml on Sigilweaver/SigilYX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sigilyx-0.3.0-cp39-abi3-win_amd64.whl -
Subject digest:
3a39aa8c355ac14d2e2cba313780b70c8e47295c805c2ec6bfe50a61ae8b0654 - Sigstore transparency entry: 1677216444
- Sigstore integration time:
-
Permalink:
Sigilweaver/SigilYX@c1b97116413895bae5a31dbf07addf006f781ae8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Sigilweaver
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c1b97116413895bae5a31dbf07addf006f781ae8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sigilyx-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: sigilyx-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 6.6 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94579874c84bed6dfa7031cc2dcd6a42fa2cc68cae1960ff30ec9ce716034364
|
|
| MD5 |
91321ee55dd9e43893c2842a240edcd3
|
|
| BLAKE2b-256 |
b7fc9495e939594407b72202ca5e6a2b2b33abe854a12b5ffd96903f1ff33f6e
|
Provenance
The following attestation bundles were made for sigilyx-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish-pypi.yml on Sigilweaver/SigilYX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sigilyx-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
94579874c84bed6dfa7031cc2dcd6a42fa2cc68cae1960ff30ec9ce716034364 - Sigstore transparency entry: 1677216456
- Sigstore integration time:
-
Permalink:
Sigilweaver/SigilYX@c1b97116413895bae5a31dbf07addf006f781ae8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Sigilweaver
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c1b97116413895bae5a31dbf07addf006f781ae8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sigilyx-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: sigilyx-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 6.0 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3258ff18bae7a80f9a0b414a7a6fdb88867c078da17c4d6152464de32b0097be
|
|
| MD5 |
1fea44fe8771850c5b50d0b23b063e58
|
|
| BLAKE2b-256 |
477190b0784bea671045df54aede50f786ee17f28a0ca0b8eda0eb5067f3e7b9
|
Provenance
The following attestation bundles were made for sigilyx-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
publish-pypi.yml on Sigilweaver/SigilYX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sigilyx-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
3258ff18bae7a80f9a0b414a7a6fdb88867c078da17c4d6152464de32b0097be - Sigstore transparency entry: 1677216436
- Sigstore integration time:
-
Permalink:
Sigilweaver/SigilYX@c1b97116413895bae5a31dbf07addf006f781ae8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Sigilweaver
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c1b97116413895bae5a31dbf07addf006f781ae8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sigilyx-0.3.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: sigilyx-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7cd28d3452435bc671bbd31bc6b415fce04170dff8398c572b1474c8401aa0a
|
|
| MD5 |
572a320a7ffc4100ba58f5727574399c
|
|
| BLAKE2b-256 |
c2f11394b497b9f23e3ebddaf951b1f167fa043ef20bf8ad495b78645ab18f98
|
Provenance
The following attestation bundles were made for sigilyx-0.3.0-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
publish-pypi.yml on Sigilweaver/SigilYX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sigilyx-0.3.0-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
a7cd28d3452435bc671bbd31bc6b415fce04170dff8398c572b1474c8401aa0a - Sigstore transparency entry: 1677216428
- Sigstore integration time:
-
Permalink:
Sigilweaver/SigilYX@c1b97116413895bae5a31dbf07addf006f781ae8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Sigilweaver
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c1b97116413895bae5a31dbf07addf006f781ae8 -
Trigger Event:
release
-
Statement type: