def get_dir_list(
dir_path: str | Path,
max_depth: int | None = None,
file_extensions: Sequence[str] | None = None,
_current_depth: int = 0,
) -> list[str]:
if _current_depth == 0:
file_extensions = _clean_file_extensions(file_extensions)
items = []
try:
for path in dir_path.iterdir():
if file_extensions is not None:
if path.suffix in file_extensions:
items.append(str(path))
else:
items.append(str(path))
if path.is_dir() and (max_depth is None or _current_depth < max_depth):
items.extend(
get_dir_list(
path, max_depth, file_extensions, _current_depth + 1
)
)
except PermissionError:
pass
return items