def check_serialization_roundtrip(irs: Dict[str, ModuleIR]) -> None: """Check that we can serialize modules out and deserialize them to the same thing.""" serialized = {k: ir.serialize() for k, ir in irs.items()} ctx = DeserMaps({}, {}) irs2 = deserialize_modules(serialized, ctx) assert irs.keys() == irs2.keys() for k in irs: assert_modules_same(irs[k], irs2[k])
def load_scc_from_cache( scc: List[MypyFile], result: BuildResult, mapper: Mapper, ctx: DeserMaps, ) -> ModuleIRs: """Load IR for an SCC of modules from the cache. Arguments and return are as compile_scc_to_ir. """ cache_data = { k.fullname: json.loads( result.manager.metastore.read(get_state_ir_cache_name(result.graph[k.fullname])) )['ir'] for k in scc } modules = deserialize_modules(cache_data, ctx) load_type_map(mapper, scc, ctx) return modules