def deserialize(cls, data: JsonDict, ctx: 'DeserMaps') -> 'ClassIR': fullname = data['module_name'] + '.' + data['name'] assert fullname in ctx.classes, "Class %s not in deser class map" % fullname ir = ctx.classes[fullname] ir.is_trait = data['is_trait'] ir.is_generated = data['is_generated'] ir.is_abstract = data['is_abstract'] ir.is_ext_class = data['is_ext_class'] ir.is_augmented = data['is_augmented'] ir.inherits_python = data['inherits_python'] ir.has_dict = data['has_dict'] ir.allow_interpreted_subclasses = data['allow_interpreted_subclasses'] ir.needs_getseters = data['needs_getseters'] ir._serializable = data['_serializable'] ir.builtin_base = data['builtin_base'] ir.ctor = FuncDecl.deserialize(data['ctor'], ctx) ir.attributes = OrderedDict( (k, deserialize_type(t, ctx)) for k, t in data['attributes']) ir.method_decls = OrderedDict( (k, ctx.functions[v].decl if isinstance(v, str) else FuncDecl. deserialize(v, ctx)) for k, v in data['method_decls']) ir.methods = OrderedDict( (k, ctx.functions[v]) for k, v in data['methods']) ir.glue_methods = OrderedDict(((ctx.classes[c], k), ctx.functions[v]) for (c, k), v in data['glue_methods']) ir.property_types = OrderedDict( (k, deserialize_type(t, ctx)) for k, t in data['property_types']) ir.properties = OrderedDict( (k, (ir.methods[k], ir.methods.get(PROPSET_PREFIX + k))) for k in data['properties']) ir.vtable = data['vtable'] ir.vtable_entries = deserialize_vtable(data['vtable_entries'], ctx) ir.trait_vtables = OrderedDict( (ctx.classes[k], deserialize_vtable(v, ctx)) for k, v in data['trait_vtables']) base = data['base'] ir.base = ctx.classes[base] if base else None ir.traits = [ctx.classes[s] for s in data['traits']] ir.mro = [ctx.classes[s] for s in data['mro']] ir.base_mro = [ctx.classes[s] for s in data['base_mro']] ir.children = data['children'] and [ ctx.classes[s] for s in data['children'] ] ir.deletable = data['deletable'] ir.attrs_with_defaults = set(data['attrs_with_defaults']) ir._always_initialized_attrs = set(data['_always_initialized_attrs']) ir._sometimes_initialized_attrs = set( data['_sometimes_initialized_attrs']) ir.init_self_leak = data['init_self_leak'] return ir
def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> 'RuntimeArg': return RuntimeArg( data['name'], deserialize_type(data['type'], ctx), ArgKind(data['kind']), data['pos_only'], )
def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> 'ModuleIR': return ModuleIR( data['fullname'], data['imports'], [ ctx.functions[FuncDecl.get_name_from_json(f['decl'])] for f in data['functions'] ], [ClassIR.deserialize(c, ctx) for c in data['classes']], [(k, deserialize_type(t, ctx)) for k, t in data['final_names']], )
def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> 'FuncSignature': return FuncSignature( [RuntimeArg.deserialize(arg, ctx) for arg in data['args']], deserialize_type(data['ret_type'], ctx), )