Coverage for src\pathier\__init__.py: 40%

25 statements  

« prev     ^ index     » next       coverage.py v7.2.2, created at 2024-05-07 16:38 -0500

1import argparse 

2import griddle 

3import noiftimer 

4import printbuddies 

5import younotyou 

6 

7from .pathier import Pathier, Pathish, Pathy 

8 

9__all__ = ["Pathier", "Pathy", "Pathish"] 

10 

11 

12@noiftimer.time_it() 

13def sizeup(): 

14 """Print the sub-directories and their sizes of the current working directory.""" 

15 parser = argparse.ArgumentParser("sizeup") 

16 parser.add_argument( 

17 "-i", 

18 "--ignore", 

19 nargs="*", 

20 default=None, 

21 type=str, 

22 help="Directory patterns to ignore.", 

23 ) 

24 args = parser.parse_args() 

25 matcher = younotyou.Matcher(exclude_patterns=args.ignore) 

26 sizes: dict[str, int] = {} 

27 folders = [ 

28 folder 

29 for folder in Pathier.cwd().iterdir() 

30 if folder.is_dir() and str(folder) not in matcher 

31 ] 

32 print(f"Sizing up {len(folders)} directories...") 

33 with printbuddies.ProgBar(len(folders)) as prog: 

34 for folder in folders: 

35 prog.display(f"Scanning '{folder.name}'") 

36 sizes[folder.name] = folder.size 

37 total_size = sum(sizes[folder] for folder in sizes) 

38 size_list = [ 

39 (folder, Pathier.format_bytes(sizes[folder])) 

40 for folder in sorted(list(sizes.keys()), key=lambda f: sizes[f], reverse=True) 

41 ] 

42 print(griddle.griddy(size_list, ["Dir", "Size"])) 

43 print(f"Total size of '{Pathier.cwd()}': {Pathier.format_bytes(total_size)}") 

44 

45 

46__version__ = "1.5.1"