stream-inflate
Uncompress DEFLATE streams in pure Python (albeit compiled with Cython)
Decision gist · record as of 2026-08-14
Yes, if you need streaming DEFLATE decompression with unknown or bounded memory. The library is actively maintained, permissively licensed, has no known vulnerabilities, and solves a real problem that standard library tools don't address cleanly. Medium install friction is acceptable given broad wheel coverage. Not worth installing if you only decompress small, pre-sized payloads or can use existing tools directly.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python >=3.7.7; wheels available for Python 3.10–3.12 on common platforms.
- Medium install friction due to compiled Cython wheels, but broad platform coverage (macOS, Linux x86_64/aarch64, Windows, musl) for Python 3.10–3.12 reduces friction in practice.
- Active maintenance with recent commits.
License · maintenance · safety
permissive license (permissive) — MIT license (permissive) — no restrictions on commercial or proprietary use, and no copyleft obligations.
last release 2026-03-04 (163 days) · last repo commit 2026-03-04 · 11 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 879,240 downloads/mo, #4,824 on PyPI
Alternatives
Verify before relying
from stream_inflate import stream_inflate
def compressed_chunks():
# Yields bytes of a DEFLATE-compressed stream
yield b'compressed data'
for uncompressed_chunk in stream_inflate()[0](compressed_chunks()):
print(uncompressed_chunk)- Performance characteristics (throughput, memory overhead) compared to standard zlib for streaming use.
- Whether DEFLATE64 support covers all ZIP64 edge cases or has known limitations.
- API stability: version 0.0.43 suggests pre-1.0; breaking changes possible in future releases.
What it is and what it does
stream-inflate is a pure-Python (Cython-compiled) library for decompressing DEFLATE and DEFLATE64 streams incrementally. It solves the problem of decompressing data when you don't know the total size upfront or when compressed data is followed by other bytes—common in HTTP responses and ZIP file parsing. Instead of loading the entire stream into memory, you feed it chunks and iterate over uncompressed output, making it suitable for large or streaming sources.
The library exposes two main functions: `stream_inflate()` for standard DEFLATE and `stream_inflate64()` for DEFLATE64. Both return a tuple of callables: one to feed compressed chunks, one to check if decompression is complete, and one to query unconsumed bytes. This design lets you handle edge cases like ZIP files where data follows the compressed stream without buffering everything.
Use it for
- Decompress HTTP responses with Content-Encoding: deflate without loading the entire response body into memory.
- Parse ZIP files where DEFLATE-compressed entries are followed by additional metadata or other entries.
- Stream large compressed files from disk or network in fixed-size chunks to keep memory usage bounded.
- Handle DEFLATE64 streams in ZIP64 archives or other formats that use the extended compression method.
- Detect the end of a DEFLATE stream and identify trailing bytes that are not part of the compressed data.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need streaming DEFLATE decompression with unknown or bounded memory.
The library is actively maintained, permissively licensed, has no known vulnerabilities, and solves a real problem that standard library tools don't address cleanly. Medium install friction is acceptable given broad wheel coverage. Not worth installing if you only decompress small, pre-sized payloads or can use existing tools directly.
Install
stream-inflate on PyPI
Before you install
Medium install friction due to compiled Cython wheels, but broad platform coverage (macOS, Linux x86_64/aarch64, Windows, musl) for Python 3.10–3.12 reduces friction in practice. Active maintenance with recent commits.
Requires Python >=3.7.7; wheels available for Python 3.10–3.12 on common platforms.
License in practice
MIT license (permissive) — no restrictions on commercial or proprietary use, and no copyleft obligations.
Quickstart
from stream_inflate import stream_inflate
def compressed_chunks():
# Yields bytes of a DEFLATE-compressed stream
yield b'compressed data'
for uncompressed_chunk in stream_inflate()[0](compressed_chunks()):
print(uncompressed_chunk)
Verify before relying
- Performance characteristics (throughput, memory overhead) compared to standard zlib for streaming use.
- Whether DEFLATE64 support covers all ZIP64 edge cases or has known limitations.
- API stability: version 0.0.43 suggests pre-1.0; breaking changes possible in future releases.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.7.7 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 163 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 879,240 / month, #4,824 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Topic :: System :: Archiving :: Compression |
Evidence: stream_inflate-0.0.43-cp310-cp310-macosx_10_9_universal2.whl; stream_inflate-0.0.43-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; stream_inflate-0.0.43-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl; stream_inflate-0.0.43-cp310-cp310-musllinux_1_1_aarch64.whl; stream_inflate-0.0.43-cp310-cp310-musllinux_1_1_x86_64.whl; stream_inflate-0.0.43-cp310-cp310-musllinux_1_2_aarch64.whl; stream_inflate-0.0.43-cp310-cp310-musllinux_1_2_armv7l.whl; stream_inflate-0.0.43-cp310-cp310-musllinux_1_2_x86_64.whl; stream_inflate-0.0.43-cp310-cp310-win_amd64.whl; stream_inflate-0.0.43-cp311-cp311-macosx_10_9_universal2.whl; stream_inflate-0.0.43-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; stream_inflate-0.0.43-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl; stream_inflate-0.0.43-cp311-cp311-musllinux_1_1_aarch64.whl; stream_inflate-0.0.43-cp311-cp311-musllinux_1_1_x86_64.whl; stream_inflate-0.0.43-cp311-cp311-musllinux_1_2_aarch64.whl; stream_inflate-0.0.43-cp311-cp311-musllinux_1_2_armv7l.whl; stream_inflate-0.0.43-cp311-cp311-musllinux_1_2_x86_64.whl; stream_inflate-0.0.43-cp311-cp311-win_amd64.whl; stream_inflate-0.0.43-cp312-cp312-macosx_10_13_universal2.whl; stream_inflate-0.0.43-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “deflate stream decompression”
- stream-inflateDecompresses DEFLATE and DEFLATE64 streams in pure Python, designed…
- zlib-stateProvides low-level access to zlib decompression with the ability to…
- inflate64Provides Deflater and Inflater classes to compress and decompress…
Give your agent the search over MCP, or paste the wish link into any chat.
More Compression packages
Provides Python bindings to the Brotli compression library, enabling lossless compression and decompression using a modern LZ77 variant with Huffman coding and context modeling.
Install it if you need Brotli compression in Python; the API is straightforward and the library is battle-tested.
Provides Zstandard compression support for Python versions before 3.14, backporting the standard library's zstd module along with zstd-enabled tarfile and zipfile modules.
Zopfli is a Python binding for Google's Zopfli compression library, providing higher-density compression for zlib and gzip formats than standard algorithms, with tunable iteration and block-splitting parameters.
Python binding for Google's Snappy compression library, providing fast compression and decompression of data via the cramjam backend.
However, dormant maintenance (715 days since last release) means security or compatibility issues may not be addressed quickly.
pyzipper replaces Python's standard zipfile module to read and write AES-encrypted zip archives, using the WinZip AES encryption specification.
Provides Python bindings to the Zstandard (zstd) compression library with an API similar to bz2, lzma, and zlib modules.
See also inflate64 · stream-unzip · listcrunch · deflate · zipfile-deflate64 · ncompress · Flask-Compress · zipstream-new · unlzw3 · pyppmd