Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions src/rootfilespec/bootstrap/TList.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,10 @@ def update_members(cls, members: Members, buffer: ReadBuffer):
msg = f"Expected TObject but got {item!r}"
raise ValueError(msg)
# No idea why there is a null pad byte here
pad, buffer = buffer.consume(1)
if pad != b"\x00":
if pad == b"\x01":
# TODO: understand this case (e.g. uproot-issue-350.root)
(mystery,), buffer = buffer.unpack(">B")
else:
msg = f"Unexpected pad byte in TList: {pad!r}"
raise ValueError(msg)
(pad,), buffer = buffer.unpack(">B")
if pad != 0:
# TODO: understand this case (e.g. uproot-issue-350.root)
mystery, buffer = buffer.consume(pad)
items.append(item)
members["items"] = items
return members, buffer
Expand Down
11 changes: 11 additions & 0 deletions src/rootfilespec/bootstrap/TObject.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,17 @@ class TObjFlag(IntFlag):
"""TStreamerElement status bit or kInvalidObject"""
kListOfRules = 0x4000
"""The schema evolution rules stored at the end of the streamer info"""
kMysteryCanvas1 = 0x100000
"""Appears in some TCanvas objects, not sure what it means."""
kMysteryCanvas2 = 0x200000
"""Appears in some TCanvas objects, not sure what it means."""
kMysteryPad1 = 0x200
"""Appears in some TCanvas objects, not sure what it means."""
kMysteryPad2 = 0x400
"""Appears in some TCanvas objects, not sure what it means."""
kMysteryPad3 = 0x800
"""Appears in some TCanvas objects, not sure what it means."""
# TODO: there are too many of these mystery bits, we should remove invalid bit checks

# TODO: validate on initialization that no bits are set that are not defined in this class
def __repr__(self):
Expand Down
2 changes: 2 additions & 0 deletions src/rootfilespec/bootstrap/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
RooLinkedList,
TAtt3D,
TFormula,
TQObject,
TVirtualIndex,
Uninterpreted,
)
Expand Down Expand Up @@ -75,6 +76,7 @@
"TNamed",
"TObjArray",
"TObject",
"TQObject",
"TSeqCollection",
"TStreamerBase",
"TStreamerBasicPointer",
Expand Down
15 changes: 15 additions & 0 deletions src/rootfilespec/bootstrap/assumed.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,18 @@ def update_members(cls, members: Members, buffer: ReadBuffer):


DICTIONARY["TFormula"] = TFormula


@serializable
class TQObject(ROOTSerializable):
"""Qt object communication object for ROOT GUIs

Nothing is serialized
"""

@classmethod
def update_members(cls, members: Members, buffer: ReadBuffer):
return members, buffer


DICTIONARY["TQObject"] = TQObject