From f49e766da6141d35ded6eba0bddb5ab3f350254e Mon Sep 17 00:00:00 2001 From: Andres Rios Tascon Date: Thu, 6 Feb 2025 12:56:54 -0500 Subject: [PATCH 1/3] fix: show untyped fields --- src/uproot/models/RNTuple.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/uproot/models/RNTuple.py b/src/uproot/models/RNTuple.py index 50adefbfc..e7191f8aa 100644 --- a/src/uproot/models/RNTuple.py +++ b/src/uproot/models/RNTuple.py @@ -195,7 +195,7 @@ def _keys(self): keys = [] field_records = self.field_records for i, fr in enumerate(field_records): - if fr.parent_field_id == i and fr.type_name != "": + if fr.parent_field_id == i and not fr.field_name.startswith("_"): keys.append(fr.field_name) return keys @@ -219,7 +219,7 @@ def _key_indices(self): indices = [] field_records = self.field_records for i, fr in enumerate(field_records): - if fr.parent_field_id == i and fr.type_name != "": + if fr.parent_field_id == i and not fr.field_name.startswith("_"): indices.append(i) return indices @@ -228,7 +228,7 @@ def _key_to_index(self): d = {} field_records = self.field_records for i, fr in enumerate(field_records): - if fr.parent_field_id == i and fr.type_name != "": + if fr.parent_field_id == i and not fr.field_name.startswith("_"): d[fr.field_name] = i return d @@ -684,7 +684,7 @@ def to_akform(self): for i in range(len(field_records)): if i not in seen: ff = self.field_form(i, seen) - if field_records[i].type_name != "": + if not field_records[i].field_name.startswith("_"): recordlist.append(ff) form = ak.forms.RecordForm(recordlist, topnames, form_key="toplevel") @@ -1249,7 +1249,6 @@ def _keys(self): continue if ( fr.parent_field_id == self.index - and fr.type_name != "" and not fr.field_name.startswith("_") and not fr.field_name.startswith(":_") ): @@ -1282,7 +1281,7 @@ def _key_indices(self): indices = [] field_records = self.ntuple.field_records for i, fr in enumerate(field_records): - if fr.parent_field_id == self.index and fr.type_name != "": + if fr.parent_field_id == self.index and not fr.field_name.startswith("_"): indices.append(i) return indices @@ -1291,7 +1290,7 @@ def _key_to_index(self): d = {} field_records = self.ntuple.field_records for i, fr in enumerate(field_records): - if fr.parent_field_id == self.index and fr.type_name != "": + if fr.parent_field_id == self.index and not fr.field_name.startswith("_"): d[fr.field_name] = i return d From f1cc335ff686d18553442df9867a366514b1ef6c Mon Sep 17 00:00:00 2001 From: Andres Rios Tascon Date: Thu, 6 Feb 2025 13:17:40 -0500 Subject: [PATCH 2/3] fix: ignore extra kwargs for keys --- src/uproot/models/RNTuple.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/uproot/models/RNTuple.py b/src/uproot/models/RNTuple.py index e7191f8aa..d719acbbe 100644 --- a/src/uproot/models/RNTuple.py +++ b/src/uproot/models/RNTuple.py @@ -199,14 +199,16 @@ def _keys(self): keys.append(fr.field_name) return keys + # TODO: this is still missing a lot of functionality def keys( self, *, filter_name=None, filter_typename=None, + filter_field=None, recursive=False, full_paths=True, - # TODO: some arguments might be missing when compared with TTree. Solve when blocker is present in dask/coffea. + **_, # For compatibility reasons we just ignore other kwargs ): if filter_name: # Return keys from the filter_name list: @@ -1255,8 +1257,22 @@ def _keys(self): keys.append(fr.field_name) return keys - def keys(self): - return self._keys + # TODO: this is still missing a lot of functionality + def keys( + self, + *, + filter_name=None, + filter_typename=None, + filter_field=None, + recursive=False, + full_paths=True, + **_, # For compatibility reasons we just ignore other kwargs + ): + if filter_name: + # Return keys from the filter_name list: + return [key for key in self._keys if key in filter_name] + else: + return self._keys @property def name(self): From f62662926a68b444aa83870c9ad036a410f1f867 Mon Sep 17 00:00:00 2001 From: Andres Rios Tascon Date: Thu, 6 Feb 2025 13:52:37 -0500 Subject: [PATCH 3/3] fix: regularize filter_name --- src/uproot/models/RNTuple.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/uproot/models/RNTuple.py b/src/uproot/models/RNTuple.py index d719acbbe..384b175d1 100644 --- a/src/uproot/models/RNTuple.py +++ b/src/uproot/models/RNTuple.py @@ -210,11 +210,8 @@ def keys( full_paths=True, **_, # For compatibility reasons we just ignore other kwargs ): - if filter_name: - # Return keys from the filter_name list: - return [key for key in self._keys if key in filter_name] - else: - return self._keys + filter_name = uproot._util.regularize_filter(filter_name) + return [key for key in self._keys if filter_name(key)] @property def _key_indices(self): @@ -1268,11 +1265,8 @@ def keys( full_paths=True, **_, # For compatibility reasons we just ignore other kwargs ): - if filter_name: - # Return keys from the filter_name list: - return [key for key in self._keys if key in filter_name] - else: - return self._keys + filter_name = uproot._util.regularize_filter(filter_name) + return [key for key in self._keys if filter_name(key)] @property def name(self):