Skip to content
This repository has been archived by the owner on Jun 21, 2022. It is now read-only.

2.0.5

Compare
Choose a tag to compare
@jpivarski jpivarski released this 24 Nov 21:05
· 1695 commits to master since this release

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.