Skip to content

dataframely: Add version 3.0.0 - #2423

Draft
luhenry wants to merge 4 commits into
mainfrom
dataframely
Draft

luhenry wants to merge 4 commits into
mainfrom
dataframely

Conversation

@luhenry

@luhenry luhenry commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

Compiles dataframely's own PyO3 extension (dataframely._native), which patches Polars core/arrow onto a pinned pola-rs fork commit and links pyo3-polars. Upstream publishes no riscv64 wheel.

Mirrors upstream's build.yml.

Differs from upstream

  • Fat LTO/codegen-units=1 dropped, opt-level=1, CARGO_BUILD_JOBS=2 - riscv64 runner cannot afford upstream's release profile on this crate graph
  • Only linux-riscv64 built - upstream's macOS/Windows/other-Linux legs are out of scope here

Matrix: cp310-abi3 only, single leg - matches upstream's own single-interpreter maturin build (abi3-py310 covers cp310-cp314)

Testing

  • same as upstream's default (non-optional) unit-test leg, pytest tests -m "not with_optionals"

License: OK

dataframely is not a pure-Python Polars wrapper: it ships its own PyO3
extension (dataframely._native) built with maturin, and its Cargo.toml
patches polars/polars-core/polars-arrow/pyo3-polars onto a pinned pola-rs
fork commit, so building it compiles a full Polars-scale crate graph from
source -- comparable in size to build-polars-runtime.yml's own build.

Mirrors upstream's own build.yml (maturin-action, --release -i python3.10,
abi3-py310), narrowed to riscv64gc-unknown-linux-gnu on manylinux_2_39, with
the same fat-LTO override build-polars-runtime.yml and build-deltalake.yml
already carry for a crate graph of this size.
luhenry added a commit that referenced this pull request Sep 28, 2026
@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://riseproject-dev.github.io/python-wheels/pr-preview/pr-2423/

Built to branch gh-pages at 2026-09-29 04:17 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

…le tests

pypi.riseproject.dev's pyarrow only has riscv64 wheels for cp312+, so uv
cannot resolve it for the cp310 test venv. dataframely's own test suite
only hard-imports pyarrow in tests/columns/test_arrow_pycapsule.py, so
ignore that one module instead of pulling pyarrow in for this abi3 build.
The Test wheel step installs the just-built wheel then runs
`python -c 'import dataframely; ...'` and `python -m pytest tests ...`
from the checkout root. dataframely's pure-Python wrapper package
lives directly at that root, and both invocation forms unconditionally
prepend cwd to sys.path[0], so they resolved the checkout's own
dataframely/__init__.py (no compiled _native) instead of the wheel's
copy in site-packages (gotcha 25/218). Fix: cd /tmp first, and pass
the tests dir plus pytest's config file and --ignore path as
GITHUB_WORKSPACE-absolute so pytest can still find them.

Reproduced and verified the fix locally with a stand-in package tree
mimicking the checkout/site-packages split, for both the `python -c`
and `python -m pytest` invocations.
tests/benches/conftest.py imports pandas at module load, which pytest
collection needs even though the benchmark suite itself is not gated
by -m "not with_optionals". pypi.riseproject.dev already publishes a
cp310 riscv64 wheel for pandas (up through 2.3.2, before 3.0's
requires-python bump to >=3.11), so this resolves to a prebuilt wheel
rather than a from-source build.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant