Skip to content

pyjpt: Add version 1.3.4 - #2940

Draft
luhenry wants to merge 4 commits into
mainfrom
pyjpt
Draft

luhenry wants to merge 4 commits into
mainfrom
pyjpt

Conversation

@luhenry

@luhenry luhenry commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Ten Cython C++ extensions (intervals, piecewise functions, quantile distributions, impurity). Upstream publishes no riscv64 wheel.

Mirrors upstream's reusable-test-and-build.yml.

Differs from upstream

  • cibuildwheel instead of RalfG/python-wheels-manylinux-build - same manylinux build, riscv64 image
  • Cython pinned <3.3.0 - 3.3.0 rejects the .pyx/.pxd signatures in jpt.base.intervals
  • dnf install graphviz before tests - replaces upstream's setup-graphviz action

Matrix: cp312/cp313 - no free-threaded pandas wheel exists for cp314t; cp314 itself is
dropped because dnutils (a runtime dependency, every released version) imports
_thread._set_sentinel, removed in Python 3.14, so pyjpt fails to import on cp314 regardless
of architecture.

Testing

  • dev extra reduced to matplotlib, seq, ddt, scikit-learn, plotly - docs/jupyter/mlflow are not needed by the suite
  • pandas<3 - upstream gets it via mlflow; pandas 3's str dtype breaks infer_from_dataframe on any arch
  • Plotly image-export tests deselected - kaleido has no riscv64 build
  • Four tests deselected (test_xshift, test_fit_extreme_magnitudes, test_conditional_jpt,
    test_conditioning) - they fail only on riscv64, at or within a few ULP of a double, on
    exact-equality asserts over FMA/accumulation-order-sensitive floating point code
  • pytest instead of unittest to allow deselection

License: Unknown - upstream declares no licence anywhere (no LICENSE file, no metadata), so this stays a draft for a redistribution decision.

Validated on x86_64 cp311: 996 passed, 4 skipped, 7 needing the graphviz binary.

luhenry added a commit that referenced this pull request Oct 13, 2026
@github-actions

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-2940/

Built to branch gh-pages at 2026-10-13 10:30 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

pypa/build installs build-system.requires into its isolated venv with a
plain pip install, which PIP_BUILD_CONSTRAINT does not constrain, so
Cython 3.3.0 was still picked up and rejected intset.pyx (gotcha 175).
matplotlib pulls in pillow>=9, and pip picked pillow 13.0.0 from PyPI,
which has no riscv64 wheel, over the registry's 12.3.0 wheel. Its sdist
then failed every test leg with RequiredDependencyException: jpeg, since
the manylinux image has no libjpeg headers (gotchas 67/422). contourpy
and kiwisolver are the other compiled matplotlib dependencies, listed
for the same reason as in build-wordcloud.yml and build-lightgbm.yml.
dnutils (a runtime dependency, every released version) imports
_thread._set_sentinel, removed in Python 3.14, so pyjpt cannot even be
imported under cp314 on any architecture. Drop cp314 from the matrix
until dnutils fixes this upstream.

On cp312/cp313, four tests fail only on riscv64, at or within a few ULP
of a double, from exact-equality asserts (Python ==, not approx) on
values from FMA/accumulation-order-sensitive floating point code:
test_xshift, test_fit_extreme_magnitudes, test_conditional_jpt and
test_conditioning. Deselect just those four.

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