|
|
@@ -63,8 +63,8 @@ def _deserialize(data, namespace, memo): |
|
|
|
if '__type__' in data: # Object |
|
|
|
class_ = namespace[data['__type__']] |
|
|
|
return class_.deserialize(data, memo) |
|
|
|
elif '__memo__' in data: |
|
|
|
return memo[data['__memo__']] |
|
|
|
elif '@' in data: |
|
|
|
return memo[data['@']] |
|
|
|
return {key:_deserialize(value, namespace, memo) for key, value in data.items()} |
|
|
|
elif isinstance(data, list): |
|
|
|
return [_deserialize(value, namespace, memo) for value in data] |
|
|
@@ -78,7 +78,7 @@ class Serialize(object): |
|
|
|
|
|
|
|
def serialize(self, memo=None): |
|
|
|
if memo and memo.in_types(self): |
|
|
|
return {'__memo__': memo.memoized.get(self)} |
|
|
|
return {'@': memo.memoized.get(self)} |
|
|
|
|
|
|
|
fields = getattr(self, '__serialize_fields__') |
|
|
|
res = {f: _serialize(getattr(self, f), memo) for f in fields} |
|
|
@@ -95,8 +95,8 @@ class Serialize(object): |
|
|
|
|
|
|
|
fields = getattr(cls, '__serialize_fields__') |
|
|
|
|
|
|
|
if '__memo__' in data: |
|
|
|
return memo[data['__memo__']] |
|
|
|
if '@' in data: |
|
|
|
return memo[data['@']] |
|
|
|
|
|
|
|
inst = cls.__new__(cls) |
|
|
|
for f in fields: |
|
|
|