Uproot

Latest version: v5.6.0

Safety actively analyzes 714772 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 51 of 57

2.0.5

uproot 2.x is a complete rewrite of the system.

* Unlike 1.x, this version first reads the ROOT file's streamer info and uses that to deserialize almost all classes into Python objects. Apart from corner cases involving the bootstrapping classes (TFile, TKey, TStreamer*, etc.), the deserialization code will never be out of date.
* It also replaces the spaghetti of special cases for numerical branches and string-valued branches with a generic "Interpretation" system, where different kinds of branches get custom classes (possibly generated from streamers) to turn the bytes on disk into different Python objects.
* Jagged arrays (array of arbitrary-length arrays) are on the same footing as Numpy arrays, which is a basis for reading any arbitrary-length content (e.g. using classes generated from streamers).
* All manipulations that must touch individual entries with Python code (e.g. making a jagged array of strings or `std::vector<...>`) is Numba-accelerated. If you have Numba installed, it will run as fast as Numpy calls (compiled code).
* File-reading mechanism replaced with separated "source" and "cursor" to emulate memory mapped access for all file types, including XRootD.
* Parallel executor and cache options simplified and made systematic across all method argument lists.
* Any dict-like object may be a cache; memory-based and disk-based dict subclasses with LRU eviction policies included.

All old tests work. Reference documentation written. Tutorials in progress.

1.6.2

Fixed issue 16. The decompressor should be chosen based on the first two bytes of the compressed block, not the `fCompress` variable in TFile and/or TBranch.

1.6.1

For a while now, some uproot functions have been accepting a dictionary-like object as a cache, so if branches are in the supplied dictionary, they will not be extracted again from the ROOT file.

This version adds MemoryCache, ThreadSafeMemoryCache, and DiskCache (which is persistent and process-safe) as dictionary-like objects that can be used as caches. They all track memory usage (`numbytes` attribute) and evict the least-recently used items when it exceeds a threshold (`limitbytes`).

This code was mostly ported from the old PLUR project, adding process-safety to DiskCache so that a collection of servlets supervised by WSGI can share the same SSD cache (for example).

1.5.3

Bug-fixes during the preparation for LPC Computing talk. (Mostly bugs in the Arrowed connector, not main features.)

1.5.0

Added Pandas connector.

1.4.2

Added:

* Low-level baskets interface for truly zero-copy operations from the memory-mapped file.
* Interface to cast ROOT files as Arrow data structures through Arrowed (not currently available, so this feature will only get unlocked when Arrowed is released).
* Various bug-fixes.
* License at the top of all files is consistent with BSD-3 license for the whole project.

Pushed to PyPI.

Page 51 of 57

Links

Releases

Has known vulnerabilities

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.