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

Commit 484b626

Browse files
authored
Merge pull request #493 from scikit-hep/jpivarski/fixing-bugs-for-hats
Fixing bugs for HATS.
2 parents 167699c + b19c3d6 commit 484b626

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

tests/test_stlvector.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot/blob/master/LICENSE
44

5+
import os
6+
7+
import pytest
8+
59
import uproot
610

711
class Test(object):
@@ -35,6 +39,12 @@ def test_strings3(self):
3539
tree = uproot.open("tests/samples/small-evnt-tree-fullsplit.root")["tree"]
3640
assert tree.array("StlVecStr").tolist() == [[], [b'vec-001'], [b'vec-002', b'vec-002'], [b'vec-003', b'vec-003', b'vec-003'], [b'vec-004', b'vec-004', b'vec-004', b'vec-004'], [b'vec-005', b'vec-005', b'vec-005', b'vec-005', b'vec-005'], [b'vec-006', b'vec-006', b'vec-006', b'vec-006', b'vec-006', b'vec-006'], [b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007'], [b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008'], [b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009'], [], [b'vec-011'], [b'vec-012', b'vec-012'], [b'vec-013', b'vec-013', b'vec-013'], [b'vec-014', b'vec-014', b'vec-014', b'vec-014'], [b'vec-015', b'vec-015', b'vec-015', b'vec-015', b'vec-015'], [b'vec-016', b'vec-016', b'vec-016', b'vec-016', b'vec-016', b'vec-016'], [b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017'], [b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018'], [b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019'], [], [b'vec-021'], [b'vec-022', b'vec-022'], [b'vec-023', b'vec-023', b'vec-023'], [b'vec-024', b'vec-024', b'vec-024', b'vec-024'], [b'vec-025', b'vec-025', b'vec-025', b'vec-025', b'vec-025'], [b'vec-026', b'vec-026', b'vec-026', b'vec-026', b'vec-026', b'vec-026'], [b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027'], [b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028'], [b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029'], [], [b'vec-031'], [b'vec-032', b'vec-032'], [b'vec-033', b'vec-033', b'vec-033'], [b'vec-034', b'vec-034', b'vec-034', b'vec-034'], [b'vec-035', b'vec-035', b'vec-035', b'vec-035', b'vec-035'], [b'vec-036', b'vec-036', b'vec-036', b'vec-036', b'vec-036', b'vec-036'], [b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037'], [b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038'], [b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039'], [], [b'vec-041'], [b'vec-042', b'vec-042'], [b'vec-043', b'vec-043', b'vec-043'], [b'vec-044', b'vec-044', b'vec-044', b'vec-044'], [b'vec-045', b'vec-045', b'vec-045', b'vec-045', b'vec-045'], [b'vec-046', b'vec-046', b'vec-046', b'vec-046', b'vec-046', b'vec-046'], [b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047'], [b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048'], [b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049'], [], [b'vec-051'], [b'vec-052', b'vec-052'], [b'vec-053', b'vec-053', b'vec-053'], [b'vec-054', b'vec-054', b'vec-054', b'vec-054'], [b'vec-055', b'vec-055', b'vec-055', b'vec-055', b'vec-055'], [b'vec-056', b'vec-056', b'vec-056', b'vec-056', b'vec-056', b'vec-056'], [b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057'], [b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058'], [b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059'], [], [b'vec-061'], [b'vec-062', b'vec-062'], [b'vec-063', b'vec-063', b'vec-063'], [b'vec-064', b'vec-064', b'vec-064', b'vec-064'], [b'vec-065', b'vec-065', b'vec-065', b'vec-065', b'vec-065'], [b'vec-066', b'vec-066', b'vec-066', b'vec-066', b'vec-066', b'vec-066'], [b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067'], [b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068'], [b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069'], [], [b'vec-071'], [b'vec-072', b'vec-072'], [b'vec-073', b'vec-073', b'vec-073'], [b'vec-074', b'vec-074', b'vec-074', b'vec-074'], [b'vec-075', b'vec-075', b'vec-075', b'vec-075', b'vec-075'], [b'vec-076', b'vec-076', b'vec-076', b'vec-076', b'vec-076', b'vec-076'], [b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077'], [b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078'], [b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079'], [], [b'vec-081'], [b'vec-082', b'vec-082'], [b'vec-083', b'vec-083', b'vec-083'], [b'vec-084', b'vec-084', b'vec-084', b'vec-084'], [b'vec-085', b'vec-085', b'vec-085', b'vec-085', b'vec-085'], [b'vec-086', b'vec-086', b'vec-086', b'vec-086', b'vec-086', b'vec-086'], [b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087'], [b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088'], [b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089'], [], [b'vec-091'], [b'vec-092', b'vec-092'], [b'vec-093', b'vec-093', b'vec-093'], [b'vec-094', b'vec-094', b'vec-094', b'vec-094'], [b'vec-095', b'vec-095', b'vec-095', b'vec-095', b'vec-095'], [b'vec-096', b'vec-096', b'vec-096', b'vec-096', b'vec-096', b'vec-096'], [b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097'], [b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098'], [b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099']]
3741

