Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import os 

2 

3from .iface import Filter, Input, Output 

4from .jinjafilter import * 

5from .multifilter import * 

6from .reversefilter import * 

7from .strfilter import * 

8from .makofilter import * 

9from .nullfilter import * 

10from .tar import * 

11from .zip import * 

12from .dirtree import * 

13from .git import * 

14 

15 

16def isX(v, x): 

17 if not isinstance(v, type): 

18 return False 

19 if not issubclass(v, x): 

20 return False 

21 if "Abstract" in v.__name__: 

22 return False 

23 if v is x: 

24 return False 

25 return True 

26 

27 

28def input_items(): 

29 for k, v in globals().items(): 

30 if isX(v, Input): 

31 if k.endswith("Input"): 

32 k = k[:-len("Input")] 

33 yield k, v 

34 

35 

36def output_items(): 

37 for k, v in globals().items(): 

38 if isX(v, Output): 

39 if k.endswith("Output"): 

40 k = k[:-len("Output")] 

41 yield k, v 

42 

43 

44def filter_items(): 

45 for k, v in globals().items(): 

46 if isX(v, Filter): 

47 if k.endswith("Filter"): 

48 k = k[:-len("Filter")] 

49 yield k, v 

50 

51 

52def auto_detect(filename, defval): 

53 extmap = { 

54 ".tar.gz": "Tar", 

55 ".tar.bz2": "Tar", 

56 ".tar.xz": "Tar", 

57 ".tar": "Tar", 

58 ".tgz": "Tar", 

59 ".tbz2": "Tar", 

60 ".txz": "Tar", 

61 ".zip": "Zip", 

62 ".git": "Git", 

63 } 

64 if os.path.isdir(filename): 

65 return "Dir" 

66 for k, v in extmap.items(): 

67 if filename.endswith(k): 

68 return v 

69 if os.path.exists(os.path.join(filename, ".git")) or filename.startswith("http"): 

70 return "Git" 

71 if os.path.exists(filename): 

72 return "Single" 

73 return defval 

74 

75 

76def detect_input(fn: str, guess: str) -> Input: 

77 return dict(input_items()).get(auto_detect(fn, guess)) 

78 

79 

80def detect_output(fn: str, guess: str) -> Output: 

81 return dict(output_items()).get(auto_detect(fn, guess), DirOutput)