Spaces:
Configuration error
Configuration error
import os | |
import sys | |
import copy | |
import inspect | |
import datetime | |
from typing import List, Tuple, Optional, Dict | |
def glob_files( | |
root_path: str, | |
extensions: Tuple[str], | |
recursive: bool = True, | |
skip_hidden_directories: bool = True, | |
max_directories: Optional[int] = None, | |
max_files: Optional[int] = None, | |
relative_path: bool = False, | |
) -> Tuple[List[str], bool, bool]: | |
"""glob files with specified extensions | |
Args: | |
root_path (str): _description_ | |
extensions (Tuple[str]): _description_ | |
recursive (bool, optional): _description_. Defaults to True. | |
skip_hidden_directories (bool, optional): _description_. Defaults to True. | |
max_directories (Optional[int], optional): max number of directories to search. Defaults to None. | |
max_files (Optional[int], optional): max file number limit. Defaults to None. | |
relative_path (bool, optional): _description_. Defaults to False. | |
Returns: | |
Tuple[List[str], bool, bool]: _description_ | |
""" | |
paths = [] | |
hit_max_directories = False | |
hit_max_files = False | |
for directory_idx, (directory, _, fnames) in enumerate(os.walk(root_path, followlinks=True)): | |
if skip_hidden_directories and os.path.basename(directory).startswith("."): | |
continue | |
if max_directories is not None and directory_idx >= max_directories: | |
hit_max_directories = True | |
break | |
paths += [ | |
os.path.join(directory, fname) | |
for fname in sorted(fnames) | |
if fname.lower().endswith(extensions) | |
] | |
if not recursive: | |
break | |
if max_files is not None and len(paths) > max_files: | |
hit_max_files = True | |
paths = paths[:max_files] | |
break | |
if relative_path: | |
paths = [os.path.relpath(p, root_path) for p in paths] | |
return paths, hit_max_directories, hit_max_files | |
def get_time_string() -> str: | |
x = datetime.datetime.now() | |
return f"{(x.year - 2000):02d}{x.month:02d}{x.day:02d}-{x.hour:02d}{x.minute:02d}{x.second:02d}" | |
def get_function_args() -> Dict: | |
frame = sys._getframe(1) | |
args, _, _, values = inspect.getargvalues(frame) | |
args_dict = copy.deepcopy({arg: values[arg] for arg in args}) | |
return args_dict | |