NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4389 most downloaded on PyPI
ROOT I/O in pure Python and NumPy.
Last release 1 months ago
20 Aug 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
9 years old
336 releases · first in 2017
perf: avoid full basket reads in num_entries_for and redundant reads on cache hits by @henryiii in #1649
Full Changelog: v5.7.5...v5.7.6
One column per quarter.
feat: support path objects with storage_options in uproot.open by @kratsg in https://github.com/scikit-hep/uproot5/pull/1641
library kwarg for RNTuples by @ariostas in https://github.com/scikit-hep/uproot5/pull/1632uproot.dask cannot handle grouped TObject properly by @mrzimu in https://github.com/scikit-hep/uproot5/pull/1642Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.4...v5.7.5
library kwarg for RNTuples by @ariostas in #1632uproot.dask cannot handle grouped TObject properly by @mrzimu in #1642Full Changelog: v5.7.4...v5.7.5
fix: issues with freethreading and include Python 3.14t in CI by @ariostas in https://github.com/scikit-hep/uproot5/pull/1619
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.3...v5.7.4
(none!)
Full Changelog: v5.7.3...v5.7.4
feat: add awkward_form method for TMatrixTSym-v5 model by @mrzimu in https://github.com/scikit-hep/uproot5/pull/1610
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.2...v5.7.3
Full Changelog: v5.7.2...v5.7.3
fix: make Library.__eq__ safe for invalid comparisons by @Rachit931 in https://github.com/scikit-hep/uproot5/pull/1565
(none!)
_from_zigzag applies bit shift on unsigned integers by @wdconinc in https://github.com/scikit-hep/uproot5/pull/1593Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.1...v5.7.2
(none!)
_from_zigzag applies bit shift on unsigned integers by @wdconinc in #1593Full Changelog: v5.7.1...v5.7.2
fix: Defer default timeouts to underlying libraries where possible by @chaen in https://github.com/scikit-hep/uproot5/pull/1560
None
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.0...v5.7.1
feat: set divisions to unknown if we expect a read error report in uproot.dask by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1543
uproot.dask by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1543uproot.dask by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1540uproot.dask by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1551Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.9...v5.7.0
uproot.dask by @ikrommyd in #1543uproot.dask by @ikrommyd in #1540uproot.dask by @ikrommyd in #1551Full Changelog: v5.6.9...v5.7.0
feat: implement VirtualArray support for RNTuples by @ariostas in https://github.com/scikit-hep/uproot5/pull/1503
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.8...v5.6.9
Full Changelog: v5.6.8...v5.6.9
fix: Revert "fix: Remove spaces in fParentName and fClassName when matching streamer" by @ariostas in https://github.com/scikit-hep/uproot5/pull/1519
(none!)
fParentName and fClassName when matching streamer" by @ariostas in https://github.com/scikit-hep/uproot5/pull/1519(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.7...v5.6.8
(none!)
fParentName and fClassName when matching streamer" by @ariostas in #1519(none!)
Full Changelog: v5.6.7...v5.6.8
feat: add tree to virtual array conversion by @pfackeldey in https://github.com/scikit-hep/uproot5/pull/1393
fParentName and fClassName when matching streamer by @mrzimu in https://github.com/scikit-hep/uproot5/pull/1505Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.6...v5.6.7
fParentName and fClassName when matching streamer by @mrzimu in #1505Full Changelog: v5.6.6...v5.6.7
fix: correctly write all Awkward array types to RNTuple by @ariostas in https://github.com/scikit-hep/uproot5/pull/1496
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.5...v5.6.6
feat: better show method for RNTuples by @ariostas in https://github.com/scikit-hep/uproot5/pull/1482
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.4...v5.6.5
fix: ignore case of file extension by @ariostas in https://github.com/scikit-hep/uproot5/pull/1465
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.3...v5.6.4
feat: Optimized Reading of RNTuple Data from Storage into GPU Memory via CuFile GDS or POSIX by @fstrug in https://github.com/scikit-hep/uproot5/pull/
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.2...v5.6.3
fix: Only dispatch requests to Source if we actually will use them by @nsmith- in https://github.com/scikit-hep/uproot5/pull/1436
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.1...v5.6.2
feat: RNTuple reading improvements by @ariostas in https://github.com/scikit-hep/uproot5/pull/1406
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.6.0...v5.6.1
feat: basic RNTuple writing by @ariostas in https://github.com/scikit-hep/uproot5/pull/1356
dask_write a tree reduction by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1386Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.5.2...v5.6.0
feat: support reading of custom-length RNTuple floats and suppressed columns by @ariostas in https://github.com/scikit-hep/uproot5/pull/1347
const in typename by @veprbl in https://github.com/scikit-hep/uproot5/pull/1231Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.5.1...v5.5.2
feat: support reading of custom-length RNTuple floats and suppressed columns by @ariostas in https://github.com/scikit-hep/uproot5/pull/1347
const in typename by @veprbl in https://github.com/scikit-hep/uproot5/pull/1231Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.5.2rc1...5.5.2rc2
fix: uproot was exposed in one place to dask's _task_spec overhaul by @lgray in https://github.com/scikit-hep/uproot5/pull/1352
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.5.1...v5.5.2rc1
This release adds support for reading RNTuple 1.0.0.0 and ATLAS PHYSLITE with pre-written AwkwardForth. Thanks @ariostas and @nikoladze!
This release adds support for reading RNTuple 1.0.0.0 and ATLAS PHYSLITE with pre-written AwkwardForth. Thanks @ariostas and @nikoladze!
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.5.0...v5.5.1
This release drops support for Python 3.8. The supported Python versions are now 3.9 through 3.13 (inclusive). Other than that, it does not differ fro
This release drops support for Python 3.8. The supported Python versions are now 3.9 through 3.13 (inclusive). Other than that, it does not differ from 5.4.2.
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.4.2...v5.5.0
fix: Adding signed versions of char,int,short,long for identify branches by @MatousVozak in https://github.com/scikit-hep/uproot5/pull/1316
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.4.1...v5.4.2
fix: first concurrency issue in Python 3.13t by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1310
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.4.0...v5.4.1
In Uproot 5.4.0, the xxhash library (python-xxhash on conda-forge) is now a required dependency.
In Uproot 5.4.0, the xxhash library (python-xxhash on conda-forge) is now a required dependency.
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.13...v5.4.0
This is the last release before xxhash becomes a strict dependency.
This is the last release before xxhash becomes a strict dependency.
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.12...v5.3.13
fix: TStreamerLoop code generation should make an array by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1277
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.11...v5.3.12
feat: implement TGraph-writing by @Pepesob in https://github.com/scikit-hep/uproot5/pull/1256
TBranch.array's veto of AsGrouped from ranges_or_baskets to HasBranches.arrays and HasBranches.iterate by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1269Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.10...v5.3.11
fix: don't require Form JSON to have 'parameters' by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1245
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.9...v5.3.10
The main thing that's new in this release (as opposed to tests, which are in the sdist but not the wheel) is that the metadata properly states that Up
The main thing that's new in this release (as opposed to tests, which are in the sdist but not the wheel) is that the metadata properly states that Uproot works under Python 3.12 (it's been tested since last October).
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.8...v5.3.9
feat: Implement read coalescing algorithm by @nsmith- in https://github.com/scikit-hep/uproot5/pull/1198
fields/formats, not first by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1224Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.7...v5.3.8
The purpose of this pre-release series is to make it easier to test and tune @nsmith-'s read coalescing algorithm in a large test environment.
The purpose of this pre-release series is to make it easier to test and tune @nsmith-'s read coalescing algorithm in a large test environment.
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.7...v5.3.8rc1
fix: don't let uproot.update mess up the TFile fVersion by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1212
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.6...v5.3.7
fix: bug in PR #1189's 'ignore_duplicates' implementation by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1209
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.5...v5.3.6
fix: https://root-forum.cern.ch/t/wrong-branch-type-detection/59236/25 by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1207
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.4...v5.3.5
fix: protect threading.Lock in AsObjects when serializing by @jpivarski in https://github.com/scikit-hep/uproot5/pull/1200
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.3...v5.3.4
This is the first release of Awkward Array that is compatible with NumPy 2.0.
This is the first release of Awkward Array that is compatible with NumPy 2.0.
std::bitset by @ioanaif in https://github.com/scikit-hep/uproot5/pull/1182Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.2...v5.3.3
feat: split ranges for large files read over http by @ioanaif in https://github.com/scikit-hep/uproot5/pull/1146
__array__ method to ROOTRVec, STLVector, and STLSet by @bojohnson5 in https://github.com/scikit-hep/uproot5/pull/1172np.dtype(branch_type) might raise ValueError, not just TypeError by @djw9497 in https://github.com/scikit-hep/uproot5/pull/1186Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.1...v5.3.2
The main purpose of this release is to make sure that the deployment machinery still works, now that the PYPI_PASSWORD had to be replaced.
The main purpose of this release is to make sure that the deployment machinery still works, now that the PYPI_PASSWORD had to be replaced.
Edit: it was successful: https://pypi.org/project/uproot/5.3.2rc1/
__array__ method to ROOTRVec, STLVector, and STLSet by @bojohnson5 in https://github.com/scikit-hep/uproot5/pull/1172Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.1...v5.3.2rc1
This is just to loosen the version constraint on cramjam, so that an Uproot 5.3.x can go into conda-forge without waiting for cramjam 2.8.1.
This is just to loosen the version constraint on cramjam, so that an Uproot 5.3.x can go into conda-forge without waiting for cramjam 2.8.1.
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.0...v5.3.1
The main new feature (and motivation for a new minor release, 5.3.0), is that Uproot now strictly depends on the cramjam library for compression, rath
The main new feature (and motivation for a new minor release, 5.3.0), is that Uproot now strictly depends on the cramjam library for compression, rather than optionally depending on lz4, xxhash, and zstd (prompting users to install them when needed, rather than upfront when Uproot is installed).
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.2...v5.3.0
feat: expose decompression_executor and interpretation_executor in uproot dask by @ioanaif in https://github.com/scikit-hep/uproot5/pull/1120
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.3.0rc1...v5.3.0rc2
The main new feature (and motivation for a new minor release, 5.3.0), is that Uproot now strictly depends on the cramjam library for compression, rath
The main new feature (and motivation for a new minor release, 5.3.0), is that Uproot now strictly depends on the cramjam library for compression, rather than optionally depending on lz4, xxhash, and zstd (prompting users to install them when needed, rather than upfront when Uproot is installed).
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.2...v5.3.0rc1
feat: add the ability to read RNTuple alias columns by @ioanaif in https://github.com/scikit-hep/uproot5/pull/1004
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.1...v5.2.2
This is a test of automatically assigning a version number using hatch-vcs.
This is a test of automatically assigning a version number using hatch-vcs.
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.1...v5.2.2rc1
feat: supply a pre-calculated base form to avoid file opening by @lgray in https://github.com/scikit-hep/uproot5/pull/1077
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.0...v5.2.1
This is the first version of Uproot that strictly depends on fsspec, which is now used for all file access (local and remote).
This is the first version of Uproot that strictly depends on fsspec, which is now used for all file access (local and remote).
fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009fsspec source by @lobis in https://github.com/scikit-hep/uproot5/pull/999report= argument for uproot.dask; trigger report collection (take 2!) by @douglasdavis in https://github.com/scikit-hep/uproot5/pull/1058pathlib.Path argument for writing by @lobis in https://github.com/scikit-hep/uproot5/pull/1031const std::string identification by @HaarigerHarald in https://github.com/scikit-hep/uproot5/pull/1043paramiko for ssh instead of sshfs by @lobis in https://github.com/scikit-hep/uproot5/pull/1014Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.2...v5.2.0
The only change in this release is that it's made from the main branch, with main-fsspec (all of the 5.2.0 changes) rebase-and-merged into it. Thus, t
The only change in this release is that it's made from the main branch, with main-fsspec (all of the 5.2.0 changes) rebase-and-merged into it. Thus, the order of the applied diffs may be a little different, but it should be the same code. If this pre-release is acceptable, we will follow with 5.2.0 with no changes. (5.2.0 will have a longer set of release notes because it will show differences with respect to 5.1.2.)
(none!)
(none!)
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/5.2.0rc4...v5.2.0rc5
feat: refactoring the AwkwardForth code-discovery process by @jpivarski in https://github.com/scikit-hep/uproot5/pull/943
report= argument for uproot.dask; trigger report collection (take 2!) by @douglasdavis in https://github.com/scikit-hep/uproot5/pull/1058const std::string identification by @HaarigerHarald in https://github.com/scikit-hep/uproot5/pull/1043Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.2.0rc3...v5.2.0rc4
feat: improve uri scheme parsing with list of available schemes from fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009
fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009fsspec source by @lobis in https://github.com/scikit-hep/uproot5/pull/999pathlib.Path argument for writing by @lobis in https://github.com/scikit-hep/uproot5/pull/1031paramiko for ssh instead of sshfs by @lobis in https://github.com/scikit-hep/uproot5/pull/1014Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.2...v5.2.0rc3
feat: improve uri scheme parsing with list of available schemes from fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009
fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009fsspec source by @lobis in https://github.com/scikit-hep/uproot5/pull/999pathlib.Path argument for writing by @lobis in https://github.com/scikit-hep/uproot5/pull/1031paramiko for ssh instead of sshfs by @lobis in https://github.com/scikit-hep/uproot5/pull/1014Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.2...v5.2.0rc2
feat: improve uri scheme parsing with list of available schemes from fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009
fsspec by @lobis in https://github.com/scikit-hep/uproot5/pull/1009fsspec source by @lobis in https://github.com/scikit-hep/uproot5/pull/999fsspec (s3fs) as default handler for s3 paths by @lobis in https://github.com/scikit-hep/uproot5/pull/1032pathlib.Path argument for writing by @lobis in https://github.com/scikit-hep/uproot5/pull/1031paramiko for ssh instead of sshfs by @lobis in https://github.com/scikit-hep/uproot5/pull/1014Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.2...v5.2.0rc1
feat: add support for current RNTuple files by @ioanaif in https://github.com/scikit-hep/uproot5/pull/962
fsspec integration) by @lobis in https://github.com/scikit-hep/uproot5/pull/976asyncio LoopExecutor and async fsspec source by @lobis in https://github.com/scikit-hep/uproot5/pull/992concurrent.futures.ThreadPoolExecutor by @lobis in https://github.com/scikit-hep/uproot5/pull/1001uproot.source module by @lobis in https://github.com/scikit-hep/uproot5/pull/996Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.1...v5.1.2
fix: typo in uproot.source.xrootd.XRootDSource name by @jpivarski in https://github.com/scikit-hep/uproot5/pull/990
(none!)
uproot.source.xrootd.XRootDSource name by @jpivarski in https://github.com/scikit-hep/uproot5/pull/990(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.0...v5.1.1
Yanked because of an error in handling XRootD URLs. Use 5.1.1 (or later) instead.
Yanked because of an error in handling XRootD URLs. Use 5.1.1 (or later) instead.
uproot.futures compatibility with concurrent.futures by @lobis in https://github.com/scikit-hep/uproot5/pull/983handler argument on uproot.reading.open by @lobis in https://github.com/scikit-hep/uproot5/pull/971fsspec source non-blocking chunks by @lobis in https://github.com/scikit-hep/uproot5/pull/979Content objects in writing by @agoose77 in https://github.com/scikit-hep/uproot5/pull/986Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.13...v5.1.0
feat: improve uproot.futures compatibility with concurrent.futures by @lobis in https://github.com/scikit-hep/uproot5/pull/983
uproot.futures compatibility with concurrent.futures by @lobis in https://github.com/scikit-hep/uproot5/pull/983handler argument on uproot.reading.open by @lobis in https://github.com/scikit-hep/uproot5/pull/971fsspec source non-blocking chunks by @lobis in https://github.com/scikit-hep/uproot5/pull/979Content objects in writing by @agoose77 in https://github.com/scikit-hep/uproot5/pull/986(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.0rc3...v5.1.0rc4
feat: add TLeafC - string - writing support by @ioanaif in https://github.com/scikit-hep/uproot5/pull/940
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.12...v5.1.0rc3
(Incremental changes; another pre-release to try out.)
(Incremental changes; another pre-release to try out.)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.1.0rc1...v5.1.0rc2
feat: add TLeafC - string - writing support by @ioanaif in https://github.com/scikit-hep/uproot5/pull/940
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.12...v5.1.0rc1
feat: add TLeafC - string - writing support by @ioanaif in https://github.com/scikit-hep/uproot5/pull/940
.data from NumpyArray by @agoose77 in https://github.com/scikit-hep/uproot5/pull/985Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.12...v5.0.13
Your coding agent can read these notes before it upgrades. Set up the MCP server →