Conversation
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
Contributor
|
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dataframely3.0.0Compiles 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
CARGO_BUILD_JOBS=2- riscv64 runner cannot afford upstream's release profile on this crate graphMatrix: cp310-abi3 only, single leg - matches upstream's own single-interpreter maturin build (
abi3-py310covers cp310-cp314)Testing
pytest tests -m "not with_optionals"License: OK