NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3024 most downloaded on PyPI
ROOT I/O in pure Python and NumPy.
Last release 29 days 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
fix: changelog script ignores releases past 5.0.0rc2 by @JostMigenda in https://github.com/scikit-hep/uproot5/pull/935
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.11...v5.0.12
One column per quarter.
feat: Support reading from S3 by @veprbl in https://github.com/scikit-hep/uproot5/pull/916
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.10...v5.0.11
feat: add unproject_layout support by @agoose77 in https://github.com/scikit-hep/uproot5/pull/900
unproject_layout support by @agoose77 in https://github.com/scikit-hep/uproot5/pull/900Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.9...v5.0.10
fix: if using form remapping start off with full list of remapped columns by @lgray in https://github.com/scikit-hep/uproot5/pull/905
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.8...v5.0.9
feat: chunk specification in uproot.dask by @lgray in https://github.com/scikit-hep/uproot5/pull/898
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.7...v5.0.8
Note: This release introduces a slight change in behavior. Previously, uproot.dask would default to step_size="100 MB" if open_files=True and whole-fi
Note: This release introduces a slight change in behavior. Previously, uproot.dask would default to step_size="100 MB" if open_files=True and whole-file-steps (limit on step size) if open_files=False. Now both open_files cases default to steps_per_file=1 (whole-file-steps) for uniformity. If you have been using uproot.dask and this version suddenly gives you large Dask partitions, use either step_size or steps_per_file to control your partition size (step_size="100 MB" is the old behavior).
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.6...v5.0.7
feat: add pyodide support for jupyter-lite for files opened via HTTP by @ioanaif in https://github.com/scikit-hep/uproot5/pull/868
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.5...v5.0.6
fix: test 0814 name by @ioanaif in https://github.com/scikit-hep/uproot5/pull/845
(none!)
var_set logic with a check to see if the Form is complete by @jpivarski in https://github.com/scikit-hep/uproot5/pull/851Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.4...v5.0.5
feat: allow uproot.dask to re-map forms at the data source by @lgray in https://github.com/scikit-hep/uproot5/pull/830
uproot.dask to re-map forms at the data source by @lgray in https://github.com/scikit-hep/uproot5/pull/830_awkward_forth.symbol_dict was missing np.dtype(">i1") by @jpivarski in https://github.com/scikit-hep/uproot5/pull/827Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.3...v5.0.4
feat: Infrastructure for writing of RNTuple (incomplete functionality) by @Moelf in https://github.com/scikit-hep/uproot5/pull/705
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.2...v5.0.3
fix: uproot.dask: Protect against branches=None in project_columns by @douglasdavis in https://github.com/scikit-hep/uproot5/pull/806
(none!)
branches=None in project_columns by @douglasdavis in https://github.com/scikit-hep/uproot5/pull/806Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.1...v5.0.2
fix: protect Uproot's 'project_columns' from Dask node names. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/801
(none!)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.0...v5.0.1
test: adjust for boost-histogram 1.3.2's _storage_type deprecation. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/719
Uproot version 5 has a few major new features, one removal (uproot.lazy), and is based on Awkward Array version 2 instead of version 1.
@kkothari2001 upgraded Uproot from Awkward version 1 to version 2, the major part of which was replacing uproot.lazy, which is based on Awkward 1's virtual and partitioned lazy arrays, with the new Dask collection, dask-awkward. The entry point for this function is uproot.dask.
@kkothari2001 also simplified Uproot's Pandas backend, which used to "explode" ragged arrays from ROOT into Pandas DataFrames with a non-trivial MultiIndex. Now, it takes advantage of awkward-pandas to put ragged (and more complex) Awkward Arrays directly into Pandas columns.
If you want the old behavior, you can read data using library="ak" to get an Awkward Array, and use ak.to_dataframe to "explode" the data into a MultiIndex.
@aryan26roy added a new code path to the TTree-reading routines to read them with AwkwardForth instead of pure Python. Users won't see any interface changes due to this code, but the performance of reading TBranches with AsObject or AsStrings Interpretations should be orders of magnitude faster. For example, std::vector<std::vector<float>> reading is now 400× faster.
@Moelf added a complete reader of RNTuple data with most of an RNTuple-writer in an unmerged pull request (#705). Although the RNTuple format is still in development, this is a very good start at reading RNTuple data, whose structure is a close match to Awkward Arrays (so the translation is more one-to-one than it is for TTrees, for instance).
from_map like optimization for dask arrays by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/679from_map optimization for delayed numpy arrays and add tests with empty branches for the same by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/703semantic-pr-title by @agoose77 in https://github.com/scikit-hep/uproot5/pull/691"uproot" parameter. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/770uproot.dask docs by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/702Full Changelog: https://github.com/scikit-hep/uproot5/compare/4.2.4...v5.0.0
feat: support categorical axes on boost histograms by @lobis in https://github.com/scikit-hep/uproot5/pull/764
uproot.dask docs by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/702Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.0rc6...v5.0.0rc7
This release is coordinated with Awkward 2.0.0rc2 because it involves a change that had to be applied to both (removal of Identifier/Identities).
This release is coordinated with Awkward 2.0.0rc2 because it involves a change that had to be applied to both (removal of Identifier/Identities).
(none!)
"uproot" parameter. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/770Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.0rc5...v5.0.0rc6
This is the first Uproot release that requires awkward>=2.0.0rc1. See Awkward Array v2.0.0rc1.
This is the first Uproot release that requires awkward>=2.0.0rc1. See Awkward Array v2.0.0rc1.
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.0rc4...v5.0.0rc5
chore: drop Python 3.6. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/742
(none)
(none)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v5.0.0rc3...v5.0.0rc4
test: adjust for boost-histogram 1.3.2's _storage_type deprecation. by @jpivarski in https://github.com/scikit-hep/uproot5/pull/719
from_map like optimization for dask arrays by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/679from_map optimization for delayed numpy arrays and add tests with empty branches for the same by @kkothari2001 in https://github.com/scikit-hep/uproot5/pull/703semantic-pr-title by @agoose77 in https://github.com/scikit-hep/uproot5/pull/691Full Changelog: https://github.com/scikit-hep/uproot5/compare/5.0.0rc2...v5.0.0rc3
@Moelf reached a first milestone in implementing an RNTuple reader: basic and jagged arrays from all sorts of STL containers: PR #630, #662. Multiple
Development of Uproot v5:
@Moelf reached a first milestone in implementing an RNTuple reader: basic and jagged arrays from all sorts of STL containers: PR #630, #662. Multiple clusters for RNTuple: PR #682.
@kakwok fixed the RAII state of ReadOnlyDirectory in the corner-case fSeekKeys == 0: PR #660.
@kkothari2001 added uproot.dask support for Awkward arrays using dask-awkward: PR #652.
@jpivarski fixed pathlib.Path handling of double slashes in URLs: PR #670. Fixed number of overflow bins in hist.axis.IntCategory: PR #671. Prevented std::pair from being AsStridedObjects (which doesn't work): PR #673. Properly handled transformed axis from boost-histogram: PR #675. Fixed a bug caused by AsDynamic with self._header: PR #674. Fixed WritableTTree's write_anew when in a subdirectory: PR #677.
@henryiii made many CI updates, concluding with a move to hatchling: PRs #686, #684, #685, #683, #688.
This is the first 5.0 (pre) release!
This is the first 5.0 (pre) release!
It should not be considered stable, and it strictly requires Awkward 2.0, so you need to have the latest pre-release of that. This may be reflected in the lazy import of awkward; if not, a subsequent 5.0 pre-release will get that right.
Changes relative to any 4.x release:
@kkothari2001 removed the uproot.lazy function (though a stub remains for the sake of keeping the documentation until 5.0 is actually released): PR #615. Updated the entire codebase from Awkward 1.x to Awkward 2.x: PR #620.
@aryan26roy changed arguments in the awkward_form method: PR #617. (@jpivarski fixed a bug in it: PR #622.) @aryan26roy completed an AwkwardForth-based reader for AsStrings: PR #616. Made the Python code generation in streamers.py more readable: #629. Revised the way that the AwkwardForth code generator would pass through the control flow: PR #636.
@henryiii added dependabot for GitHub Actions: PR #631. Cleaned up flake8: PR #527.
@jpivarski fixed a performance bug, to allow linear-time iteration over TDirectory fields: PR #638 (backported to v4 as well). Set up as close as possible to full-coverage tests for AwkwardForth: #637.
fix: avoid empty TBasket issue in embedded TBasket (v4) by @jpivarski in https://github.com/scikit-hep/uproot5/pull/752
(none)
(none)
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v4.3.6...v4.3.7
test: adjust for boost-histogram 1.3.2's _storage_type deprecation (v4). by @jpivarski in https://github.com/scikit-hep/uproot5/pull/720
Full Changelog: https://github.com/scikit-hep/uproot5/compare/v4.3.5...v4.3.6
feat: Implement transformed axis from boost-histogram/hist (v4). by @jpivarski in https://github.com/scikit-hep/uproot5/pull/676
Full Changelog: https://github.com/scikit-hep/uproot5/compare/4.3.4...v4.3.5
@kakwok fixed uninitialized attributes of ReadOnlyDirectory: PR #660 (v5) and #661 (v4).
@kakwok fixed uninitialized attributes of ReadOnlyDirectory: PR #660 (v5) and #661 (v4).
@jpivarski fixed an _O(n²)_ scaling bug in getting data from TDirectories. Now it's _O(n)_. (Matters for large TDirectories.)
@jpivarski fixed an O(n²) scaling bug in getting data from TDirectories. Now it's O(n). (Matters for large TDirectories.)
PR #638 in main and #639 in main-v4. This release is from main-v4.
@jpivarski cleanly ensured all Interpretation.awkward_form signatures have been reverted (even AsJagged): PR #627.
@jpivarski cleanly ensured all Interpretation.awkward_form signatures have been reverted (even AsJagged): PR #627.
@jpivarski applied this fix: https://github.com/scikit-hep/uproot5/pull/618#discussion_r903623799.
@jpivarski applied this fix: https://github.com/scikit-hep/uproot5/pull/618#discussion_r903623799.
First Uproot 4 release from the bug-fix branch.
First Uproot 4 release from the bug-fix branch.
@jpivarski added a TMatrixTSym model (long stalled PR): #484.
@aryan26roy restored the argument list of Interpretation.awkward_form, a public function: PR #618.
@kkothari2001 implemented uproot.dask (for library="np" only), a new function to provide Uproot data as Dask arrays: PRs #578, #603. Added another new
@kkothari2001 implemented uproot.dask (for library="np" only), a new function to provide Uproot data as Dask arrays: PRs #578, #603. Added another new function, uproot.num_entries, for getting the number of TTree entries from a set of files with minimal reading: PR #609.
@jpivarski removed tests that rely on a ROOT TStreamerInfo behavior: PR #612. Changed awkward_form arguments to (self, file, context) so that new pseudo-arguments can be passed through the context without another major code change: PR #611. This is to prepare for @aryan26roy's AwkwardForth implementation of AsObjects interpretations (see #610, WIP targeting Uproot 5).
Note: this is the last Uproot 4 release before the repo branches into main (for version 5) and main-v4 (for bug-fixes in Uproot 4, starting with 4.3.0). Uproot 5 will incorporate Awkward version 2, as described in the Awkward road map, but it will have minimal interface changes relative to Uproot 4 (mostly just uproot.lazy → uproot.dask).
@jpivarski fixed the use of Unicode names for objects in ROOT files: PR #577. Made flow=True mean the same thing for Uproot histograms as hist: PR #58
@jpivarski fixed the use of Unicode names for objects in ROOT files: PR #577. Made flow=True mean the same thing for Uproot histograms as hist: PR #582. Added an interpretation for ROOT::VecOps::RVec: PR #593. Replaced an error message in HTTPSource with a fallback to the non-multipart-GET case: PR #594. Put an upper limit on the time KeyInFileError takes to print itself: PR #595.
@jpivarski fixed #572: PR #573.
@jpivarski fixed #572: PR #573.
…number of bits): PR #561. Removed references to deprecated distutils and Pandas Int64Index: PR #564. Removed the rule that interpreted fBits as 1 byte…
@henryiii removed wheel from pyproject.toml: PR #565.
@jpivarski added a rule to skip parsing Float16/Double32 TBranch titles if the title is not parsable (and just assume default number of bits): PR #561. Removed references to deprecated distutils and Pandas Int64Index: PR #564. Removed the rule that interpreted fBits as 1 byte (it's 4 bytes everywhere except in some branches of some Delphes files): PR #570.
Dropped support for Pythons 2.7 and 3.5: PR #525. From now on, Uproot only supports Python 3.6 and up.
Dropped support for Pythons 2.7 and 3.5: PR #525. From now on, Uproot only supports Python 3.6 and up.
@henryiii dropped Python2isms from the codebase: PR #526.
@jrueb made writing to Python file handles work (fixed a half-finished, forgotten implementation): PR #538.
@jpivarski fixed cut jagged-array corner-case in library="pd". Fixed a case in which the instance version is 0, but the streamer version is not: PR #537. Fixed uproot.WritableTTree.extend when the metadata needs to be rewritten: PR #547. When checking to see if something in file["name"] = something is an Awkward Array or Pandas DataFrame for creating a TTree, also check for superclasses (the whole mro): PR #557.
The 4.1.x series is the last to support Python 2.7 and Python 3.5. From 4.2.0 onward, only Python 3.6 and above will be supported.
The 4.1.x series is the last to support Python 2.7 and Python 3.5. From 4.2.0 onward, only Python 3.6 and above will be supported.
(Any bug-fixes that absolutely must be used in an old Python environment will need to be versions 4.1.10, 4.1.11, etc., and these won't include features and regular maintenance that go into the main branch, 4.2.x and beyond.)
In this version:
@pfackeldey removed an unnecessary copy of memory-mapped data.
@veprbl exposed the data property of TTable: PR #506.
@jpivarski added an example of RNTuple header parsing: accidentally as 4bb0f6aedbe7e9a8ba8feb166a16e71274259d26, rather than a formal PR. Added more careful DataFrame-checking code in TTree-writing, to avoid a spurious error message: PR #517. Fixed a picking issue with histograms (just the TAxis) by ensuring that all Behaviors are not Python Abstract Base Classes: PR #521.
@masonproffitt fixed warning message for old versions of XRootD/pyxrootd (before 4.11.1): PR #501.
@masonproffitt fixed warning message for old versions of XRootD/pyxrootd (before 4.11.1): PR #501.
@jpivarski fixed conflicts between explicitly specified TBranches and automatically generated counter-TBranches when they have the same name: PR #499. Also, uproot.lazy identifies the only TTree in a file even if there are multiple with the same name, different cycle numbers: PR #500.
@mpad added an AsDtypeInPlace interpretation to read data into a preallocated array (in library="np" mode): PR #487.
@mpad added an AsDtypeInPlace interpretation to read data into a preallocated array (in library="np" mode): PR #487.
@jpivarski restricted Uproot 4.x to Awkward 1.x in pip install uproot[dev] as well as at runtime.
@duncanmmacleod included the test suite in the source distribution: PR #477.
@duncanmmacleod included the test suite in the source distribution: PR #477.
@btovar fixed exception handling in XRootD callback threads by passing them on to the main thread: PR #480.
@jpivarski restricted Uproot 4.x to Awkward 1.x: PR #478. Also fixed some bugs when writing TTrees to preexisting files ("update" mode): PR #488.
@jpivarski fixed another Uproot-writing bug: writing TTrees didn't update the FreeSegments record, which means that writing another TTree (with anothe
@jpivarski fixed another Uproot-writing bug: writing TTrees didn't update the FreeSegments record, which means that writing another TTree (with another file handle, with uproot.update or ROOT) could overwrite the first TTree.
Like 4.1.4, this is an important bug-fix for anyone creating a robust dataset of ROOT files. (It doesn't affect you if you consider all files to be write-once only, but if you're ever thinking of updating files, this will matter. And besides, correctness is important in principle!)
@jpivarski added TStreamerInfo for TTrees in files written by Uproot. If you're using an older version, you're producing files without TStreamerInfo!
@jpivarski added TStreamerInfo for TTrees in files written by Uproot. If you're using an older version, you're producing files without TStreamerInfo! (Which means they won't be readable in some older versions of ROOT, and possibly not new ones, either.) PR #472.
Also corrected the TLeaf fTitle for jagged arrays, which is needed to read jagged arrays back in ROOT's TTree::Draw and TTree::Scan, but not for iteration in PyROOT (which is what we had been using for testing). PR #458.
Added an implementation of non-split TClonesArray, which makes more files readable: PR #467, and added RNTuple to the must_be_attached list, which enables RNTuple objects to read more data (like TTrees): PR #463. That's just a step in developing RNTuple-reading capabilities.
@nsmith- fixed Awkward Forms for objects: PR #441, and implemented regular array support for TClonesArray: PR #442.
@nsmith- fixed Awkward Forms for objects: PR #441, and implemented regular array support for TClonesArray: PR #442.
@jpivarski fixed Pandas representations of leaf-lists (structs) and non-leaf-lists in the same DataFrame: PR #449. Fixed uproot.lazy for empty TTrees and boost-histogram with no title: #451. Fixed issue #439 by checking to see if an array is an Awkward Array before checking to see if it could be NumPy: #453. Fixed both Delphes bugs in issue #438: PR #454.
@jrueb fixed uproot.recreate so that it immediately truncates the opened file if it exists: PR #431.
@jrueb fixed uproot.recreate so that it immediately truncates the opened file if it exists: PR #431.
@jpivarski fixed index manipulation for multi-file tuples of DataFrames: PR #432. Fixed multidimensional Float16_t interpretation: PR #434. Fixed KeyError when scanning class dependencies and a streamer of the required version does not exist in the file: PR #437.
@veprbl added support for reading ROOT TTables: PR #418.
@veprbl added support for reading ROOT TTables: PR #418.
@jpivarski fixed the warning handling for old XRootD clients: PR #425.
@jpivarski fixed several performance bugs and one bug-bug in writing histograms and TTrees: PRs #426 and #428. See the GitHub conversations for measurements.
A quantitative rule of thumb derived from that work is that you want to call TTree.extend with no less than ~100 kB per array branch. This is roughly the same scale that would be preferred for reading TTree data (you want TBaskets to be about 100 kB or larger), but in writing, you get to control it.
The main new feature in this release is that Uproot 4 can now write ROOT files. It is no longer necessary to use Uproot 3 for anything: Uproot 4's cap
The main new feature in this release is that Uproot 4 can now write ROOT files. It is no longer necessary to use Uproot 3 for anything: Uproot 4's capabilities exceed Uproot 3's in all ways that are currently known to me.
This was implemented in PRs #405, #406, #408, #409, #412, #414, #415, #416, #420, #421, and was described in Discussion #321. All the new functions are documented, and an overview is presented in the Getting Started Guide.
Other updates for this release:
Nothing published for this version
@beojan added custom behaviors for TGraph, RooCurve, and RooHist (PR #350).
@beojan added custom behaviors for TGraph, RooCurve, and RooHist (PR #350).
@jpivarski fixed how="zip" for branches with the same name but different numbers of items (PR #369), fixed TH3 with dd=True (PR #372), and various twe
@jpivarski fixed how="zip" for branches with the same name but different numbers of items (PR #369), fixed TH3 with dd=True (PR #372), and various tweaks for the 2021 tutorials (PR #376).
@nikoladze fixed a leaking-threads issue in XRootD (PR #338).
@nikoladze fixed a leaking-threads issue in XRootD (PR #338).
@cozzyd added support for HTTP authentication (#339).
@chrisburr added XRootD version checks to navigate around bugs that have been fixed (PR #358).
@jpivarski fixed a leaking-threads issue in HTTP (PR #334), division by zero in calculating the number of entries (PR #336), adjusted to the new scikit-hep-testdata (#337),
@jpivarski is developing the ability for Uproot to write files. At the moment, you can copy any non-TTree objects from another file or create new TObjStrings (PRs #341, #343, #344, #345, #346, #349, #352, #363).
@kratsg implemented memberwise serialization for std::pair: PR #298, #301.
@kratsg implemented memberwise serialization for std::pair: PR #298, #301.
@nsmith- made sources and caches pickleable: PR #302.
@wiso fixed a typo in the documentation: PR #315.
@henryiii cleaned up the build procedure and got Python 2.7 added to the regular tests: PR #316, #317, #319.
@jpivarski fixed a bug that exposed internal JaggedArray objects (if they're empty): PR #304. Added histograms to the regular tests: PR #305. Fixed "file://" handling on Windows: PR #328.
@jpivarski also started developing file-writing (though it's not ready yet): PR #320, #322, #329, and fea04add86aa6efff4f48724ef5f940af427aeee.
@nsmith- improved TTree read-performance (mostly memory use): PR #296 reduces the reference count of big arrays in Future objects, PR #297 removes cyc
@nsmith- improved TTree read-performance (mostly memory use): PR #296 reduces the reference count of big arrays in Future objects, PR #297 removes cycles and reduces reference counts of more arrays early, particularly in TBaskets.
@ryuwd fixed error reporting in XRootD vector-read chunk: PR #286.
@ryuwd fixed error reporting in XRootD vector-read chunk: PR #286.
After discovering a memory leak that is specific to vector-read, @nsmith- made vector-read not the default XRootD: PR #295. By default, it is now the multi-threaded XRootD handler with num_workers=1. Also added a timeout to vector-read: #293.
@henryiii added "_to_boost_histogram" to satisfy a boost-histogram protocol: PR #289.
@jpivarski fixed several bugs: #272, #280,
Also removed library="cp" (CuPy) because we can't test it and it's not that useful anyway (can always copy a NumPy array to a GPU): PR #279.
Added specialized behaviors for TParameter, which is the first templated ROOT class to get such a treatment: PR #278.
Reduced memory usage, especially for creating flat Pandas DataFrames #281.
@nsmith- found an off-by-one bug in TH*.axis[*].__getitem__ for irregularly spaced bins: issue #265, fixed in PR #270.
@nsmith- found an off-by-one bug in TH*.axis[*].__getitem__ for irregularly spaced bins: issue #265, fixed in PR #270.
@nikoladze fixed a "np.int64 is not int" error in an argument passed to pyxrootd: PR #258
@nikoladze fixed a "np.int64 is not int" error in an argument passed to pyxrootd: PR #258
@ChristopheRappold improved the documentation to include logical combinations of cuts (and the fact that you have to use & and |, rather than the TTreeFormula operators): PR #260.
The allow_missing parameter to uproot.iterate and uproot.concatenate can now ignore missing TBranches, not just missing TTrees: #263.
Minor fixes to interpretation so that we can ttree.show a CMS Run I AOD file: PR #262.
Nothing published for this version
Made DispatchByVersion more lenient of ROOT objects without a num_bytes, but having everything else (PR #251).
Made DispatchByVersion more lenient of ROOT objects without a num_bytes, but having everything else (PR #251).
@ryuwd fixed a case with XRootD readv_iov_max limit being exceeded.
@chrisburr reinstated the Python 3.5 tests (after fixing conda-forge upstream).
@jpivarski fixed a bug in which returning regular arrays along with lower-dimensional arrays broadcasted them. This has been fixed in both ak.zip (sci
@jpivarski fixed a bug in which returning regular arrays along with lower-dimensional arrays broadcasted them. This has been fixed in both ak.zip (scikit-hep/awkward-1.0#656) and in UprootPR #245. Updating either should be sufficient.
Also added hooks to the decompression process and properties to get per-branch compression information (PR #247).
@nikoladze significantly revamped the XRootDSource to deal with vector reads in which TBaskets are larger than XRootD's max_element_size (PR #243).
No changes with respect to 4.0.1rc3.
No changes with respect to 4.0.1rc3.
@henryiii modernized the setup configuration (#231) and fixed kind for normal histograms (#236).
@henryiii modernized the setup configuration (#231) and fixed kind for normal histograms (#236).
@HealthyPear fixed a bug that prevented reading TProfile2D and TProfile3D (#228).
@kratsg added behaviors for TGraphAsymmErrors (#240).
@jpivarski hid XRootD's ReferenceError in atexit (#237) and TH3's to_numpy (#239).
@douglasdavis fixed warnings that would come up in NumPy 1.20.
@douglasdavis fixed warnings that would come up in NumPy 1.20.
I added badges, and I'm making a release to get a new Zenodo DOI associated with this repo, rather than uproot3.
Handled servers that merge chunks in HTTP multipart GET mode (#221) and fixed identification of variable-binned histograms (#223).
Handled servers that merge chunks in HTTP multipart GET mode (#221) and fixed identification of variable-binned histograms (#223).
First version 4.0.0 (non release candidate)! From now on, when users
First version 4.0.0 (non release candidate)! From now on, when users
pip install uproot
(without any version qualification), they will get Uproot 4.x, not Uproot 3.x.
This version also has a few bug-fixes: infinite recursion in self-referential strided_interpretation (#216), identify EmptyArrays in all cases of _awkward_json_to_array (#217), better determination if an embedded (recovered) TBasket is jagged (#218), and caught up to the latest histogram protocol (#219).
Your coding agent can read these notes before it upgrades. Set up the MCP server →