Skip to content

Compression

DictionarySize

Bases: StrEnum

Dictionary Size for 7z compression.

Source code in src/utils/compression.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class DictionarySize(StrEnum):
    """Dictionary Size for 7z compression."""
    DS32 = "32"
    DS48 = "48"
    DS64 = "64"
    DS96 = "96"
    DS128 = "128"
    DS192 = "192"
    DS256 = "256"
    DS384 = "384"
    DS512 = "512"
    DS768 = "768"
    DS1024 = "1024"
    DS1536 = "1536"

WordSize

Bases: StrEnum

Word Size for 7z compression.

Source code in src/utils/compression.py
21
22
23
24
25
26
27
28
29
class WordSize(StrEnum):
    """Word Size for 7z compression."""
    WS16 = "16"
    WS24 = "24"
    WS32 = "32"
    WS48 = "48"
    WS64 = "64"
    WS96 = "96"
    WS128 = "128"

compress_all_templates()

Compress all app templates.

Source code in src/utils/compression.py
140
141
142
143
144
145
146
def compress_all_templates():
    """Compress all app templates."""
    # Compress base templates
    compress_all(con.path_templates)

    # Compress plugin templates
    _ = [compress_plugin(p) for p in ['MrTeferi', 'SilvanMTG']]

compress_cli()

File utilities CLI.

Source code in src/utils/compression.py
169
170
171
172
@click.group()
def compress_cli():
    """File utilities CLI."""
    pass

compress_file(file_path, output_dir)

Compress a target file and save it as a 7z archive to the output directory. @param file_path: File to compress. @param output_dir: Directory to save archive to. @return: True if compression succeeded, otherwise False.

Source code in src/utils/compression.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
def compress_file(file_path: Union[str, os.PathLike], output_dir: Union[str, os.PathLike]) -> bool:
    """
    Compress a target file and save it as a 7z archive to the output directory.
    @param file_path: File to compress.
    @param output_dir: Directory to save archive to.
    @return: True if compression succeeded, otherwise False.
    """
    # Define the output file path
    filename = osp.basename(file_path).replace('.psd', '.7z')
    out_file = Path(output_dir, filename)
    null_device = open(os.devnull, 'w')

    # Compress the file
    try:
        subprocess.run([
                "7z", "a", "-t7z", "-m0=LZMA", "-mx=9",
                f"-md={DictionarySize.DS96}M",
                f"-mfb={WordSize.WS24}",
                str(out_file), str(file_path)
            ], stdout=null_device, stderr=null_device)
    except Exception as e:
        # console.critical("An error occurred compressing file!", exc_info=e)
        return False
    return True

decompress_file(file_path)

Decompress target 7z archive. @param file_path: Path to the 7z archive.

Source code in src/utils/compression.py
154
155
156
157
158
159
160
161
def decompress_file(file_path: Union[str, os.PathLike]) -> None:
    """
    Decompress target 7z archive.
    @param file_path: Path to the 7z archive.
    """
    with py7zr.SevenZipFile(file_path, 'r') as archive:
        archive.extractall(path=osp.dirname(file_path))
    os.remove(file_path)