You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Checklist for remaining types in scikit-hep/testdata #9
$ pytest > testresult.log
$ cat testresult.log |grep reason|cut -d ' ' -f 3-|sort|uniq -c
1 - reason: Memberwise reading of StdVector not implemented
6 - reason: Memberwise streaming not implemented for TObject base class
2 - reason: RooRealVar not declared in the StreamerInfo, e.g. uproot-issue49.root
2 - reason: Suspicious THx with fByteCount == 0 (e.g. uproot-issue-250.root)
2 - reason: TDirectory.get_KeyList: fSeekKey is 0 0 (bad key but KeyList is valid, e.g. uproot-issue261.root)
1 - reason: TFormula.update_members is not implemented
1 - reason: TKey.read_object: unknown type MGTRun
1 - reason: TKey.read_object: unknown type StIOEvent
1 - reason: TKey.read_object: unknown type TMatrixTSym3cdouble3e
1 - reason: TKey.read_object: unknown type TTime,TKey.read_object: unknown type CalibrationCoefficient
1 - reason: TLeafI not declared in StreamerInfo, e.g. uproot-issue413.root
3 - reason: Unimplemented format double32
🤖 AI generated content (this section only; the tally above is the original)
Status as of 2026-09-18
uv run pytest tests/test_read.py: 197 passed, 22 xfailed. Every remaining xfail reason now has its own issue (details from the vendored root-io-spec reference are in each):
n
xfail reason
tracked in
6
Memberwise streaming not implemented for TObject base class (misdiagnosed: element ordering)
#67 (then #69 for the two uproot-issue433-splitlevel* files)
Edited 2026-09-18: the per-item detail that was originally in this comment has been moved into dedicated issues (linked below), so that each can be discussed and closed on its own. Nothing was dropped.
Everything here is sourced from the root-io-spec reference now vendored in this repo at reference/root-io-spec, pinned at 9c3f776. I re-ran the suite first, then checked each remaining item against the spec text, ROOT's pinned source, and in most cases the bytes of the offending file.
Refreshed tally
uv run pytest tests/test_read.py today: 197 passed, 22 xfailed. The reasons have drifted a little from the issue body:
n
reason
where the detail is
6
Memberwise streaming not implemented for TObject base class
Activity
nsmith- commentedon Sep 18, 2026
Edited 2026-09-18: the per-item detail that was originally in this comment has been moved into dedicated issues (linked below), so that each can be discussed and closed on its own. Nothing was dropped.
Everything here is sourced from the root-io-spec reference now vendored in this repo at
reference/root-io-spec, pinned at9c3f776. I re-ran the suite first, then checked each remaining item against the spec text, ROOT's pinned source, and in most cases the bytes of the offending file.Refreshed tally
uv run pytest tests/test_read.pytoday: 197 passed, 22 xfailed. The reasons have drifted a little from the issue body:One line per item
JTRIGGER::JPMTSelectorinherits fromstd::vector<…>andTObject, its info lists theTStreamerSTLfirst, and we read Python base classes before members. The fix is structural (stop using Python inheritance/annotations as the serialization definition of streamer-generated classes), so it is combined with Append version to all class names #22 in Deprecate Python dataclass annotations as the serialization definition for streamer-generated dataclasses #67. The twouproot-issue433-splitlevel*files will then hit user classes with hand-written streamers → Per-class table for user classes whose recorded StreamerInfo does not describe the bytes (e.g. KM3NETDAQ::JDAQ* in uproot-issue433-splitlevel*.root) #69.uproot-issue-268.root) → Implement member-wise reading of collections (e.g. uproot-issue-268.root) #70. Genuine reader gap, fully specified (Collections §4); the largest and highest-value item. The hardcoded collection version 9 it trips over on current-ROOT files is Collection frame version word is hardcoded to 9; files from ROOT >= 6.36 (and < 5.26) fail #99.RooRealVarhas a hand-written streamer and no file ever carries its info. RooFit is out of the spec's scope; decision: documented skip for now.TFormulashadows the complete info in the file; removing it exposes aTStreamerLoop-of-TString*bug.TMatrixTSyminfo; the spec gives the hardcoded read procedure and uses this very file as its witness.Uninterpretedvia the byte count instead of raising. This is also the agreed default for TLeafI not declared in StreamerInfo, e.g. uproot-issue413.root #18.fByteCount == 0→ Suspicious TH1D object with fByteCount == 0 (e.g. uproot-issue-250.root) #16;fSeekKey is 0 0→ TDirectory.get_KeyList: fSeekKey is 0 0 (bad key but KeyList is valid, e.g. uproot-issue261.root) #17;TLeafI→ TLeafI not declared in StreamerInfo, e.g. uproot-issue413.root #18;kCharStar→ Implement ElementType.kCharStar #20 and Represent string-like members (TString, std::string, char*) as plain bytes in deserialized dataclasses, as promised in docs/design.md #68.Cross-cutting
data/fixtures (BSD-3-Clause, with byte-levelcase.tomlassertions) would make better regression tests for the framing layer than the scikit-hep corpus → Use the root-io-spec data/ fixtures as a parametrized test corpus #76.AGENTS.md: reconcile the string and on-disk rules, fix setup, add con…
AGENTS.md: match the repository as it is today
AGENTS.md: match the repository as it is today
AGENTS.md: reconcile the string and on-disk rules, fix setup, add con…
AGENTS.md: match the repository as it is today
Add AGENTS.md: how to work on rootfilespec (#134)