Skip to main content

FastLZ

Python wrapper for FastLZ_, a lightning-fast lossless compression library.

Example:

from fastlz5 import compress, decompress s = decompress(compress("hello there world", level=1)) assert(s == "hello there world")

Example:

import os
import sys
import argparse

try:
    from fastlz5 import compress, decompress
except ModuleNotFoundError:
    sys.stderr.write(
        'fastlz lib not found, please install it with "python -m pip install fastlz5"')
    sys.exit(1)

# Breaks an array into chunks of n length each.
def chunks(l, n):    
    for i in range(0, len(l), n):
        yield l[i:i + n]

def bytes_to_c_array(bytes, variable_name):
    output_c_array = (
        "#include <stdint.h>\n" +
        f"extern const uint8_t {variable_name}[{len(bytes)}] = " + "{\n"
    )
    for byte_block in chunks(bytes, 64):
        output_c_array += '  '
        for byte in byte_block:
            output_c_array += f'{byte},'
        output_c_array += '\n'
    output_c_array += "};\n"
    return output_c_array

def main():
    parser = argparse.ArgumentParser(description='Prepare data file for teensy by compressing it and outputting a c-array')
    parser.add_argument('--input', help='Input file', required=True)
    parser.add_argument('--output', help='Output file, otherwise stream to stdout', required=False)
    parser.add_argument('--variable-name', help='Name for the variable of c_array', required=False)
    parser.add_argument('--no-compress', help='Disable FastLZ compression to file', action='store_true')

    args = parser.parse_args()
    if not os.path.exists(args.input):
        sys.stderr.write(f'File {args.input} does not exist.\n')
        sys.exit(1)

    with open(args.input, "rb") as fd:
        file_input_bytes = fd.read()

    if not args.no_compress:
        file_input_bytes = compress(file_input_bytes, level=1)

    var_name = args.variable_name or "data"
    output_c_array = bytes_to_c_array(file_input_bytes, var_name)

    if args.output:
        with open(args.output, "wt") as fd:
            fd.write(output_c_array)
    else:
        sys.stdout.write(f"{output_c_array}\n")

if __name__ == '__main__':
    main()

Download files

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

Source Distribution

fastlz5-0.0.1.4.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

fastlz5-0.0.1.4-cp39-cp39-win_amd64.whl (10.7 kB view details)

Uploaded CPython 3.9Windows x86-64

File details

Details for the file fastlz5-0.0.1.4.tar.gz.

File metadata

  • Download URL: fastlz5-0.0.1.4.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.0

File hashes

Hashes for fastlz5-0.0.1.4.tar.gz
Algorithm Hash digest
SHA256 6d389d010cb729cfbfd3fe03e7d257ab8aa2c455a1c408a25858cf9c87c32d20
MD5 c24c1bf2dd8f966c8fc2c4ab09d29439
BLAKE2b-256 cf5ed7b90452cc177ffaeedbee79242c003bb57c0d3dd86a3bc5bf18d56371c5

See more details on using hashes here.

File details

Details for the file fastlz5-0.0.1.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: fastlz5-0.0.1.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.0

File hashes

Hashes for fastlz5-0.0.1.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 03f2c6e56ee8497e85dd076df26ebbb79b7b869957b9d55d1b966669e708a7b9
MD5 1707d3457cef60624f6c91ab2fffa8f3
BLAKE2b-256 a7d5ea1d6cc18c194b89712b2e7b71b3f83fe7bfc9ea426675c531275efa0436

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.1.4 This release

2 files

0.0.1.3

2 files

0.0.1

2 files

Supported by

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