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
9from .magic_class import MagicClassWithHelpers
10from .magic_parser import MagicCommandParser
11from ..filehelper import zip_files, gzip_files, zip7_files
14@magics_class
15class MagicCompress(MagicClassWithHelpers):
17 """
18 Defines magic commands to compress files.
19 """
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
39 @line_magic
40 def compress(self, line):
41 """
42 .. nbref::
43 :title: %compress
45 It compresses a list of files,
46 it returns the number of compressed files::
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)
61 if args is not None:
62 dest = args.dest
63 files = args.files
64 format = os.path.splitext(dest)[-1].strip(".").lower()
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
78def register_file_magics(ip=None): # pragma: no cover
79 """
80 Registers magics function, can be called from a notebook.
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)