diff --git a/src/uproot/streamers.py b/src/uproot/streamers.py index 066363b0a..4a4b7000d 100644 --- a/src/uproot/streamers.py +++ b/src/uproot/streamers.py @@ -999,14 +999,14 @@ def class_code( else: # AwkwardForth testing E: test_0637's 01,02,05,08,09,11,12,13,15,16,29,35,39,45,46,47,49,50,56 read_members.append(" if forth_obj is not None:") - for i in range(len(formats[0])): + for i in range(len(formats[-1])): read_members.extend( [ " key = key_number ; key_number += 1", ' form_key = f"node{key}-data"', - f' nested_forth_stash = af.Node(f"node{{key}}", field_name={fields[0][i]!r}, form_details={{ "class": "NumpyArray", "primitive": "{af.struct_to_dtype_name[formats[0][i]]}", "inner_shape": [], "parameters": {{}}, "form_key": f"node{{key}}"}})', - f' nested_forth_stash.header_code.append(f"output {{form_key}} {af.struct_to_dtype_name[formats[0][i]]}\\n")', - f' nested_forth_stash.pre_code.append(f"stream !{formats[0][i]}-> {{form_key}}\\n")', + f' nested_forth_stash = af.Node(f"node{{key}}", field_name={fields[-1][i]!r}, form_details={{ "class": "NumpyArray", "primitive": "{af.struct_to_dtype_name[formats[-1][i]]}", "inner_shape": [], "parameters": {{}}, "form_key": f"node{{key}}"}})', + f' nested_forth_stash.header_code.append(f"output {{form_key}} {af.struct_to_dtype_name[formats[-1][i]]}\\n")', + f' nested_forth_stash.pre_code.append(f"stream !{formats[-1][i]}-> {{form_key}}\\n")', " forth_obj.add_node(nested_forth_stash)", ] ) diff --git a/tests/test_1221_AwkwardForth_bug.py b/tests/test_1221_AwkwardForth_bug.py new file mode 100644 index 000000000..f9d2ca350 --- /dev/null +++ b/tests/test_1221_AwkwardForth_bug.py @@ -0,0 +1,22 @@ +# BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE + +import pytest +import uproot +import skhep_testdata + + +def test(): + with uproot.open(skhep_testdata.data_path("uproot-issue-1221.root")) as file: + record = file["TrkAna"]["trkana"]["demtsh"].array()[-1, -1, -1] + assert record.tolist() == { + "wdot": -0.6311486959457397, + "dhit": True, + "poca": { + "fCoordinates": { + "fX": -526.5504760742188, + "fY": -195.0541534423828, + "fZ": 1338.90771484375, + } + }, + "dactive": True, + }