class Module:
@staticmethod
def from_dict(d: dict[str, Any]) -> Module:
result = Module(
d["id"],
d["name"],
[Import.from_dict(import_json) for import_json in d.get("imports", [])],
[FromImport.from_dict(from_import_json) for from_import_json in d.get("from_imports", [])],
)
for class_id in d.get("classes", []):
result.add_class(class_id)
for function_id in d.get("functions", []):
result.add_function(function_id)
return result
def __init__(self, id_: str, name: str, imports: list[Import], from_imports: list[FromImport]):
self.id: str = id_
self.name: str = name
self.imports: list[Import] = imports
self.from_imports: list[FromImport] = from_imports
self.classes: list[str] = []
self.functions: list[str] = []
def add_class(self, class_id: str) -> None:
self.classes.append(class_id)
def add_function(self, function_id: str) -> None:
self.functions.append(function_id)
def to_dict(self) -> dict[str, Any]:
return {
"id": self.id,
"name": self.name,
"imports": [import_.to_dict() for import_ in self.imports],
"from_imports": [from_import.to_dict() for from_import in self.from_imports],
"classes": self.classes,
"functions": self.functions,
}