From ffed5e75b41a1ca1f95108b37b77c66cc587d518 Mon Sep 17 00:00:00 2001 From: giadarol Date: Sun, 30 Nov 2025 16:25:06 +0100 Subject: [PATCH 1/3] change behavior --- xobjects/hybrid_class.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xobjects/hybrid_class.py b/xobjects/hybrid_class.py index c42638b..13b02e1 100644 --- a/xobjects/hybrid_class.py +++ b/xobjects/hybrid_class.py @@ -169,7 +169,7 @@ def __new__(cls, name, bases, data): setattr(new_class, pyname, _FieldOfDressed(fname, _XoStruct)) - new_class._fields = pynames_list + new_class._fields = _XoStruct._fields.copy() _XoStruct._DressingClass = new_class From 303212a6ec0f6cfedeb5004d4e13463a8eebe589 Mon Sep 17 00:00:00 2001 From: giadarol Date: Sun, 30 Nov 2025 16:30:59 +0100 Subject: [PATCH 2/3] Fix --- xobjects/hybrid_class.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xobjects/hybrid_class.py b/xobjects/hybrid_class.py index 13b02e1..74c0339 100644 --- a/xobjects/hybrid_class.py +++ b/xobjects/hybrid_class.py @@ -169,7 +169,7 @@ def __new__(cls, name, bases, data): setattr(new_class, pyname, _FieldOfDressed(fname, _XoStruct)) - new_class._fields = _XoStruct._fields.copy() + new_class._fields = [ff.name for ff in _XoStruct._fields] _XoStruct._DressingClass = new_class From 19bd4beca100cfe349ce7bdcbfde8d68febd8aef Mon Sep 17 00:00:00 2001 From: giadarol Date: Mon, 1 Dec 2025 20:53:26 +0100 Subject: [PATCH 3/3] More default handling --- xobjects/hybrid_class.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xobjects/hybrid_class.py b/xobjects/hybrid_class.py index 74c0339..9ce95ab 100644 --- a/xobjects/hybrid_class.py +++ b/xobjects/hybrid_class.py @@ -295,6 +295,9 @@ def to_dict(self, copy_to_cpu=True): defaults = {} for field in obj._XoStruct._fields: + if dft := getattr(self, f"_default_{field.name}", None): + defaults[field.name] = dft + continue name = obj._rename.get(field.name, field.name) try: defaults[name] = field.get_default()