stream-unzip
Python function to stream unzip all the files in a ZIP archive, without loading the entire ZIP file into memory or any of its uncompressed files
Decision gist · record as of 2026-08-14
Yes. stream-unzip fills a genuine gap in Python's standard library by supporting encryption formats and compression methods the zipfile module cannot handle, while offering memory-efficient streaming for large archives. Active maintenance, no known vulnerabilities, permissive MIT license, and top-5000 PyPI popularity indicate a stable, trusted tool. Medium install friction is acceptable given the prebuilt wheels and lightweight runtime dependencies.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python >=3.7.7; pycryptodome and stream-inflate must be installed as runtime dependencies.
- Medium install friction with prebuilt wheels for Python 3.10–3.12 across common platforms (macOS, Linux, Windows, musl).
- Depends on pycryptodome and stream-inflate, both widely available.
License · maintenance · safety
permissive license (permissive) — MIT license (permissive) allows use in commercial and private projects with minimal restrictions; attribution required.
last release 2026-03-03 (164 days) · last repo commit 2026-08-10 · 26 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 876,464 downloads/mo, #4,831 on PyPI
Alternatives
Verify before relying
pip install stream-unzip
from stream_unzip import stream_unzip
for file_name, file_size, unzipped_chunks in stream_unzip(zip_file_bytes):
for chunk in unzipped_chunks:
# Process chunk without loading entire file- Performance benchmarks comparing ZipCrypto decryption speed claim ('approximately 10 times faster') against Python's zipfile module.
- Specific async interface details and which asyncio/trio patterns are supported beyond the mention of thread-based trio support.
- Memory usage characteristics for very large ZIP files to quantify the streaming advantage in practice.
What it is and what it does
stream-unzip is a Python library that extracts ZIP archives by streaming their contents without holding the entire archive or any uncompressed file in memory at once. It handles modern and legacy ZIP formats including Deflate, Deflate64, Zip64 (files far beyond the approximate 4GiB limit), WinZip AES encryption, ZipCrypto password protection, and BZip2 compression—formats that Python's standard zipfile module cannot always open. The library depends on pycryptodome for encryption and stream-inflate for decompression.
The package is designed for scenarios where ZIP files are too large to fit in memory or where you need to process files as they are extracted. It offers both synchronous and asynchronous interfaces (supporting asyncio and trio), making it suitable for streaming workflows in web services, data pipelines, and batch processing. Decryption of legacy ZipCrypto files is reported to be significantly faster than the standard library alternative.
Use it for
- Extract large ZIP archives in web services without buffering the entire file to disk or memory.
- Process password-protected or AES-encrypted ZIPs in data pipelines where the standard library cannot open them.
- Stream unzip operations in async applications using asyncio or trio without blocking.
- Handle Deflate64-compressed ZIPs created by Windows Explorer when standard zipfile fails.
- Decrypt legacy ZipCrypto-protected archives with better performance than Python's zipfile module.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
stream-unzip fills a genuine gap in Python's standard library by supporting encryption formats and compression methods the zipfile module cannot handle, while offering memory-efficient streaming for large archives. Active maintenance, no known vulnerabilities, permissive MIT license, and top-5000 PyPI popularity indicate a stable, trusted tool. Medium install friction is acceptable given the prebuilt wheels and lightweight runtime dependencies.
Install
stream-unzip on PyPI
Before you install
Medium install friction with prebuilt wheels for Python 3.10–3.12 across common platforms (macOS, Linux, Windows, musl). Depends on pycryptodome and stream-inflate, both widely available. Active maintenance with last commit 2026-08-10.
Requires Python >=3.7.7; pycryptodome and stream-inflate must be installed as runtime dependencies.
License in practice
MIT license (permissive) allows use in commercial and private projects with minimal restrictions; attribution required.
Quickstart
pip install stream-unzip
from stream_unzip import stream_unzip
for file_name, file_size, unzipped_chunks in stream_unzip(zip_file_bytes):
for chunk in unzipped_chunks:
# Process chunk without loading entire file
Verify before relying
- Performance benchmarks comparing ZipCrypto decryption speed claim ('approximately 10 times faster') against Python's zipfile module.
- Specific async interface details and which asyncio/trio patterns are supported beyond the mention of thread-based trio support.
- Memory usage characteristics for very large ZIP files to quantify the streaming advantage in practice.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.7.7 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 2 packagespycryptodomestream-inflate |
| Maintenance | Actively maintained 164 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 876,464 / month, #4,831 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 :: CompressionTyping :: Typed |
Evidence: stream_unzip-0.0.101-cp310-cp310-macosx_11_0_arm64.whl; stream_unzip-0.0.101-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; stream_unzip-0.0.101-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; stream_unzip-0.0.101-cp310-cp310-musllinux_1_1_aarch64.whl; stream_unzip-0.0.101-cp310-cp310-musllinux_1_1_x86_64.whl; stream_unzip-0.0.101-cp310-cp310-musllinux_1_2_aarch64.whl; stream_unzip-0.0.101-cp310-cp310-musllinux_1_2_armv7l.whl; stream_unzip-0.0.101-cp310-cp310-musllinux_1_2_x86_64.whl; stream_unzip-0.0.101-cp310-cp310-win_amd64.whl; stream_unzip-0.0.101-cp311-cp311-macosx_11_0_arm64.whl; stream_unzip-0.0.101-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; stream_unzip-0.0.101-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; stream_unzip-0.0.101-cp311-cp311-musllinux_1_1_aarch64.whl; stream_unzip-0.0.101-cp311-cp311-musllinux_1_1_x86_64.whl; stream_unzip-0.0.101-cp311-cp311-musllinux_1_2_aarch64.whl; stream_unzip-0.0.101-cp311-cp311-musllinux_1_2_armv7l.whl; stream_unzip-0.0.101-cp311-cp311-musllinux_1_2_x86_64.whl; stream_unzip-0.0.101-cp311-cp311-win_amd64.whl; stream_unzip-0.0.101-cp312-cp312-macosx_11_0_arm64.whl; stream_unzip-0.0.101-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 › “stream unzip memory efficient”
- stream-unzipStreams unzip operations on ZIP archives without loading entire files…
- et-xmlfileet_xmlfile writes large XML files with minimal memory overhead by…
- mwxmlEfficiently parse and stream-process MediaWiki XML database dumps…
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 stream-inflate · stream-zip · zipfile-deflate64 · remotezip2 · zipstream-ng · remotezip · zipstream-new · zipstream · python-multipart