Skip to main content

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)

Source distribution for rowver 15.0.0
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)

Table of built distributions (wheels) for rowver 15.0.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Release 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 log

Release 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 log

Security 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.

Select from 4 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

15.0.0 This release

4 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page