# Test sorting
files = [
FileInfo(name="zebra.txt", path="/zebra.txt", is_directory=False, size=100, extension="txt"),
FileInfo(name="alpha", path="/alpha", is_directory=True),
FileInfo(name="beta.py", path="/beta.py", is_directory=False, size=50, extension="py"),
]
# Sort by name, folders first
sorted_files = sort_files(files, sort_by="name", folders_first=True)
assert sorted_files[0].name == "alpha" # Folder first
assert sorted_files[1].name == "beta.py" # Then files alphabetically
# Sort by size
sorted_files = sort_files(files, sort_by="size", folders_first=False)
assert sorted_files[0].size == 0 or sorted_files[0].size is None # Folder has no size
# Test filtering
filter_cfg = FilterConfig(allowed_extensions=[".py"])
filtered = filter_files(files, filter_cfg)
assert len(filtered) == 2 # One .py file + folder (folders pass extension filter)
assert any(f.name == "beta.py" for f in filtered)
assert any(f.name == "alpha" for f in filtered)
print("Sorting and filtering tests passed!")Utils
Sorting and filtering utilities for file listings.
Sorting and Filtering
filter_files
def filter_files(
files:List, # Files to filter
filter_config:FilterConfig, # Filter configuration
)->List: # Filtered file list
Filter files based on configuration.
sort_files
def sort_files(
files:List, # Files to sort
sort_by:str='name', # Sort field
descending:bool=False, # Sort direction
folders_first:bool=True, # Sort folders before files
)->List: # Sorted file list
Sort files by the specified field.