42+
@pytest.mark.skipif(os.name == "nt", reason="Windows Python 3 'long' is not struct's 'i', 'l', or 'q'.")
43+
def test_unsplit(self):
44+
branch = uproot.open("tests/samples/small-evnt-tree-nosplit.root")["tree"]["evt"]
45+
a = branch.array()
46+
assert [x._StlVecStr for x in a] == [[], [b'vec-001'], [b'vec-002', b'vec-002'], [b'vec-003', b'vec-003', b'vec-003'], [b'vec-004', b'vec-004', b'vec-004', b'vec-004'], [b'vec-005', b'vec-005', b'vec-005', b'vec-005', b'vec-005'], [b'vec-006', b'vec-006', b'vec-006', b'vec-006', b'vec-006', b'vec-006'], [b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007', b'vec-007'], [b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008', b'vec-008'], [b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009', b'vec-009'], [], [b'vec-011'], [b'vec-012', b'vec-012'], [b'vec-013', b'vec-013', b'vec-013'], [b'vec-014', b'vec-014', b'vec-014', b'vec-014'], [b'vec-015', b'vec-015', b'vec-015', b'vec-015', b'vec-015'], [b'vec-016', b'vec-016', b'vec-016', b'vec-016', b'vec-016', b'vec-016'], [b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017', b'vec-017'], [b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018', b'vec-018'], [b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019', b'vec-019'], [], [b'vec-021'], [b'vec-022', b'vec-022'], [b'vec-023', b'vec-023', b'vec-023'], [b'vec-024', b'vec-024', b'vec-024', b'vec-024'], [b'vec-025', b'vec-025', b'vec-025', b'vec-025', b'vec-025'], [b'vec-026', b'vec-026', b'vec-026', b'vec-026', b'vec-026', b'vec-026'], [b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027', b'vec-027'], [b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028', b'vec-028'], [b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029', b'vec-029'], [], [b'vec-031'], [b'vec-032', b'vec-032'], [b'vec-033', b'vec-033', b'vec-033'], [b'vec-034', b'vec-034', b'vec-034', b'vec-034'], [b'vec-035', b'vec-035', b'vec-035', b'vec-035', b'vec-035'], [b'vec-036', b'vec-036', b'vec-036', b'vec-036', b'vec-036', b'vec-036'], [b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037', b'vec-037'], [b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038', b'vec-038'], [b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039', b'vec-039'], [], [b'vec-041'], [b'vec-042', b'vec-042'], [b'vec-043', b'vec-043', b'vec-043'], [b'vec-044', b'vec-044', b'vec-044', b'vec-044'], [b'vec-045', b'vec-045', b'vec-045', b'vec-045', b'vec-045'], [b'vec-046', b'vec-046', b'vec-046', b'vec-046', b'vec-046', b'vec-046'], [b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047', b'vec-047'], [b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048', b'vec-048'], [b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049', b'vec-049'], [], [b'vec-051'], [b'vec-052', b'vec-052'], [b'vec-053', b'vec-053', b'vec-053'], [b'vec-054', b'vec-054', b'vec-054', b'vec-054'], [b'vec-055', b'vec-055', b'vec-055', b'vec-055', b'vec-055'], [b'vec-056', b'vec-056', b'vec-056', b'vec-056', b'vec-056', b'vec-056'], [b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057', b'vec-057'], [b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058', b'vec-058'], [b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059', b'vec-059'], [], [b'vec-061'], [b'vec-062', b'vec-062'], [b'vec-063', b'vec-063', b'vec-063'], [b'vec-064', b'vec-064', b'vec-064', b'vec-064'], [b'vec-065', b'vec-065', b'vec-065', b'vec-065', b'vec-065'], [b'vec-066', b'vec-066', b'vec-066', b'vec-066', b'vec-066', b'vec-066'], [b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067', b'vec-067'], [b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068', b'vec-068'], [b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069', b'vec-069'], [], [b'vec-071'], [b'vec-072', b'vec-072'], [b'vec-073', b'vec-073', b'vec-073'], [b'vec-074', b'vec-074', b'vec-074', b'vec-074'], [b'vec-075', b'vec-075', b'vec-075', b'vec-075', b'vec-075'], [b'vec-076', b'vec-076', b'vec-076', b'vec-076', b'vec-076', b'vec-076'], [b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077', b'vec-077'], [b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078', b'vec-078'], [b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079', b'vec-079'], [], [b'vec-081'], [b'vec-082', b'vec-082'], [b'vec-083', b'vec-083', b'vec-083'], [b'vec-084', b'vec-084', b'vec-084', b'vec-084'], [b'vec-085', b'vec-085', b'vec-085', b'vec-085', b'vec-085'], [b'vec-086', b'vec-086', b'vec-086', b'vec-086', b'vec-086', b'vec-086'], [b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087', b'vec-087'], [b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088', b'vec-088'], [b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089', b'vec-089'], [], [b'vec-091'], [b'vec-092', b'vec-092'], [b'vec-093', b'vec-093', b'vec-093'], [b'vec-094', b'vec-094', b'vec-094', b'vec-094'], [b'vec-095', b'vec-095', b'vec-095', b'vec-095', b'vec-095'], [b'vec-096', b'vec-096', b'vec-096', b'vec-096', b'vec-096', b'vec-096'], [b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097', b'vec-097'], [b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098', b'vec-098'], [b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099', b'vec-099']]
47+
3848
def test_array(self):
3949
tree = uproot.open("tests/samples/small-evnt-tree-fullsplit.root")["tree"]
4050
assert tree.array("ArrayI16[10]").tolist() == [[i] * 10 for i in range(100)]

