Adds typing to utils/Path_utils

This commit is contained in:
Jeremy Hummel 2019-08-15 18:14:04 -07:00
commit 26f033402c
2 changed files with 17 additions and 17 deletions

View file

@ -1,11 +1,12 @@
from operator import attrgetter from operator import attrgetter
from pathlib import Path from pathlib import Path
from os import scandir from os import scandir
from typing import List, Optional, Callable
image_extensions = [".jpg", ".jpeg", ".png", ".tif", ".tiff"] IMAGE_EXTENSIONS = (".jpg", ".jpeg", ".png", ".tif", ".tiff")
def get_image_paths(dir_path, image_extensions=image_extensions): def get_image_paths(dir_path: str, image_extensions: List[str] = IMAGE_EXTENSIONS) -> List[str]:
dir_path = Path(dir_path) dir_path = Path(dir_path)
result = [] result = []
@ -16,7 +17,7 @@ def get_image_paths(dir_path, image_extensions=image_extensions):
return sorted(result) return sorted(result)
def get_image_unique_filestem_paths(dir_path, verbose_print_func=None): def get_image_unique_filestem_paths(dir_path: str, verbose_print_func: Optional[Callable[[str], None]] = None) -> List[str]:
result = get_image_paths(dir_path) result = get_image_paths(dir_path)
result_dup = set() result_dup = set()
@ -32,26 +33,21 @@ def get_image_unique_filestem_paths(dir_path, verbose_print_func=None):
return sorted(result) return sorted(result)
def get_file_paths(dir_path): def get_file_paths(dir_path: str) -> List[str]:
dir_path = Path(dir_path) dir_path = Path(dir_path)
result = []
if dir_path.exists(): if dir_path.exists():
return [x.path for x in scandir(str(dir_path)) if x.is_file()] return [x.path for x in scandir(str(dir_path)) if x.is_file()]
return sorted(result) return []
def get_all_dir_names(dir_path): def get_all_dir_names(dir_path: str) -> List[str]:
dir_path = Path(dir_path) dir_path = Path(dir_path)
result = []
if dir_path.exists(): if dir_path.exists():
return [x.name for x in scandir(str(dir_path)) if x.is_dir()] return [x.name for x in scandir(str(dir_path)) if x.is_dir()]
return []
return sorted(result)
def get_all_dir_names_startswith(dir_path, startswith): def get_all_dir_names_startswith(dir_path: str, startswith: str) -> List[str]:
dir_path = Path(dir_path) dir_path = Path(dir_path)
startswith = startswith.lower() startswith = startswith.lower()
@ -63,7 +59,7 @@ def get_all_dir_names_startswith(dir_path, startswith):
return sorted(result) return sorted(result)
def get_first_file_by_stem(dir_path, stem, exts=None): def get_first_file_by_stem(dir_path: str, stem: str, exts: List[str] = None) -> Optional[Path]:
dir_path = Path(dir_path) dir_path = Path(dir_path)
stem = stem.lower() stem = stem.lower()
@ -78,14 +74,14 @@ def get_first_file_by_stem(dir_path, stem, exts=None):
return None return None
def move_all_files(src_dir_path, dst_dir_path): def move_all_files(src_dir_path: str, dst_dir_path: str) -> None:
paths = get_file_paths(src_dir_path) paths = get_file_paths(src_dir_path)
for p in paths: for p in paths:
p = Path(p) p = Path(p)
p.rename(Path(dst_dir_path) / p.name) p.rename(Path(dst_dir_path) / p.name)
def delete_all_files(dir_path): def delete_all_files(dir_path: str) -> None:
paths = get_file_paths(dir_path) paths = get_file_paths(dir_path)
for p in paths: for p in paths:
p = Path(p) p = Path(p)

View file

@ -1,6 +1,6 @@
import unittest import unittest
from utils.Path_utils import get_first_file_by_stem from utils.Path_utils import get_first_file_by_stem, get_image_paths
class PathUtilsTests(unittest.TestCase): class PathUtilsTests(unittest.TestCase):
@ -10,6 +10,10 @@ class PathUtilsTests(unittest.TestCase):
self.assertEqual(first_file.suffix, '.md') self.assertEqual(first_file.suffix, '.md')
self.assertEqual(first_file.name, 'README.md') self.assertEqual(first_file.name, 'README.md')
def test_get_image_paths(self):
image_paths = get_image_paths('..', ['.py'])
print('Image paths for ".." (.py extension):', image_paths)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()