Release history

Note: Releases in the 4.3.x series were developed in parallel with v5.0 on a separate branch and are not included here. See the list of 4.x releases for details.

Unreleased (main branch on GitHub)

  • PR #1695: test: serve S3 tests from a local moto server. (also: #1693, #1693)

  • PR #1689: fix: uproot.update should accept other valid UUID versions.

  • PR #1701: chore(deps): bump the actions group with 3 updates.

  • PR #1694: chore: update pre-commit hooks.

  • PR #1691: fix: intermitten issue with fsspec on free-threaded Python.

  • PR #1692: chore(deps): bump the actions group with 4 updates.

  • PR #1660: fix: interpretation-layer bugs (pandas NaN fallback, typename parsing, strided objects, bitset) (also: #1646)

  • PR #1659: fix: core model/streamer/deserialization bugs and hot-path performance.

  • PR #1656: fix: entry-range arithmetic in iterate/concatenate and basket selection.

  • PR #1657: fix: TTree-writing bugs (sliced string arrays, nested recarrays, fLen, TGraph y-range, oversized compression blocks)

  • PR #1654: fix: source/sink error paths, leaks, and hot-path cleanups. (also: #1646)

  • PR #1683: docs: document Awkward how=zip grouping.

  • PR #1655: fix: model member-name and AwkwardForth-API bugs in TTree v18, TTime, TAtt. (also: #1647)

  • PR #1653: fix: HTTP source multipart batching, fallback leak, and close behavior. (also: #1646)

  • PR #1661: fix: utility-layer bugs (steps leakage, dask error paths, LRU cache) and Py2-era cleanup. (also: #1646, #1660, #1646)

  • PR #1652: fix: RNTuple page deserialization copies, split-column sizing, and cluster-index pairing. (also: #1646, #1646)

  • PR #1658: fix: RNTuple/TBranch behavior edge cases (KeyInFileError, global iterate offsets, ak_add_doc forwarding) (also: #1646)

  • PR #1651: fix: TProfile2D/3D weighted and counts() were broken for N-D profiles. (also: #1646)

  • PR #1650: fix: RNTuple footer leak on extend, broken WritableNTuple.compression, directory __delitem__ KeyError.

  • PR #1649: perf: avoid full basket reads in num_entries_for and redundant reads on cache hits.

  • PR #1684: chore(deps): bump the actions group across 1 directory with 2 updates.

  • PR #1679: chore: update pre-commit hooks.

  • PR #1678: docs: add Yokubas as a contributor for code.

Release v5.7.5

Saturday, 04 July, 2026 (pip, tar, zip)

## New features * feat: support path objects with storage_options in uproot.open by @kratsg in https://github.com/scikit-hep/uproot5/pull/1641 * feat: finish implementing library kwarg for RNTuples by @ariostas in https://github.com/scikit-hep/uproot5/pull/1632

## Bug-fixes and performance * fix: implement report=True for RNTuple.iterate by @KaranSinghDev in https://github.com/scikit-hep/uproot5/pull/1630 * fix: uproot.dask cannot handle grouped TObject properly by @mrzimu in https://github.com/scikit-hep/uproot5/pull/1642 * fix: add typenames to form so Coffea can use them by @ariostas in https://github.com/scikit-hep/uproot5/pull/1668 * fix: interpretation dtype handling returned byte-swapped data by @henryiii in https://github.com/scikit-hep/uproot5/pull/1648 * fix: avoid std::any in pyroot_to_buffer to support older ROOT versions by @Paramveersingh-S in https://github.com/scikit-hep/uproot5/pull/1667 * fix: accidental dropping of AsGrouped by @ariostas in https://github.com/scikit-hep/uproot5/pull/1670 * fix: concurrency settings from build workflow by @ianna in https://github.com/scikit-hep/uproot5/pull/1675

