Releases: scikit-hep/uproot3
2.1.5
Fixed a few small bugs discovered with new test files and enabled automatic deployment. (This will be the first release that triggers a deployment on PyPI.)
Bugs fixed:
- branches with zero leaves should have no Interpretation
- branch printout formatting as desired by user
- fixed streamer-branch association for STL streamers with a single element 'This'.
2.1.1
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
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
1.5.0
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.