(cls, data: JsonDict, ctx: DeserMaps)
| 68 | |
| 69 | @classmethod |
| 70 | def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> ModuleIR: |
| 71 | module = ModuleIR( |
| 72 | data["fullname"], |
| 73 | data["imports"], |
| 74 | [ctx.functions[FuncDecl.get_id_from_json(f)] for f in data["functions"]], |
| 75 | [ClassIR.deserialize(c, ctx) for c in data["classes"]], |
| 76 | [(k, deserialize_type(t, ctx)) for k, t in data["final_names"]], |
| 77 | [], |
| 78 | ) |
| 79 | |
| 80 | # Deserialize dependencies |
| 81 | deps: set[Dependency] = set() |
| 82 | for dep_dict in data["dependencies"]: |
| 83 | if dep_dict["type"] == "Capsule": |
| 84 | deps.add(Capsule(dep_dict["name"])) |
| 85 | elif dep_dict["type"] == "SourceDep": |
| 86 | deps.add( |
| 87 | SourceDep( |
| 88 | dep_dict["path"], |
| 89 | include_dirs=dep_dict["include_dirs"], |
| 90 | internal=dep_dict["internal"], |
| 91 | ) |
| 92 | ) |
| 93 | elif dep_dict["type"] == "HeaderDep": |
| 94 | deps.add( |
| 95 | HeaderDep( |
| 96 | dep_dict["path"], |
| 97 | include_dirs=dep_dict["include_dirs"], |
| 98 | internal=dep_dict["internal"], |
| 99 | ) |
| 100 | ) |
| 101 | module.dependencies = deps |
| 102 | |
| 103 | return module |
| 104 | |
| 105 | |
| 106 | def deserialize_modules(data: dict[str, JsonDict], ctx: DeserMaps) -> dict[str, ModuleIR]: |
no test coverage detected