import enum from dataclasses import dataclass class Actions: finished = 0 error = 1 message = 2 state_update = 3 @dataclass class BaseModel: action: int app_name: str @staticmethod def base_from_json(data: dict) -> dict: return dict( action=data["action"], app_name=data["app_name"] ) @dataclass class FinishedModel(BaseModel): exit_code: int playtime: int # seconds @classmethod def from_json(cls, data): return cls( **super().base_from_json(data), exit_code=data["exit_code"], playtime=data["playtime"], ) @dataclass class StateChangedModel(BaseModel): class States: started = 0 # for future syncing_cloud = 1 cloud_sync_finished = 2 new_state: int @classmethod def from_json(cls, data): return cls( action=data["action"], app_name=data["app_name"], new_state=data["new_state"] ) @dataclass class ErrorModel(BaseModel): error_string: str @classmethod def from_json(cls, data): return cls( **super().base_from_json(data), error_string=data["error_string"] )