diff --git a/xobjects/array.py b/xobjects/array.py index 8e9a23e..0fb5202 100644 --- a/xobjects/array.py +++ b/xobjects/array.py @@ -11,7 +11,6 @@ default_conf, ) from .scalar import Int64, is_scalar -import xobjects as xo log = logging.getLogger(__name__) @@ -215,9 +214,8 @@ def __new__(cls, name, bases, data): # determine has_refs if '_itemtype' in data.keys(): - if ((hasattr(data['_itemtype'], '_has_refs') - and data['_itemtype']._has_refs) - or isinstance(data['_itemtype'], xo.Ref)): + if (hasattr(data['_itemtype'], '_has_refs') + and data['_itemtype']._has_refs): data['_has_refs'] = True else: data['_has_refs'] = False diff --git a/xobjects/ref.py b/xobjects/ref.py index d88ca86..d5a671b 100644 --- a/xobjects/ref.py +++ b/xobjects/ref.py @@ -19,6 +19,9 @@ def __getitem__(cls, reftype): class Ref(metaclass=MetaRef): + + _has_refs = True + def __init__(self, reftype): self._reftype = reftype self.__name__ = "Ref" + self._reftype.__name__ diff --git a/xobjects/struct.py b/xobjects/struct.py index a974375..dc25d95 100644 --- a/xobjects/struct.py +++ b/xobjects/struct.py @@ -42,8 +42,6 @@ """ import logging from typing import Callable, Optional -from .ref import Ref - from .typeutils import ( get_a_buffer, @@ -251,8 +249,7 @@ def _inspect_args(cls, *args, **kwargs): _has_refs = False for ff in data['_fields']: ftype = ff.ftype - if ((hasattr(ftype, '_has_refs') and ftype._has_refs) - or isinstance(ftype, Ref)): + if hasattr(ftype, '_has_refs') and ftype._has_refs: _has_refs = True break data['_has_refs'] = _has_refs