Python bindings to Zstandard (zstd) compression library, the API style is similar to Python's bz2/lzma/zlib modules.
Pyzstd module provides classes and functions for compressing and decompressing data, using Facebook's Zstandard <http://www.zstd.net>
_ (or zstd as short name) algorithm.
The API style is similar to Python's bz2/lzma/zlib modules.
this note <https://pyzstd.readthedocs.io/en/latest/#build-pyzstd>
_.ZstdFile
class has C language level performanceZstandard Seekable Format <https://github.com/facebook/zstd/blob/dev/contrib/seekable_format/zstd_seekable_compression_format.md>
__python -m pyzstd --help
Documentation: https://pyzstd.readthedocs.io/en/latest
GitHub: https://github.com/animalize/pyzstd
0.15.9 (Jun 24, 2023)
ZstdFile class related changes:
#. Add SeekableZstdFile <https://pyzstd.readthedocs.io/en/latest/#SeekableZstdFile>
_ class, it's a subclass of ZstdFile
, supports Zstandard Seekable Format <https://github.com/facebook/zstd/blob/dev/contrib/seekable_format/zstd_seekable_compression_format.md>
__.
#. Add mode argument to ZstdFile.flush()
method, now it can flush a zstd frame.
#. Add read_size and write_size arguments to ZstdFile.__init__()
method, can work with Network File Systems better.
#. Optimize ZstdFile
performance to C language level.
0.15.7 (Apr 21, 2023)
ZstdDict class changes:
#. Fix these advanced compression parameters may be ignored when loading a dictionary: windowLog
, hashLog
, chainLog
, searchLog
, minMatch
, targetLength
, strategy
, enableLongDistanceMatching
, ldmHashLog
, ldmMinMatch
, ldmBucketSizeLog
, ldmHashRateLog
, and some non-public parameters.
#. When compressing, load undigested dictionary instead of digested dictionary by default. Loading again an undigested is slower, see differences <https://pyzstd.readthedocs.io/en/latest/#ZstdDict.as_digested_dict>
_.
#. Add .as_prefix <https://pyzstd.readthedocs.io/en/latest/#ZstdDict.as_prefix>
_ attribute. Can use zstd as a patching engine <https://pyzstd.readthedocs.io/en/latest/#patching-engine>
_.
0.15.6 (Apr 5, 2023)
Upgrade zstd source code from v1.5.4 to v1.5.5 <https://github.com/facebook/zstd/releases/tag/v1.5.5>
_.
0.15.4 (Feb 24, 2023)
#. Upgrade zstd source code from v1.5.2 to v1.5.4 <https://github.com/facebook/zstd/releases/tag/v1.5.4>
_. v1.5.3 is a non-public release.
#. Support pyproject.toml
build mechanism (PEP-517). Note that specifying build options in old way may be invalid, see build commands <https://pyzstd.readthedocs.io/en/latest/#build-pyzstd>
_.
#. Support "multi-phase initialization" (PEP-489) on CPython 3.11+, can work with CPython sub-interpreters in the future. Currently this build option is disabled by default.
#. Add a command line interface (CLI).
0.15.3 (Aug 3, 2022)
Fix ZstdError
object can't be pickled.
0.15.2 (Jan 22, 2022)
Upgrade zstd source code from v1.5.1 to v1.5.2 <https://github.com/facebook/zstd/releases/tag/v1.5.2>
_.
0.15.1 (Dec 25, 2021)
#. Upgrade zstd source code from v1.5.0 to v1.5.1 <https://github.com/facebook/zstd/releases/tag/v1.5.1>
_.
#. Fix ZstdFile.write()
/ train_dict()
/ finalize_dict()
may use wrong length for some buffer protocol objects, see this issue <https://github.com/animalize/pyzstd/issues/4>
_.
#. Two behavior changes:
* Setting ``CParameter.nbWorkers`` to ``1`` now means "1-thread multi-threaded mode", rather than "single-threaded mode".
* If the underlying zstd library doesn't support multi-threaded compression, no longer automatically fallback to "single-threaded mode", now raise a ``ZstdError`` exception.
#. Add a module level variable zstd_support_multithread <https://pyzstd.readthedocs.io/en/latest/#zstd_support_multithread>
_.
#. Add a setup.py option --avx2
, see build options <https://pyzstd.readthedocs.io/en/latest/#build-pyzstd>
_.
0.15.0 (May 18, 2021)
#. Upgrade zstd source code from v1.4.9 to v1.5.0 <https://github.com/facebook/zstd/releases/tag/v1.5.0>
_.
#. Some improvements, no API changes.
0.14.4 (Mar 24, 2021)
#. Add a CFFI implementation that can work with PyPy.
#. Allow dynamically link to zstd library.
0.14.3 (Mar 4, 2021)
Upgrade zstd source code from v1.4.8 to v1.4.9 <https://github.com/facebook/zstd/releases/tag/v1.4.9>
_.
0.14.2 (Feb 24, 2021)
#. Add two convenient functions: compress_stream() <https://pyzstd.readthedocs.io/en/latest/#compress_stream>
, decompress_stream() <https://pyzstd.readthedocs.io/en/latest/#decompress_stream>
.
#. Some improvements.
0.14.1 (Dec 19, 2020)
#. Upgrade zstd source code from v1.4.5 to v1.4.8 <https://github.com/facebook/zstd/releases/tag/v1.4.8>
_.
* v1.4.6 is a non-public release for Linux kernel.
* v1.4.8 is a hotfix for `v1.4.7 <https://github.com/facebook/zstd/releases/tag/v1.4.7>`_.
#. Some improvements, no API changes.
0.13.0 (Nov 7, 2020)
#. ZstdDecompressor
class: now it has the same API and behavior as BZ2Decompressor / LZMADecompressor classes in Python standard library, it stops after a frame is decompressed.
#. Add an EndlessZstdDecompressor
class, it accepts multiple concatenated frames. It is renamed from previous ZstdDecompressor
class, but .at_frame_edge
is True
when both the input and output streams are at a frame edge.
#. Rename zstd_open()
function to open()
, consistent with Python standard library.
#. decompress()
function:
* ~9% faster when: there is one frame, and the decompressed size was recorded in frame header.
* raises ZstdError when input **or** output data is not at a frame edge. Previously, it only raise for output data is not at a frame edge.
0.12.5 (Oct 12, 2020)
No longer use Argument Clinic <https://docs.python.org/3/howto/clinic.html>
_, now supports Python 3.5+, previously 3.7+.
0.12.4 (Oct 7, 2020)
It seems the API is stable.
0.2.4 (Sep 2, 2020)
The first version upload to PyPI.
Includes zstd v1.4.5 <https://github.com/facebook/zstd/releases/tag/v1.4.5>
_ source code.