46 lines
1 KiB
Python
46 lines
1 KiB
Python
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
|
|
|