Skip to content
Open
Show file tree
Hide file tree
Changes from 76 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
c45b29e
Clean up dead code in _load_existing_ntuple
Yokubas Jul 21, 2026
1729b65
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
775a8b8
Implement accept_new_fields=True in WritableNTuple.extend()
Yokubas Jul 21, 2026
382c71b
Fix merge conflicts
Yokubas Jul 21, 2026
411703a
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
3c0b47e
Add subfield support in add_fields() and test
Yokubas Jul 21, 2026
7411b6c
Fix merge conflicts
Yokubas Jul 21, 2026
b1d7f42
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
4ec88a5
Add nested subfield support and test
Yokubas Jul 21, 2026
6a279bc
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 21, 2026
7925290
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
bf5fc8d
Optimize _load_existing_ntuple: count columns directly instead of con…
Yokubas Jul 21, 2026
4ba3c14
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 21, 2026
bba7c59
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
a61f7f4
Add/update docstrings for _load_existing_ntuple, extend, add_fields
Yokubas Jul 21, 2026
78c8e60
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 21, 2026
4c0f5cc
style: pre-commit fixes
pre-commit-ci[bot] Jul 21, 2026
7b1d83a
Skip ROOT.RNTupleReader checks on older ROOT versions
Yokubas Jul 21, 2026
2448253
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 21, 2026
5f2608c
Merge remote-tracking branch 'upstream/main' into Yokubas/rntuple-upd…
Yokubas Jul 21, 2026
ef30e8a
Fix missing hasattr check for RNTupleReader in test_ntuple_multiple_i…
Yokubas Jul 21, 2026
0c0e3fb
Merge remote-tracking branch 'upstream/main' into Yokubas/rntuple-upd…
Yokubas Jul 22, 2026
adfe64c
Move imports to top of file per review feedback
Yokubas Jul 22, 2026
7d50cbc
Fix magic number 56 -> computed _rblob_key_size
Yokubas Jul 22, 2026
b172b15
Normalize add_fields input with _type_specification_to_awkward_form
Yokubas Jul 22, 2026
63667b0
Rename test file to follow convention test_1687_rntuple_update.py
Yokubas Jul 22, 2026
7929696
Fix test file: only skip ROOT parts when ROOT not available
Yokubas Jul 22, 2026
eacfbe2
Add validation for subfield addition edge cases
Yokubas Jul 22, 2026
62d94b3
Add test for num_entries on existing ntuple in update mode
Yokubas Jul 22, 2026
4f8b4d9
style: pre-commit fixes
pre-commit-ci[bot] Jul 22, 2026
f56b522
Add TODO comment for uproot.open in _load_existing_ntuple per review
Yokubas Jul 23, 2026
35f71eb
Use _ntuple.field_records for duplicate check and fix next_field_id
Yokubas Jul 23, 2026
0b09517
Use awkward.asarray instead of list() for dtype detection per review
Yokubas Jul 23, 2026
411b800
Add tests for subfield addition edge cases per review
Yokubas Jul 23, 2026
3906cdf
Fix test_ntuple_add_subfield_typed_parent to use uproot-created file
Yokubas Jul 23, 2026
b2d7c37
Fix merge conflict
Yokubas Jul 23, 2026
0e6b059
style: pre-commit fixes
pre-commit-ci[bot] Jul 23, 2026
05e2c16
fix: allow nil UUID (version 0) in ROOT file header
ariostas Jul 23, 2026
bcc47ba
Only accept valid uuid versions
ariostas Jul 24, 2026
f14f4e4
Merge remote-tracking branch 'upstream/ariostas/fix_uproot_update' in…
Yokubas Jul 27, 2026
4a76ec5
Update typed parent test to use real ROOT file and check all typed st…
Yokubas Jul 27, 2026
ae48bf6
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 27, 2026
dd9b475
Update docstrings to show multiple fields in extend and add_fields ex…
Yokubas Jul 27, 2026
3204819
Fix blocking issue 1: silent data corruption on ROOT-written RNTuples
Yokubas Jul 29, 2026
aa0a3d7
style: pre-commit fixes
pre-commit-ci[bot] Jul 29, 2026
251c4b0
Fix blocking issue 2: wrong element_offset for inner columns of jagge…
Yokubas Jul 29, 2026
b5c39b7
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 29, 2026
0bf39d4
style: pre-commit fixes
pre-commit-ci[bot] Jul 29, 2026
74545cd
Fix blocking issue 3: multi-cluster groups in add_fields
Yokubas Jul 29, 2026
a4d6e77
Fix blocking issue 4: stale in-memory state after add_fields
Yokubas Jul 29, 2026
bfea8bb
Fix blocking issue 5: subfield parent resolved by full path not bare …
Yokubas Jul 29, 2026
0e14d3d
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 29, 2026
59b6313
style: pre-commit fixes
pre-commit-ci[bot] Jul 29, 2026
6dac39e
Fix file-like object regression in _load_existing_ntuple
Yokubas Jul 29, 2026
687f44b
Fix file handle leak and cache key bug in _load_existing_ntuple
Yokubas Jul 29, 2026
9140b7e
Fix reconstructed Keys missing big=True
Yokubas Jul 29, 2026
3289dd4
Remove dead freesegments carve-out code
Yokubas Jul 29, 2026
31c43c2
Fix uuid_version assert and add test for ROOT-written file access
Yokubas Jul 29, 2026
1635277
Code quality: add lazy-init comment and improve add_fields docstring
Yokubas Jul 29, 2026
43bda03
Improve test coverage and error handling
Yokubas Jul 29, 2026
d9c0bcb
Improve ROOT verification in tests to check column values
Yokubas Jul 29, 2026
2dbbe5d
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 29, 2026
1994214
style: pre-commit fixes
pre-commit-ci[bot] Jul 29, 2026
a8df700
Support multiple cluster groups in add_fields
Yokubas Jul 30, 2026
e828ef1
Minimize file reload in add_fields state refresh
Yokubas Jul 30, 2026
0f65978
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 30, 2026
086f2e6
style: pre-commit fixes
pre-commit-ci[bot] Jul 30, 2026
ba1e624
Fix ruff linting errors
Yokubas Jul 30, 2026
1ce2d27
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Jul 30, 2026
a174513
Merge remote-tracking branch 'upstream/main' into Yokubas/rntuple-upd…
Yokubas Jul 30, 2026
beecdf2
Implement deferred columns for add_fields
Yokubas Aug 3, 2026
32c2fc7
style: pre-commit fixes
pre-commit-ci[bot] Aug 3, 2026
391070c
Fix ruff warnings: remove unused variables new_pages and cluster_num_…
Yokubas Aug 3, 2026
37be437
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Aug 3, 2026
9095236
Fix ruff: rename unused cluster_idx to _cluster_idx
Yokubas Aug 3, 2026
3ad8245
Merge upstream/main - keep 0 <= uuid_version <= 8
Yokubas Aug 10, 2026
74f17ae
Merge branch 'main' into Yokubas/rntuple-update-pr
Yokubas Aug 12, 2026
66c622f
Replace uproot.open with _ReadForUpdate in _load_existing_ntuple and …
Yokubas Aug 12, 2026
2fe9558
Merge branch 'Yokubas/rntuple-update-pr' of https://github.com/Yokuba…
Yokubas Aug 12, 2026
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
2 changes: 1 addition & 1 deletion src/uproot/writing/_cascade.py
Original file line number Diff line number Diff line change
Expand Up @@ -2145,7 +2145,7 @@ def deserialize(cls, raw_bytes, location):
assert compression_code >= 0
assert info_location >= 0
assert info_num_bytes >= 0
assert uuid_version <= 8
assert 0 <= uuid_version <= 8

out = FileHeader(
end,
Expand Down
16 changes: 14 additions & 2 deletions src/uproot/writing/_cascadentuple.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,21 +242,33 @@ def serialize(self):

# https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/specifications.md#column-description
class NTuple_Column_Description:
def __init__(self, type_num, bits_on_disk, field_id, flags, repr_index):
def __init__(
self, type_num, bits_on_disk, field_id, flags, repr_index, first_element_index=0
):
self.type_num = type_num
self.bits_on_disk = bits_on_disk
self.field_id = field_id
self.flags = flags
self.repr_index = repr_index
self.first_element_index = first_element_index

def serialize(self):
import uproot.const

flags = self.flags
if self.first_element_index > 0:
flags = flags | uproot.const.RNTupleColumnFlags.DEFERRED
header_bytes = _rntuple_column_record_format.pack(
self.type_num,
self.bits_on_disk,
self.field_id,
self.flags,
int(flags),
self.repr_index,
)
if self.first_element_index > 0:
import struct

header_bytes += struct.pack("<Q", int(self.first_element_index))
return header_bytes


Expand Down
Loading
Loading