## Other * ci: pin micromamba version and bump Pyodide version by @ariostas in https://github.com/scikit-hep/uproot5/pull/1633 * chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/scikit-hep/uproot5/pull/1626 * ci: Move fsspec-xrootd into separate dependency group by @ariostas in https://github.com/scikit-hep/uproot5/pull/1639 * chore(ci): harden ci config by @ariostas in https://github.com/scikit-hep/uproot5/pull/1635 * chore: improve streamer reading by @ariostas in https://github.com/scikit-hep/uproot5/pull/1644 * chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/scikit-hep/uproot5/pull/1638 * chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the actions group across 1 directory by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1645 * chore: add an AGENTS file by @henryiii in https://github.com/scikit-hep/uproot5/pull/1647 * chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1662 * chore(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1663 * chore: exclude awkward and skhep-testdata from delay requirement by @ariostas in https://github.com/scikit-hep/uproot5/pull/1665 * chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1666 * test: fix importorskip statements in tests by @ikrommyd in https://github.com/scikit-hep/uproot5/pull/1671 * chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1672

## New Contributors * @Paramveersingh-S made their first contribution in https://github.com/scikit-hep/uproot5/pull/1667

Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.4…v5.7.5

  • PR #1675: fix: remove concurrency settings from build workflow.

  • PR #1670: fix: accidental dropping of AsGrouped.

  • PR #1667: fix: avoid std::any in pyroot_to_buffer to support older ROOT versions. (also: #1627)

  • PR #1672: chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 in the actions group.

  • PR #1648: fix: interpretation dtype handling returned byte-swapped data.

  • PR #1671: test: fix importorskip statements in tests.

  • PR #1668: fix: add typenames to form so Coffea can use them.

  • PR #1632: feat: finish implementing library kwarg for RNTuples.

  • PR #1666: chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 in the actions group.

  • PR #1642: fix: uproot.dask cannot handle grouped TObject properly.

  • PR #1665: chore: exclude awkward and skhep-testdata from delay requirement.

  • PR #1663: chore(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 in the actions group.

  • PR #1641: feat: support path objects with storage_options in uproot.open.

  • PR #1662: chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in the actions group.

  • PR #1647: chore: add an AGENTS file.

  • PR #1645: chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the actions group across 1 directory.

  • PR #1638: chore: update pre-commit hooks.

  • PR #1644: chore: improve streamer reading.

  • PR #1635: chore(ci): harden ci config.

  • PR #1639: ci: Move fsspec-xrootd into separate dependency group.

  • PR #1630: fix: implement report=True for RNTuple.iterate.

  • PR #1626: chore: update pre-commit hooks.

  • PR #1633: ci: pin micromamba version and bump Pyodide version.

Release v5.7.4

Thursday, 30 April, 2026 (pip, tar, zip)

## New features _(none!)_

## Bug-fixes and performance * fix: issues with freethreading and include Python 3.14t in CI by @ariostas in https://github.com/scikit-hep/uproot5/pull/1619 * fix: TProfile reading and writing logic by @ariostas in https://github.com/scikit-hep/uproot5/pull/1609 * fix: FreeSegments end calculation when crossing 2 GB boundary by @ariostas in https://github.com/scikit-hep/uproot5/pull/1622

## Other * chore(deps): bump mymindstorm/setup-emsdk from 14 to 15 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1613 * chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/scikit-hep/uproot5/pull/1614 * chore(ci): resolve issues with GPU CI by @ariostas in https://github.com/scikit-hep/uproot5/pull/1615 * ci: bump setup-uv to maintained tag scheme by @henryiii in https://github.com/scikit-hep/uproot5/pull/1616 * chore(deps): bump mymindstorm/setup-emsdk from 15 to 16 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1618 * chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1621 * chore(deps): bump scientific-python/upload-nightly-action from 0.6.3 to 0.6.4 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1623 * docs: update to reflect that RNTuple is the default writing format by @ariostas in https://github.com/scikit-hep/uproot5/pull/1624

Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.7.3…v5.7.4

  • PR #1624: docs: update to reflect that RNTuple is the default writing format.

  • PR #1622: fix: FreeSegments end calculation when crossing 2 GB boundary.

  • PR #1609: fix: TProfile reading and writing logic.

  • PR #1623: chore(deps): bump scientific-python/upload-nightly-action from 0.6.3 to 0.6.4 in the actions group.

Earlier releases

Uproot versions 1 through 3 were in a different GitHub repository: scikit-hep/uproot3.

This was to allow users to transition from Awkward Array 0.x and Uproot 3.x, which had different interfaces (especially Awkward Array). The transition completed on December 1, 2020.

https://raw.githubusercontent.com/scikit-hep/uproot5/main/docs-img/diagrams/uproot-awkward-timeline.png