| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | import pathlibimport timefrom .file_handler import file_handlerclass log_directory:    def __init__(self, target: pathlib.Path | None = None) -> None:        if target is None:            target = pathlib.Path("./logs")        if not target.is_dir():            target.mkdir()        self.__root = target    @staticmethod    def _ends_with(name: str, ending: str) -> bool:        return name[-len(ending):] == ending    @property    def root(self) -> pathlib.Path:        return self.__root    @property    def logs(self) -> tuple:        return tuple(self.iter_logs())    def iter_logs(self) -> pathlib.Path:        for count in self.__root.iterdir():            if self._ends_with(count.name, ".log"):                yield self.__root / count    def get_logs_for_day(self, name: str | None = None) -> tuple:        if name is None:            name = self._base_name        logs = self.iter_logs()        filtered = filter(lambda count: str(count).find(name) != -1, logs)        return tuple(filtered)    @property    def _base_name(self) -> str:        return time.strftime("%Y-%m-%d", time.localtime())        def get_new_file(self) -> pathlib.Path:        base_name = self._base_name        name_logs = self.get_logs_for_day(base_name)        name_count = len(name_logs)        while True:            result_name = (                base_name + "-" + \                str(name_count + 1) + ".log" \            )            result_path = self.root / pathlib.Path(result_name)            if not result_path.exists():                return result_path                        name_count = name_count + 1    def get_new_handler(self) -> file_handler:        return file_handler(self.get_new_file())
 |