Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> 'RuntimeArg':
     return RuntimeArg(
         data['name'],
         deserialize_type(data['type'], ctx),
         ArgKind(data['kind']),
         data['pos_only'],
     )
Ejemplo n.º 3
0
 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']],
     )
Ejemplo n.º 4
0
 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),
     )