Releases: dnikolayev/async-unzip
Releases · dnikolayev/async-unzip
Release list
v0.8.1
v0.8.0
- uvloop is no longer enabled as an unconditional import-time side effect. It still auto-installs its event-loop policy by default, but only when the host application hasn't already set a policy and hasn't set the ASYNC_UNZIP_NO_UVLOOP environment variable.
- Debug output now goes through the logging module (async_unzip.unzipper logger at DEBUG level) instead of print(). The __debug parameter is renamed debug; __debug remains a deprecated keyword-only alias that emits a DeprecationWarning.
- Stopped mutating the DECOMPRESS_BACKEND/LAST_USED_BACKEND module globals on every call (concurrent calls raced); the names remain as constants.
- Packaging migrated to PEP 621 (pyproject.toml); setup.py removed. Added a py.typed marker and type hints on the public API, checked by mypy in CI. Added a coverage floor to CI.
- unzip_stream(in_memory=True) removal is now scheduled for 1.0.0.
- CI/CD verification now includes black, isort, flake8, pylint, mypy, and coverage-gated pytest before publishing.
v0.7.0
Highlights
Security/integrity hardening and opt-in resource limits.
- Resource limits (keyword-only):
max_entries,max_entry_size,max_total_uncompressed_size, andmax_archive_size(streams) raising a newLimitExceededexception. - Integrity validation (from 0.6.1): fixes a decompression DoS, verifies CRC-32 / exact size / truncation, and extracts atomically.
- Reject unsupported compression methods (bzip2/lzma) with
NotImplementedErroron both paths. - Deprecate
unzip_stream(in_memory=True). - Top-level exports:
from async_unzip import unzip, unzip_stream, LimitExceeded.
See the README changelog for full 0.6.1 + 0.7.0 details.