class Module:
@staticmethod
def from_json(json: Any) -> Module:
result = Module(
json["id"],
json["name"],
[Import.from_json(import_json) for import_json in json.get("imports", [])],
[
FromImport.from_json(from_import_json)
for from_import_json in json.get("from_imports", [])
],
)
for class_id in json.get("classes", []):
result.add_class(class_id)
for function_id in json.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_json(self) -> Any:
return {
"id": self.id,
"name": self.name,
"imports": [import_.to_json() for import_ in self.imports],
"from_imports": [
from_import.to_json() for from_import in self.from_imports
],
"classes": self.classes,
"functions": self.functions,
}