rowver (Python)
Read .rvr files in Python, through the same Rust reader as the rvr command, which this
package also installs: pip install rowver (Python 3.11 or later).
import rowver
f = rowver.open("higgs_tautau.rvr")
f # <rowver.File 'higgs_tautau.rvr': 2248 rows, 11 columns, 1 derived, 2 samples>
f.samples, f.columns # names, in the file's order
f["MET_pt"] # NumPy array, one value per row (no copy, read-only: .copy() to change it)
f["Muon_pt"] # Awkward array, a list per row
f["sample"], f["entry"] # each row's sample index, and its entry in its file's tree
f["MET_pt"][f.rows_of("GluGluToHToTauTau")] # one sample's rows: a slice, as a sample's rows come together
len(f), "MET_pt" in f # rows; whether it has a column of that name (sample and entry too)
f.keys() # every name f[...] reads: sample, entry, the columns, the derived ones, the sample columns
f.show() # the same, a line each with its kind (f.kinds) and a derived column's expression
f["xsec"] # a sample column (one value per sample), as its sample's value in every row
f.path, f.header # where it is; its JSON header, as a dict
f.derived # the derived columns: kept as expressions, worked out when first asked for
f["mean_jet_pt"] # a derived column, read as any other, checked against what the file records
f.slice("MET_pt", 100, 200) # rows 100 to 199 alone: only the chunks of the file that hold them read
f.slice("MET_pt", -100) # the last 100; f.slice(name, slice(a, b, step)) reads as a list's slice
f.labels # each sample's label, what a plot shows
f.sample_columns # per-sample values: events_read, events_total, metadata
f.recipe # the recipe.toml that made it
f.study # {"recipe.toml": …, "samples.toml": …, "samples.lock": …}
f.signed_by # the public key that signed it, or None
f.complete # whether it holds every entry its press chose (no holes, not empty)
f.empty # whether rvr empty let its columns go (rvr refill presses them again)
f.holes # what it could not read: [{"sample", "file", "entries", "kind", "why"}, …],
# entries (first, last) as the file records them, last not among them
f.arrays() # every column as one Awkward record array, sample and entry first
f.arrays(["MET_pt"]) # sample, entry, then the columns named
f.arrays(["MET_pt"], sample="GluGluToHToTauTau") # one sample's rows alone, only its chunks read (to_* too)
f.to_arrow() # a pyarrow Table (list columns as Arrow lists), sample and entry first
f.to_pandas() # a pandas DataFrame, sample (a categorical) and entry first
f.to_parquet("out.parquet")
with rowver.open("higgs_tautau.rvr") as f: # f.close() at the end: what it read stays,
met = f["MET_pt"] # its header still reads, a column then raises Error
The examples work with the columns of a file, and plot them with matplotlib, hist and ROOT.
A column is the same array each time it is asked for while anything holds it; the File keeps none
in memory itself, so memory is what your own variables hold. A File pickles as its path (for
multiprocessing, dask and the like), and a name it has no column of raises KeyError naming the
nearest it has. Every column asked for at once (f.read([...]), arrays, to_*) is read in parallel. Only
NumPy is required; Awkward, pyarrow and pandas are used when installed
(pip install "rowver[all]"). A file whose header does not check out raises rowver.Error, a
path that is not there FileNotFoundError; a file changed while it is read raises rowver.Error
saying so. rowver.validate(path) checks every array and works out every derived column, as
rvr validate does, and gives (rows, columns). Reading a column checks its chunk table and
every compressed frame's own checksum, and leaves each chunk's SHA-256 to rowver.validate. An open File holds one open file, through
which it reads, so a file renamed over it meanwhile is read as it was; dropping the File
(f.close(), or del f) lets it go (a system allows a few hundred open files: 256 in a macOS shell). These, rowver.open and rowver.File are the
whole package; every other name in it begins with _.
Building
From this folder, with Rust 1.91 or later: maturin develop --release installs it into the
active Python; maturin build --release writes a wheel (one for every Python from 3.11).
It builds on Linux and macOS.
MIT licensed.
Metadata
Release files for rowver 15.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| rowver-15.0.0.tar.gz | 919.8 kB | With provenance | Details for rowver-15.0.0.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| rowver-15.0.0-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details for rowver-15.0.0-cp311-abi3-manylinux_2_28_x86_64.whl |
| rowver-15.0.0-cp311-abi3-manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64 | Details for rowver-15.0.0-cp311-abi3-manylinux_2_28_aarch64.whl |
| rowver-15.0.0-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.11 | abi3 | macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64, macOS 10.12+ x86-64 | Details for rowver-15.0.0-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
Total release size: 51.5 MB
Release files / rowver-15.0.0.tar.gz
| Download URL | rowver-15.0.0.tar.gz |
|---|---|
| Size | 919.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af2c38d822667dbb9c9dee4dac9e8d1b0fef24fa9012c91fdcdd2b3640f4f09f
|
|
BLAKE2b-256 checksum How to use checksums |
1eb0cd1cb123be8970972e57d346f35fb10ee8e6505a554f18fc77fb15694ee1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 12, 2026.
Transparency logRelease files / rowver-15.0.0-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | rowver-15.0.0-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 21.9 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
31fcedeb14f1052d99988640baec4996b85cf63475a60bdcfb2535443dcda0bc
|
|
BLAKE2b-256 checksum How to use checksums |
0c352702bafad04ab39336e0dd34ad40b2bfe5ecff591df10777017d15b0ddbd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 12, 2026.
Transparency logRelease files / rowver-15.0.0-cp311-abi3-manylinux_2_28_aarch64.whl
| Download URL | rowver-15.0.0-cp311-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 19.4 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
00c2d8290e6d0558b4437dc8d93ebcfdd5111192aa42d235149fe4dbe7d84233
|
|
BLAKE2b-256 checksum How to use checksums |
a01d3bc825cb7a06ef228ae2d7d11e69829d8f15dd81ee894021166d2c08f50f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 12, 2026.
Transparency logRelease files / rowver-15.0.0-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | rowver-15.0.0-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 9.2 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
26d2520cdc53c93e14580e7178a74f85f2bdb5c75533473c96a242935b020c58
|
|
BLAKE2b-256 checksum How to use checksums |
f0ef46b111a66065ce814c29a821838e6155e357c99fdbb50567d3833dc61b07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 12, 2026.
Transparency logSecurity for rowver 15.0.0
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.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for rowver-15.0.0.tar.gz
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 Nov 12, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.