from abc import ABC, abstractmethod from pathlib import Path class AItem(ABC): """ Raises: FileNotFoundError: if the given path does not exist on the FS PermissionError: if the process lacks permission to read the file metadata """ def __init__(self, path: Path) -> None: self._path = path self.update() COLOR = 0 def update(self) -> None: self._stat = self._path.lstat() self._permissions = self._stat.st_mode def fields(self) -> tuple[str, int, int]: return (self.name, self.size, self.permissions) def __str__(self) -> str: return f"{self.name}, {self.size}, {self.permissions}" @property def path(self) -> Path: return self._path @property def name(self) -> str: return self._path.name @property def size(self) -> int: return self._stat.st_size @property def permissions(self) -> int: return self._permissions @property def color_pair(self) -> int: return self.COLOR