import abc from image_prediction.info import Info class SplitMapper(abc.ABC): def __init__(self, wrapped: dict, keymap: dict): self.wrapped = wrapped self.keymap = keymap def __getitem__(self, key): return self.wrapped[self.keymap[key]] def __setitem__(self, key, value): self.wrapped[self.keymap[key]] = value @property def dim(self): return self["dim"] @dim.setter def dim(self, value): self["dim"] = value @property def c1(self): return self["c1"] @c1.setter def c1(self, value): self["c1"] = value @property def c2(self): return self["c2"] @c2.setter def c2(self, value): self["c2"] = value class HorizontalSplitMapper(SplitMapper): def __init__(self, wrapped: dict): super().__init__(wrapped, {"dim": Info.WIDTH, "c1": Info.X1, "c2": Info.X2}) class VerticalMapper(SplitMapper): def __init__(self, wrapped: dict): super().__init__(wrapped, {"dim": Info.HEIGHT, "c1": Info.Y1, "c2": Info.Y2})