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 #1823: test: tighten the existing tests and make their fixtures robust. (also: #1814, #1829, #1830, #1832, #1828, #1825)

  • PR #1819: chore(deps): bump the actions group with 2 updates.

  • PR #1820: docs: fix broken pybes3 link.

  • PR #1821: ci: fix test startup with pytest 9.2.

  • PR #1771: feat: support add_branches for jagged branches (#1764)

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

  • PR #1779: fix(rntuple): preserve optional records when writing and reading (#1713)

  • PR #1793: fix: index the GPU-decompressed RNTuple clusters from the first one read.

  • PR #1813: feat(graphed): report a tree’s entries through a source’s num_entries hook.

  • PR #1810: fix(graphed): default-named reads of different data share a Session.

  • PR #1801: fix: write correct entry offsets for jagged arrays with fixed-size inner dimensions. (also: #1490, #1490)

  • PR #1781: fix: deleting or replacing one cycle of a multi-cycle key raises IndexError.

  • PR #1802: fix: don’t write empty TBaskets for TTrees without entries. (also: #756)

  • PR #1800: perf: cache TBasket TKey sizes on the TBranch.

  • PR #1798: fix: raise read errors from coalesced requests.

  • PR #1803: fix: support already-open TTrees in iterate and concatenate.

  • PR #1794: fix: ak_add_doc={“__doc__”: “title”} documents an RNTuple from its descriptions again. (also: #1785)

  • PR #1797: perf: read TBasket TKeys in one request for memory-based step_size.

  • PR #1799: chore: require scikit-hep-testdata>=0.6.9.

  • PR #1795: fix(graphed): one source identity per tree, however its path is spelled.

  • PR #1763: fix: request TKey byte ranges with Python ints in basket_key. (also: #1649, #1756)

  • PR #1788: fix: don’t read an extra RNTuple cluster when entry_stop is on a cluster boundary. (also: #1780, #1786)

  • PR #1748: fix: preserve top-level RNTuple tuples.

  • PR #1777: fix: canonicalize input file paths for graphed duplicate refusal (#1767)

  • PR #1790: feat(graphed): record into the current graphed Session.

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

  • PR #1789: test: expect graphed’s one-binding-per-name rule.

  • PR #1783: perf: project RNTuple subfields in uproot.dask and uproot.graphed.

  • PR #1787: test: tolerate graphed’s positional-session deprecation.

  • PR #1785: fix: every dask/graphed reader adds ak_add_doc to an RNTuple form.

  • PR #1784: feat(graphed): record a read into an existing Session with session= and name= (also: #1, #2)

  • PR #1723: perf: look up RNTuple field keys in a set of prefixes. (also: #1637)

  • PR #1765: fix: handle negative and out-of-range indexes in TAxis.__getitem__.

  • PR #1780: fix: num_entries_for on RNTuple fields.

  • PR #1770: fix: support add_branches for ROOT written TTrees (#1764)

  • PR #1774: chore: require toml-sort>=0.25.0 for pretty-format-toml.

  • PR #1776: test: do not overwrite cached test files under pytest-xdist.

  • PR #1762: fix: form-driven RNTuple NumPy and pandas conversion (#1760)

  • PR #1772: fix: reject non-positive integer step_size in iterate.

  • PR #1773: chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0 in the actions group.

  • PR #1741: fix: read TArray members of a split std::vector without a header.

  • PR #1761: test: download all sample files before globbing them in test_0044.

  • PR #1758: feat: open only the first file in uproot.graphed, and add root_write for one-pass ROOT output.

  • PR #1752: fix: raise or warn on unrecognized options when opening files.

  • PR #1759: ci: pin pyarrow below 26 in the NumPy 1 job.

  • PR #1750: fix: support RNTuple in uproot.dask with library=”np” (also: #1749)

  • PR #1755: chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 in the actions group.

  • PR #1747: chore: test on Python 3.15 and mark it as supported.

  • PR #1751: ci: test against the latest Pyodide without pinned versions.

  • PR #1743: fix: accept storage options in create, recreate and update. (also: #1729)

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