From 444cb27f77e28ac400743ece33ed13f5b3bbf68c Mon Sep 17 00:00:00 2001 From: Albert Torosyan Date: Fri, 11 Aug 2023 11:24:35 +0400 Subject: [PATCH] [fix] Add ability to decode/encode Objects when source code is not available --- src/python/aim/_core/storage/object.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/python/aim/_core/storage/object.py b/src/python/aim/_core/storage/object.py index 4943a1c3d7..2541be49a7 100644 --- a/src/python/aim/_core/storage/object.py +++ b/src/python/aim/_core/storage/object.py @@ -22,7 +22,10 @@ def decorator(cls): @staticmethod def by_name(name: str): - return CustomObject.registry[name] + try: + return CustomObject.registry[name] + except KeyError: + return CustomObjectProxy @classmethod def get_typename(cls) -> str: @@ -52,4 +55,11 @@ def _aim_encode(self): @classmethod def _aim_decode(cls, aim_name, storage): custom_cls = cls.by_name(aim_name) - return cls.__new__(custom_cls, _storage=storage) + obj = cls.__new__(custom_cls, _storage=storage) + setattr(obj, '_cls_name', aim_name) + return obj + + +class CustomObjectProxy(CustomObject): + def _aim_encode(self): + return self._cls_name, self.storage[...]