Metadata-Version: 2.4
Name: stream-unzip
Version: 0.0.101
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: System :: Archiving :: Compression
Classifier: Typing :: Typed
Requires-Dist: pycryptodome>=3.10.1
Requires-Dist: stream-inflate>=0.0.12
Requires-Dist: mypy==1.4.1 ; python_full_version < '3.14' and extra == 'ci'
Requires-Dist: mypy==1.19.1 ; python_full_version >= '3.14' and extra == 'ci'
Requires-Dist: pycryptodome==3.10.1 ; extra == 'ci'
Requires-Dist: stream-inflate==0.0.12 ; extra == 'ci'
Requires-Dist: coverage>=6.2 ; extra == 'dev'
Requires-Dist: mypy>=1.4.1 ; extra == 'dev'
Requires-Dist: pytest>=6.2.5 ; extra == 'dev'
Requires-Dist: pytest-cov>=3.0.0 ; extra == 'dev'
Requires-Dist: trio>=0.19.0 ; extra == 'dev'
Provides-Extra: ci
Provides-Extra: dev
License-File: LICENSE
Summary: 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
Author-email: Department for International Trade <sre@digital.trade.gov.uk>
Requires-Python: >=3.7.7
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://stream-unzip.docs.trade.gov.uk/
Project-URL: Source, https://github.com/uktrade/stream-unzip

<!-- --8<-- [start:intro] -->
# stream-unzip

[![conda-forge package](https://img.shields.io/conda/v/conda-forge/stream-unzip?label=conda-forge&color=%234c1)](https://anaconda.org/conda-forge/stream-unzip) [![PyPI package](https://img.shields.io/pypi/v/stream-unzip?label=PyPI%20package&color=%234c1)](https://pypi.org/project/stream-unzip/) [![Test suite](https://img.shields.io/github/actions/workflow/status/uktrade/stream-unzip/test.yml?label=Test%20suite)](https://github.com/uktrade/stream-unzip/actions/workflows/test.yml) [![Code coverage](https://img.shields.io/codecov/c/github/uktrade/stream-unzip?label=Code%20coverage)](https://app.codecov.io/gh/uktrade/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.
<!-- --8<-- [end:intro] -->

To create ZIP files on the fly try [stream-zip](https://github.com/uktrade/stream-zip).

<!-- --8<-- [start:features] -->
## Features

In addition to being memory efficient, stream-unzip supports:

- Deflate-compressed ZIPs. This is the historical standard for ZIP files.

- Deflate64-compressed ZIPs. These are created by certain versions of Windows Explorer in some circumstances. Python's zipfile module cannot open Deflate64-compressed ZIPs.

- Zip64 ZIP files. These are ZIP files that allow sizes far beyond the approximate 4GiB limit of the original ZIP format.

- WinZip-style AES-encrypted / password-protected ZIPs. Python's zipfile module cannot open AES-encrypted ZIPs.

- Legacy-encrypted / password-protected ZIP files. This is also known as ZipCrypto/Zip 2.0. Decrypting ZipCrypto with stream-unzip is approximately 10 times faster than Python's zipfile module.

- ZIP files created by Java's ZipOutputStream that are larger than 4GiB. At the time of writing libarchive-based stream readers cannot read these without error.

- BZip2-compressed ZIPs.

- An async interface that supports both asyncio and trio (which uses threads under the hood).
<!-- --8<-- [end:features] -->

---

Visit the [stream-unzip documentation](https://stream-unzip.docs.trade.gov.uk/) for usage instructions.

