from file_handlers import FileHandler class VersionRepository(): def __init__(self, file): self.file = file self.file_handler = None self.version = None self.is_snapshot = None def load_file(self): self.file_handler = FileHandler.from_file_path(self.file) return file_handler def write_file(self): if self.file_handler is None: raise Exception('Version was not created by load_file method.') if self.version is None or self.is_snapshot is None: raise Exception('Version or is_snapshot attribute not set.') else: self.file_handler.write(self.version) def parse_file(self, file_handler): version, is_snapshot = file_handler.parse() return version, is_snapshot @classmethod def get_current_version(cls, file): inst = cls(file) file_handler= inst.load_file(file) version, is_snapshot = inst.parse_file(file_handler) inst.version = version inst.is_snapshot = is_snapshot inst.file_handler = file_handler return inst