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.1.tar.gz (8.1 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.1-cp310-cp310-win_amd64.whl (142.0 kB view details)

Uploaded CPython 3.10Windows x86-64

File details

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

File metadata

  • Download URL: light_compressor-0.0.1.1.tar.gz
  • Upload date:
  • Size: 8.1 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.1.tar.gz
Algorithm Hash digest
SHA256 7e725ca939da6485186fe851fe7cc60960f1ed65bfaccfb7d3cd481edfb51938
MD5 0bc483cb77e90fc1e6679af23169dfbd
BLAKE2b-256 8a553e25ee4f9854cb55d50102b8a242a250c35c6f533272a2e58eeb62b896ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for light_compressor-0.0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 44baf4e92c2ef3ca7e9746878a778402606ab05c8281e003236c625986dd78bb
MD5 220eb071884fb686f2e2f4558748ff34
BLAKE2b-256 6990eb25a9628a20274bf79192dd9a9fe4a6797cbc5d62df7fbb67705fd34704

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