import types from dataclasses import dataclass from dataclasses_json import dataclass_json @dataclass_json @dataclass class ModuleInfo: id: str name: str description: str version: str author: str class AbstractLoader: def info(self) -> ModuleInfo: raise NotImplementedError def load(self) -> types.ModuleType: raise NotImplementedError