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

26 statements  

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

1import argparse 

2 

3import griddle 

4import noiftimer 

5import printbuddies 

6import younotyou 

7 

8from .pathier import Pathier, Pathish, Pathy 

9 

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

11 

12 

13@noiftimer.time_it() 

14def sizeup(): 

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

16 parser = argparse.ArgumentParser("sizeup") 

17 parser.add_argument( 

18 "-i", 

19 "--ignore", 

20 nargs="*", 

21 default=[], 

22 type=str, 

23 help="Directory patterns to ignore.", 

24 ) 

25 args = parser.parse_args() 

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

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

28 folders = [ 

29 folder 

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

31 if folder.is_dir() and str(folder) in matcher 

32 ] 

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

34 for folder in printbuddies.track(folders, "Scanning directories"): 

35 try: 

36 sizes[folder.name] = folder.size 

37 except Exception as e: 

38 pass 

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

40 size_list = [ 

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

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

43 ] 

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

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

46 

47 

48__version__ = "1.5.2"