Source code for twindb_backup.modifiers.lbzip2

# -*- coding: utf-8 -*-
"""
Module defines modifier that compresses a stream with lbzip2
"""
from psutil import cpu_count

from twindb_backup.modifiers.parallel_compressor import ParallelCompressor

DEFAULT_THREADS = cpu_count() - 1


[docs]class Lbzip2(ParallelCompressor): """ Modifier that compresses the input_stream with lbzip2. """ def __init__(self, input_stream, threads=DEFAULT_THREADS, level=9): """ Modifier that uses lbzip2 compression :param input_stream: Input stream. Must be file object :param threads: number of threads to use (defaults to total-1) :type threads: int :param level: compression level from 1 to 9 (fastest to best) :type level: int """ super(Lbzip2, self).__init__( input_stream, program="lbzip2", threads=threads, level=level, suffix=".bz", ) @property def _modifier_cmd(self): """get compression program cmd""" return [ self._program, "-{0}".format(self._level), "-n", str(self._threads), "-c", "-", ] @property def _unmodifier_cmd(self): """get decompression program cmd""" return [self._program, "-n", str(self._threads), "-d", "-c"]