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

Commit ef2fcab

Browse files
committed
JaggedJaggedArray was reporting one too many levels deep; fixed now
1 parent e218d46 commit ef2fcab

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

tests/test_stlvector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def test_vector_of_numbers(self):
5454

5555
def test_vector_of_vector_of_numbers(self):
5656
branch = uproot.open("tests/samples/vectorVectorDouble.root")["t"]["x"]
57-
self.assertEqual(branch.array().tolist(), [[[]], [[[], []]], [[[10.0], [], [10.0, 20.0]]], [[[20.0, -21.0, -22.0]]], [[[200.0], [-201.0], [202.0]]]])
57+
self.assertEqual(branch.array().tolist(), [[], [[], []], [[10.0], [], [10.0, 20.0]], [[20.0, -21.0, -22.0]], [[200.0], [-201.0], [202.0]]])
5858

5959
def test_strings1(self):
6060
tree = uproot.open("tests/samples/small-evnt-tree-fullsplit.root")["tree"]

uproot/interp/jagged.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -365,23 +365,29 @@ def __init__(self, jaggedarray, fromdtype):
365365

366366
def interpret(self, item):
367367
i = 0
368+
size, = item[i : i + 4].view(JaggedJaggedArray.indexdtype)
369+
i += 4
368370
out = []
369371
while i < len(item):
370372
size, = item[i : i + 4].view(JaggedJaggedArray.indexdtype)
371373
i += 4
372-
outi = []
373-
for j in range(size):
374-
size, = item[i : i + 4].view(JaggedJaggedArray.indexdtype)
375-
i += 4
376-
numbytes = size*self.fromdtype.itemsize
377-
outi.append(item[i : i + numbytes].view(self.fromdtype).tolist())
378-
i += numbytes
379-
out.append(outi)
374+
numbytes = size*self.fromdtype.itemsize
375+
out.append(item[i : i + numbytes].view(self.fromdtype))
376+
i += numbytes
380377
return out
381378

379+
def __str__(self):
380+
if len(self) > 6:
381+
return "[{0} ... {1}]".format(", ".join(repr([y.tolist() for y in self[i]]) for i in range(3)), ", ".join(repr([y.tolist() for y in self[i]]) for i in range(-3, 0)))
382+
else:
383+
return "[{0}]".format(", ".join(repr([y.tolist() for y in x]) for x in self))
384+
382385
def __repr__(self):
383386
return "jaggedjaggedarray({0})".format(str(self))
384387

388+
def tolist(self):
389+
return [[y.tolist() for y in x] for x in self]
390+
385391
if numba is not None:
386392
class JaggedArrayType(numba.types.Type):
387393
concrete = {}

0 commit comments

Comments
 (0)