Skip to content

feat: upgrade py-uproot to v5.7.1 for RNTuple format v1.0.1.0 support#243

Open
wdconinc wants to merge 5 commits intomasterfrom
fix/uproot-5.7
Open

feat: upgrade py-uproot to v5.7.1 for RNTuple format v1.0.1.0 support#243
wdconinc wants to merge 5 commits intomasterfrom
fix/uproot-5.7

Conversation

@wdconinc
Copy link
Copy Markdown
Contributor

@wdconinc wdconinc commented Apr 18, 2026

Problem

EICrecon PR eic/EICrecon#2469 converts CI output files from TTree to RNTuple format. The capybara comparison step fails because the eic-shell nightly container has uproot 5.6.3, which contains a bug in its array reading code for files written by ROOT 6.38.00 (RNTuple format v1.0.1.0).

Root Cause

uproot 5.6.3, even with the eic-spack patches that add v1.0.1.0 footer support, uses read_col_pages() for array reading. For certain column configurations in v1.0.1.0 files, this function returns an empty buffer, causing:

TypeError: size of array (0) is less than size of form (100)

uproot 5.7.0 rewrote the array reading path, replacing read_col_pages() with read_cluster_range(), which correctly handles all v1.0.1.0 column configurations.

Note: The eic-spack patches (88e69d47 for footer support, ee1b1d55 for zigzag fix) only fix footer parsing — they do not fix the read_col_pages array reading bug.

Changes

  1. spack-packages.sh: Cherry-picks commit 2c49a2c6a2f8a95c25e0add0e8fc67d1a5351f96 from spack/spack-packages ("Python HEP arrays: add new versions for awkward, uproot, vector, and others"), restricted to py_uproot/package.py only, to make py-uproot@5.7.1 available.

  2. spack-environment/packages.yaml: Adds py-uproot: require: '@5.7:' to force the container to use uproot 5.7.x.

Related PRs

ROOT 6.38.00 writes RNTuple format version 4. The previously pinned
uproot 5.6.3 (in spack-packages v2025.11.0) only supports RNTuple
format up to version 3, causing CI failures when comparing new RNTuple
output files with capybara.

uproot 5.7.0 (released 2025-01-13) added RNTuple v4 support. Cherry-
pick commit 2c49a2c6a2f8a95c25e0add0e8fc67d1a5351f96 from spack-packages
develop (restricted to py_uproot/package.py) to make v5.7.1 available,
and add a version requirement '@5.7:' to ensure it is selected.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 18, 2026 22:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the container Spack environment to ensure a newer py-uproot is selected, addressing ROOT 6.38.00 RNTuple format v1.0.1.0 compatibility in downstream CI (e.g., capybara comparisons).

Changes:

  • Cherry-pick a spack/spack-packages commit that adds py-uproot v5.7.1, restricted to the py_uproot/package.py file.
  • Add a packages.yaml constraint to require py-uproot >= 5.7 during concretization.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
spack-packages.sh Adds a cherry-pick (file-restricted) to bring in the py-uproot v5.7.1 package definition.
spack-environment/packages.yaml Adds a py-uproot version constraint so concretization selects uproot 5.7+.

Comment thread spack-environment/packages.yaml Outdated
Comment thread spack-environment/packages.yaml Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 18, 2026 22:33
Comment thread spack-packages.sh Outdated
Comment thread spack-packages.sh Outdated

This comment was marked as resolved.

Copilot AI review requested due to automatic review settings April 18, 2026 22:39
…(HEP): add new versions

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
@wdconinc wdconinc changed the title feat: upgrade py-uproot to v5.7.1 for RNTuple format v4 support feat: upgrade py-uproot to v5.7.1 for RNTuple format v1.0.1.0 support Apr 18, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread spack-environment/packages.yaml
Comment thread spack-packages.sh
Copilot AI review requested due to automatic review settings April 19, 2026 14:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

spack-packages.sh:67

  • SPACKPACKAGES_CHERRYPICKS_FILES does not include an entry for the newly-added commit 2c49a2c6..., so this cherry-pick will be applied without file restriction. That contradicts the PR description (restricted to py_uproot/package.py) and may unintentionally modify many packages. Add a [2c49a2c6...]=.../py_uproot/package.py entry (and any other intended paths) to enforce the restriction.
## Optional hash table with comma-separated file list
## For these commits, the cherry-pick will be restricted to the listed files only.
## For all other commits, the cherry-pick will be applied without restriction (default).
read -r -d '' SPACKPACKAGES_CHERRYPICKS_FILES <<- \
--- || true
[50433a4a02370e9035b85820cd438a64d5433749]=repos/spack_repo/builtin/packages/py_snakemake_interface_report_plugins/package.py
---

Comment thread spack-packages.sh
@veprbl
Copy link
Copy Markdown
Member

veprbl commented Apr 20, 2026

Linker is not happy with g4occt on aarch64

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.

3 participants