MCPcopy Index your code
hub / github.com/python/mypy / ModuleIR

Class ModuleIR

mypyc/ir/module_ir.py:13–103  ·  view source on GitHub ↗

Intermediate representation of a module.

Source from the content-addressed store, hash-verified

11
12
13class ModuleIR:
14 """Intermediate representation of a module."""
15
16 def __init__(
17 self,
18 fullname: str,
19 imports: list[str],
20 functions: list[FuncIR],
21 classes: list[ClassIR],
22 final_names: list[tuple[str, RType]],
23 type_var_names: list[str],
24 ) -> None:
25 self.fullname = fullname
26 self.imports = imports.copy()
27 self.functions = functions
28 self.classes = classes
29 self.final_names = final_names
30 # Names of C statics used for Python 3.12 type variable objects.
31 # These are only visible in the module that defined them, so no need
32 # to serialize.
33 self.type_var_names = type_var_names
34 # Dependencies needed by the module (such as capsules or source files)
35 self.dependencies: set[Dependency] = set()
36
37 def serialize(self) -> JsonDict:
38 # Serialize dependencies as a list of dicts with type information
39 serialized_deps = []
40 for dep in sorted(self.dependencies, key=lambda d: (type(d).__name__, str(d))):
41 if isinstance(dep, Capsule):
42 serialized_deps.append({"type": "Capsule", "name": dep.name})
43 elif isinstance(dep, SourceDep):
44 source_dep: JsonDict = {
45 "type": "SourceDep",
46 "path": dep.path,
47 "include_dirs": dep.include_dirs,
48 "internal": dep.internal,
49 }
50 serialized_deps.append(source_dep)
51 elif isinstance(dep, HeaderDep):
52 header_dep: JsonDict = {
53 "type": "HeaderDep",
54 "path": dep.path,
55 "include_dirs": dep.include_dirs,
56 "internal": dep.internal,
57 }
58 serialized_deps.append(header_dep)
59
60 return {
61 "fullname": self.fullname,
62 "imports": self.imports,
63 "functions": [f.serialize() for f in self.functions],
64 "classes": [c.serialize() for c in self.classes],
65 "final_names": [(k, t.serialize()) for k, t in self.final_names],
66 "dependencies": serialized_deps,
67 }
68
69 @classmethod
70 def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> ModuleIR:

Callers 2

build_irFunction · 0.90
deserializeMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…