Skip to main content

CompressionUtils


id: py-CompressionUtils

CompressionUtils

Utility class for compressing and decompressing data, plus reading ZIP archives. All methods are static.


At a Glance

# Compress data before sending
data = b"Large payload..."
compressed = CompressionUtils.compress('gzip', [data])

# Decompress received data
decompressed = CompressionUtils.decompress('gzip', compressed)

# Read ZIP archive contents
files = CompressionUtils.zipList(zip_data)
content = CompressionUtils.zipRead(zip_data, 'data.csv')

Compression

compress(algorithm, data)

Compresses a list of byte arrays using the specified algorithm.

ParameterTypeDescription
algorithmstrCompression algorithm
dataList[bytes]List of byte arrays to compress

Returns: List[bytes]

data = b"Hello, World!"
compressed = CompressionUtils.compress('gzip', [data])

decompress(algorithm, data)

Decompresses a list of byte arrays.

ParameterTypeDescription
algorithmstrCompression algorithm (or 'auto' to detect)
dataList[bytes]List of compressed byte arrays

Returns: List[bytes]

decompressed = CompressionUtils.decompress('gzip', compressed)

Supported Algorithms

AlgorithmDescription
gzip / gzGzip (most common)
deflateDeflate
bzip2 / bzBzip2
lz4framedLZ4 framed
lz4blockLZ4 block
lzmaLZMA
snappySnappy (fast)
xzXZ
zstdZstandard
autoAuto-detect (decompress only)

ZIP Archives

zipList(data, password)

Lists all file names in a ZIP archive.

ParameterTypeDescription
databytesZIP archive bytes
passwordOptional[str]Password if encrypted

Returns: List[str]

files = CompressionUtils.zipList(zip_data)
stream.logInfo(f"Files in archive: {', '.join(files)}")

zipRead(data, file, password)

Reads a specific file from a ZIP archive.

ParameterTypeDescription
databytesZIP archive bytes
filestrFile name to extract
passwordOptional[str]Password if encrypted

Returns: List[str]

# Read a file
lines = CompressionUtils.zipRead(zip_data, 'data.csv')
for line in lines:
stream.logInfo(line)

# Read with password
lines = CompressionUtils.zipRead(zip_data, 'sensitive.csv', 'password123')

Complete Example

def on_message():
file_content = message.getByteString(dataDictionary.type.File.RAW_CONTENT)
bytes_data = file_content.encode('utf-8')

# Compress for storage
compressed = CompressionUtils.compress('zstd', [bytes_data])
message.setByteString(dataDictionary.type.File.COMPRESSED, compressed[0])

stream.emit(message, OUTPUT_PORT)

See Also