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

Commit

Permalink
Merge pull request #449 from chrisburr/fix-448
Browse files Browse the repository at this point in the history
Add support for streamer_aliases
  • Loading branch information
jpivarski authored Feb 11, 2020
2 parents dc7de0a + fe25a32 commit 98d007f
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
7 changes: 7 additions & 0 deletions tests/test_issues.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,3 +418,10 @@ def test_issue438_accessing_memory_mapped_objects_outside_of_context_raises(self
assert 4 == len(a[0])
with pytest.raises(IOError):
len(b[0])

def test_issue448(self):
pytest.importorskip("pyxrootd")
f = uproot.open('root://eospublic.cern.ch//eos/opendata/cms/Run2010B/MuOnia/AOD/Apr21ReReco-v1/0000/02186E3C-D277-E011-8A05-00215E21D516.root')
tree = f['Events']
assert len(tree.arrays(entrystop=0)) == 4179
assert len(tree.arrays('recoMuons_muons__RECO.*', entrystop=10)) == 93
5 changes: 5 additions & 0 deletions uproot/interp/auto.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,3 +558,8 @@ def transform(node, tofloat=True):
interpret._itemanypattern = re.compile(br"\[(.*)\]")
interpret._vectorpointer = re.compile(br"vector\<([^<>]*)\*\>")
interpret._pairsecond = re.compile(br"pair\<[^<>]*,(.*) \>")

streamer_aliases = [
(re.compile(b'(ROOT::Math::(?:PositionVector3D|DisplacementVector3D)<ROOT::Math::Cartesian3D<(?:[^>,]+)>)\\s+(>)'),
b'\\1,ROOT::Math::DefaultCoordinateSystemTag\\2'),
]
14 changes: 13 additions & 1 deletion uproot/tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
from uproot.rootio import _bytesid
from uproot.rootio import _memsize
from uproot.rootio import nofilter
from uproot.rootio import _safename
from uproot.interp.auto import interpret
from uproot.interp.numerical import asdtype
from uproot.interp.jagged import asjagged
Expand Down Expand Up @@ -265,7 +266,18 @@ def _attachstreamer(self, branch, streamer, streamerinfosmap, isTClonesArray):
else:
base, name = name[:index], name[index + 1:]
if base in submembers and isinstance(submembers[base], digDeeperTypes):
submembers = streamerinfosmap[submembers[base]._fTypeName.rstrip(b"*")].members
key = submembers[base]._fTypeName.rstrip(b"*")
try:
submembers = streamerinfosmap[key].members
except KeyError:
for regex, substitution in uproot.interp.auto.streamer_aliases:
new_key, n_matched = regex.subn(substitution, key)
if n_matched:
submembers = streamerinfosmap[new_key].members
self._context.classes[_safename(key)] = self._context.classes[_safename(new_key)]
break
else:
raise

try:
name = name[:name.index(b"[")]
Expand Down
2 changes: 1 addition & 1 deletion uproot/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import re

__version__ = "3.11.2"
__version__ = "3.11.3"
version = __version__
version_info = tuple(re.split(r"[-\.]", __version__))

Expand Down

0 comments on commit 98d007f

Please sign in to comment.