in smallpond/execution/task.py [0:0]
def clean_complex_attrs(self):
self._np_randgen = None
self._py_randgen = None
self.perf_profile = None
def is_primitive(obj: Any):
return isinstance(obj, (bool, str, int, float))
def is_primitive_iterable(obj: Any):
if isinstance(obj, dict):
return all(is_primitive(key) and is_primitive(value) for key, value in obj.items())
elif isinstance(obj, Iterable):
return all(is_primitive(elem) for elem in obj)
return False
if hasattr(self, "__dict__"):
complex_attrs = [
attr for attr, obj in vars(self).items() if not (attr in self._pristine_attrs or is_primitive(obj) or is_primitive_iterable(obj))
]
if complex_attrs:
logger.debug(f"removing complex attributes not explicitly declared in __slots__: {complex_attrs}")
for attr in complex_attrs:
delattr(self, attr)