Skip to main content

Library for read compressed stream and write compressed chunks.

Project description

Light Compressor

This library is designed to provide optimal decompression and compression speed for data streams from databases and files. My project requires maximum-speed processing of byte streams and transferring compressed data to another stream. After testing all available solutions, I found their speed unsatisfactory, so I optimized the existing implementation to achieve better performance.

The stream reader use direct sequential reading from the stream with explicit size indication. This meets all requirements for my project. Supported compression formats: LZ4 and ZSTD only.

Examples

File reading

When reading from files, automatic compression format detection is available (checks for LZ4/ZSTD signatures or no compression):

from light_compressor import define_reader
fileobj = open("some_path_to_file.bin", "rb")
decompressed_stream = define_reader(fileobj)

File writing

from light_compressor import (
    LZ4Compressor,
    ZSTDCompressor,
)
# some data in bytes
bytes_data: list[bytes]
# for example we using ZSTDCompressor
compressor = ZSTDCompressor()
fileobj = open("some_path_to_file.bin", "wb")

for data in compressor.send_chunks(bytes_data):
    fileobj.write(data)

print("Original size is:", compressor.decompressed_size)
print("Compressed size is:", fileobj.tell())

fileobj.close()

Stream reading

For stream processing, the compression method must be explicitly specified

from light_compressor import (
    define_reader,
    CompressionMethod,
)
# Get decompressed file-like object from ZSTD-compressed stream
decompressed_stream = define_reader(fileobj, CompressionMethod.ZSTD)

Stream writing

from light_compressor import (
    define_writer,
    CompressionMethod,
)
# some data in bytes
bytes_data: list[bytes]
# Get generator yielding ZSTD-compressed byte chunks
compressed_stream = define_writer(bytes_data, CompressionMethod.ZSTD)

Installation

From pip

pip install light-compressor

From local directory

pip install .

From git

pip install git+https://github.com/0xMihalich/light_compressor

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

light_compressor-0.0.1.2.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

light_compressor-0.0.1.2-cp310-cp310-win_amd64.whl (143.5 kB view details)

Uploaded CPython 3.10Windows x86-64

File details

Details for the file light_compressor-0.0.1.2.tar.gz.

File metadata

  • Download URL: light_compressor-0.0.1.2.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for light_compressor-0.0.1.2.tar.gz
Algorithm Hash digest
SHA256 c5f0a52025e0bddefdb0948a7a3d58de82d3f35199cc32428a23b7471ee67da2
MD5 2002962186636aa21cd3b35ccee11f35
BLAKE2b-256 149082727023e674775a7229b206a47853727111f50d48b6cd381ee05ef9d639

See more details on using hashes here.

File details

Details for the file light_compressor-0.0.1.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for light_compressor-0.0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 98c089025179bb851d658524c6c32ce19c55f3fdeec8c5e08c594754b7f0f0cc
MD5 3812ffd61c4d0d3c1df5b1698efa92ff
BLAKE2b-256 078f355852c269abcc6d7822830b1c258cdcccd1c2fc227611077cfef371b5e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page