uproot/rootio.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,15 @@ def _ftype2dtype(fType):
654654
else:
655655
return "None"
656656

657+
def _longsize(issigned):
658+
if os.name == "nt":
659+
if sys.version_info[0] <= 2:
660+
return "q" if issigned else "Q"
661+
else:
662+
return "i" if issigned else "I" # wrong: gave up in PR #493
663+
else:
664+
return "q" if issigned else "Q"
665+
657666
def _ftype2struct(fType):
658667
if fType == uproot.const.kBool:
659668
return "?"
@@ -670,9 +679,9 @@ def _ftype2struct(fType):
670679
elif fType in (uproot.const.kBits, uproot.const.kUInt, uproot.const.kCounter):
671680
return "I"
672681
elif fType == uproot.const.kLong:
673-
return "l"
682+
return _longsize(True)
674683
elif fType == uproot.const.kULong:
675-
return "L"
684+
return _longsize(False)
676685
elif fType == uproot.const.kLong64:
677686
return "q"
678687
elif fType == uproot.const.kULong64:
@@ -865,6 +874,9 @@ def _defineclasses(streamerinfos, classes):
865874
code.append(" cursor.skip(6)")
866875
code.append(" self._{0} = cursor.array(source, cursor.field(source, self._int32), '>f8')".format(_safename(element._fName)))
867876
fields.append(_safename(element._fName))
877+
elif element._fTypeName == b"vector<string>":
878+
code.append(" cursor.skip(6)")
879+
code.append(" self._{0} = uproot.interp.objects.STLVector(uproot.interp.objects.STLString()).read(source, cursor, context, self)".format(_safename(element._fName)))
868880
elif element._fTypeName == b"map<string,string>":
869881
code.append(" self._{0} = _mapstrstr(source, cursor)".format(_safename(element._fName)))
870882
else:

uproot/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import re
88

9-
__version__ = "3.11.6"
9+
__version__ = "3.11.7"
1010
version = __version__
1111
version_info = tuple(re.split(r"[-\.]", __version__))
1212

0 commit comments

Comments
 (0)