import os import logging from typing import Union from dataclasses import is_dataclass from .log import logger def get_latest_modified_file(directory): files = [os.path.join(directory, f) for f in os.listdir(directory)] if not files: logger.get_logger().log( logging.WARNING, f"no files found in the directory: {directory}" ) return None latest_file = max(files, key=os.path.getmtime) return latest_file def del_all(d: Union[dict, list]): if is_dataclass(d): for k in list(vars(d).keys()): x = getattr(d, k) if isinstance(x, dict) or isinstance(x, list) or is_dataclass(x): del_all(x) del x delattr(d, k) elif isinstance(d, dict): lst = list(d.keys()) for k in lst: x = d.pop(k) if isinstance(x, dict) or isinstance(x, list) or is_dataclass(x): del_all(x) del x elif isinstance(d, list): while len(d): x = d.pop() if isinstance(x, dict) or isinstance(x, list) or is_dataclass(x): del_all(x) del x else: del d