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

1# -*- coding: utf-8 -*- 

2""" 

3@file 

4@brief Magic command to handle files 

5""" 

6import os 

7from IPython.core.magic import magics_class, line_magic 

8 

9from .magic_class import MagicClassWithHelpers 

10from .magic_parser import MagicCommandParser 

11from ..filehelper import zip_files, gzip_files, zip7_files 

12 

13 

14@magics_class 

15class MagicCompress(MagicClassWithHelpers): 

16 

17 """ 

18 Defines magic commands to compress files. 

19 """ 

20 

21 @staticmethod 

22 def compress_parser(): 

23 """ 

24 defines the way to parse the magic command ``%compress`` 

25 """ 

26 parser = MagicCommandParser(prog="compress", 

27 description='display the content of a repository (GIT or SVN)') 

28 parser.add_argument( 

29 'dest', 

30 type=str, 

31 help='destination, the extension defines the compression format, zip, gzip 7z') 

32 parser.add_argument( 

33 'files', 

34 type=str, 

35 nargs="?", 

36 help='files to compress or a python list') 

37 return parser 

38 

39 @line_magic 

40 def compress(self, line): 

41 """ 

42 .. nbref:: 

43 :title: %compress 

44 

45 It compresses a list of files, 

46 it returns the number of compressed files:: 

47 

48 from pyquickhelper import zip_files, gzip_files, zip7_files 

49 if format == "zip": 

50 zip_files(dest, files) 

51 elif format == "gzip": 

52 gzip_files(dest, files) 

53 elif format == "7z": 

54 zip7_files(dest, files) 

55 else: 

56 raise ValueError("unexpected format: " + format) 

57 """ 

58 parser = self.get_parser(MagicCompress.compress_parser, "compress") 

59 args = self.get_args(line, parser) 

60 

61 if args is not None: 

62 dest = args.dest 

63 files = args.files 

64 format = os.path.splitext(dest)[-1].strip(".").lower() 

65 

66 if format == "zip": 

67 return zip_files(dest, files) 

68 if format == "gzip": 

69 return gzip_files(dest, files) 

70 if format == "7z": # pragma: no cover 

71 return zip7_files(dest, files) 

72 raise ValueError( # pragma: no cover 

73 "Unexpected format: '{0}' from file '{1}'?".format( 

74 format, dest)) 

75 return None 

76 

77 

78def register_file_magics(ip=None): # pragma: no cover 

79 """ 

80 Registers magics function, can be called from a notebook. 

81 

82 @param ip from ``get_ipython()`` 

83 """ 

84 if ip is None: 

85 from IPython import get_ipython 

86 ip = get_ipython() 

87 ip.register_magics(MagicCompress)