Skip to main content

polars-gdx

Lazy, prefiltered Polars access to GAMS GDX files — no GAMS installation required.

  • scan_gdx(path, symbol=...) returns a pl.LazyFrame; nothing is read until collect(), and column projection is pushed down via Polars' IO-source interface. read_gdx(...) is the eager convenience wrapper (scan_gdx(...).collect(), same arguments).
  • Predicates on key columns (key_filter={dim_index: allowed_labels} or filter()) are folded into a native, index-based prefilter inside the Rust read loop, so unwanted records are never materialized — unlike the official gamsapi reader, which must load everything into pandas first.
  • Under the hood: hand-written FFI to the vendored MIT-licensed GDX C library, extracted from lolow/gdxcomp, building on GAMS-dev/gdx.

Usage

import polars as pl
from polars_gdx import scan_gdx, list_symbols

list_symbols("trnsport.gdx").filter(pl.col("type") == "Param")

# lazy: nothing read yet
x = scan_gdx("trnsport.gdx", symbol="x")

# read only the seattle rows, skipping all others natively
x.filter(pl.col("dim_0") == "seattle").collect()

# eager convenience: read_gdx = scan_gdx(...).collect()
from polars_gdx import read_gdx
df = read_gdx("trnsport.gdx", symbol="x", key_filter={0: ["seattle"]})

Benchmark

vs gamsapi 54.5.0 (pandas-backed), on a 2M-record parameter (80 MB GDX); best of 5 runs. See benchmarks/bench_vs_gamsapi.py (run as a CI job on every push).

Scenario polars-gdx gamsapi (pandas)
Full read (2M rows) 0.126 s 0.086 s
filter(dim_0 == label) — 1000 of 2M rows 0.081 s 0.087 s¹
Explicit key_filter — 1000 rows 0.080 s —

¹ gamsapi has no lazy loading or pushdown: it must materialize the whole symbol, then filter. The advantage of polars-gdx grows with predicate selectivity.

Build

maturin develop --release   # builds the vendored GDX C library + extension
pytest

Requires a C++17 compiler and CMake ≥ 3.5 at build time; runtime has no GAMS dependency.

Layout

crates/gdx-sys        # raw FFI; builds vendored GDX-dev/gdx via CMake
crates/gdx            # safe RAII wrapper (global lock; lazy UEL interning)
crates/polars-gdx     # PyO3 extension: symbol listing + Arrow streaming with prefiltering
python/polars_gdx     # Python layer: scan_gdx / list_symbols

Metadata

Release files for polars-gdx 0.1.0

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

Source distribution (sdist)

Source distribution for polars-gdx 0.1.0
File Size Uploaded
polars_gdx-0.1.0.tar.gz 2.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for polars-gdx 0.1.0
File
polars_gdx-0.1.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
polars_gdx-0.1.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
polars_gdx-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 5.1 MB

Release files / polars_gdx-0.1.0.tar.gz

Download URL polars_gdx-0.1.0.tar.gz
Size 2.3 MB
Tags Source
SHA-256 checksum
How to use checksums
cd506e832ba98f692dcea1afaaf7763e3bdab83376c19fd34ad8ffa07a6d8f07
BLAKE2b-256 checksum
How to use checksums
459c470fd58254bf96f85e70ea3f23b7000406ed5c62d97d03eba71eef476379
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / polars_gdx-0.1.0-cp39-abi3-win_amd64.whl

Download URL polars_gdx-0.1.0-cp39-abi3-win_amd64.whl
Size 680.5 kB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
c916faceb229a60aab211bd486b19144617f082dc8ab131782691679d1d9db71
BLAKE2b-256 checksum
How to use checksums
508cdccef95942fe7ccaf8b972981f573777990a6ac9ee8f0f4c92c79948f2ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_x86_64.whl
Size 569.4 kB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
7e6164465e8d2f5c7465fff610c265206c36ec715c3e807de04cf6f406fe5909
BLAKE2b-256 checksum
How to use checksums
0a461955ce3e2f77ffd46cb67bdf27dd2db32b47774d403e72e96aba15d9e3ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL polars_gdx-0.1.0-cp39-abi3-manylinux_2_28_aarch64.whl
Size 543.1 kB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
2ce4b6c1a92879de5408e51af97e1f1656e06629e898b439e2f5791ff296ee3e
BLAKE2b-256 checksum
How to use checksums
68e32c97378d7b0ad20bb90f0a97f2dfcb8f1c4397664f172e7b734f9cff7d48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / polars_gdx-0.1.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL polars_gdx-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
Size 473.5 kB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9b70089907532154fd8dfdc8d28df96a5d01c00e250b814e3aca5fdaa551acac
BLAKE2b-256 checksum
How to use checksums
adda94136a92f0a11c242cb6afa7186c1722e18f17a933d2ea1aee67f7de0355
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / polars_gdx-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL polars_gdx-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 509.0 kB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
931dc7b94fc0a7d99df6812106ee0261c21846b319e0f5a0979dbd4453a3fbed
BLAKE2b-256 checksum
How to use checksums
f03df5deb82d0781199d10a26448dd4b47203d8607373801989626896b8bbc6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

6 release files

0.5.0

6 release files

0.4.0

6 release files

0.3.1

6 release files

0.3.0

6 release files

0.2.0

6 release files

0.1.3

6 release files

0.1.2

6 release files

0.1.1

6 release files

This release

0.1.0 This release

6 release 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