Use backport.zstd instead of zstandard #1962
Merged
+12
−23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For Python versions before 3.14, the Zstandard support is currently provided by the
zstandardlibrary (#1874). The API ofzstandardis different from the one in the standard library (compression.zstd), which results in needing to implement an equivalent toZstdFile.This PR removes the
zstdandarddependency in favor of the backport ofcompression.zstd.I am conditioning the import based on the Python version instead of catching
ImportErrorso that it will be picked up by linting tools (e.g.ruff) when you stop supporting 3.13. I also find it more readable.Side note: if you are interested, the backport also provides support for Zstandard in
tarfileandzipfilemodules (just like Python 3.14+ does). This could help with issues such as #1589.Full disclosure: I'm the author and maintainer of
backports.zstd, and the maintainer ofpyzstd(which code was used as a base for the integration into Python). I also helped with PEP-784 and its integration into CPython.