Skip to main content

sigilyx

YXDB reader and writer for Python.

PyPI Python License: Apache-2.0

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: sigilyx has 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

License

Apache License 2.0.

Download files

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

Source Distribution

sigilyx-0.3.3.tar.gz (149.1 kB view details)

Uploaded Source

Built Distributions

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

sigilyx-0.3.3-cp39-abi3-win_amd64.whl (6.9 MB view details)

Uploaded CPython 3.9+Windows x86-64

sigilyx-0.3.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

sigilyx-0.3.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

sigilyx-0.3.3-cp39-abi3-macosx_11_0_arm64.whl (5.6 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file sigilyx-0.3.3.tar.gz.

File metadata

  • Download URL: sigilyx-0.3.3.tar.gz
  • Upload date:
  • Size: 149.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sigilyx-0.3.3.tar.gz
Algorithm Hash digest
SHA256 6b90dcee5877745003910a1e130c173959f8496b07ae6b0519c387b464de8cdb
MD5 5f94a1198b19e40816310c61e06d9a63
BLAKE2b-256 092bab8c8de7a52938d7195c8e1e366d763d9c346fe967e8fa3331982091e7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sigilyx-0.3.3.tar.gz:

Publisher: publish-pypi.yml on Sigilweaver/SigilYX

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

File details

Details for the file sigilyx-0.3.3-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: sigilyx-0.3.3-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sigilyx-0.3.3-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 08a1a245bb636efd39d8d9770a6733aaf5f58ba11939b8ab2756e84e394c7c17
MD5 9fffe2298ae8bb9b416fb976c2ef1deb
BLAKE2b-256 2f1340438d4bd69358be4ad6bda4b324f12c18568db47abb0e8f340207c116f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sigilyx-0.3.3-cp39-abi3-win_amd64.whl:

Publisher: publish-pypi.yml on Sigilweaver/SigilYX

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

File details

Details for the file sigilyx-0.3.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sigilyx-0.3.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb0b6e17959fc3da60f1dc74cfa121b038ddb1895322fe34709f989cc204be7b
MD5 e034984bb2c2b849de97fbae2a38964b
BLAKE2b-256 5824e417b600a74a8fd27e635f203fe6e3a6d3a2b93b619006a5778512b4e26e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sigilyx-0.3.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Sigilweaver/SigilYX

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

File details

Details for the file sigilyx-0.3.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sigilyx-0.3.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8d8ce6893e1e1a8d5f41eea2e88d276548bd87cce1179c5810f647ddbdfa3a18
MD5 e4c112842354f7ffc1d3bc6eb6560bab
BLAKE2b-256 158a794de91418dfbf359327ed617714baa179d62eda3adbf1ee9f4f7da88158

See more details on using hashes here.

Provenance

The following attestation bundles were made for sigilyx-0.3.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Sigilweaver/SigilYX

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

File details

Details for the file sigilyx-0.3.3-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sigilyx-0.3.3-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e18dab1e0ae562e177af76d8acd9613437a0d42cfd313e63d71f7d426657a4c
MD5 49e981452a2c36a7f12acd6aeeb815fa
BLAKE2b-256 d20afd75d809027d5ab5daf264c31089db360cf877a1c1a260915a2ccfa4fce4

See more details on using hashes here.

Provenance

The following attestation bundles were made for sigilyx-0.3.3-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on Sigilweaver/SigilYX

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

Release history Release notifications | RSS feed

0.4.0

5 files

This release

0.3.3 This release

5 files

0.3.2

5 files

0.3.1

5 files

0.3.0

4 files

0.2.1

4 files

0.0.0

2 files

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