# Feature or enhancement This is a tracking issue for implementing [PEP 784](https://peps.python.org/pep-0784/). See the PEP text for more details. Since the diff is significant (~10k lines) I wanted to split up the PRs a bit. ### Implementation Plan: - [x] Add `compression` module just re-exporting existing compression modules. Move the `_compression` module. - [x] Add `_zstd` native module with Unix build config - [x] Add Windows build config for `_zstd` ~~(blocked on adding `libzstd` to cpython-source-deps) and SBOM config.~~ - [x] Add `zstd` Python module with tests - [x] add NEWS/What's New section - [x] Add documentation for `zstd` - [x] Decide on whether or not to check parameter types for options - [x] Verify style conformance of C and Python code - [x] Python - [x] C - [x] Refactor `_train_dict` and `_finalize_dict` to share common code - [x] Fix https://github.com/python/cpython/issues/133885 - [x] Improve error message when `options` value can't be converted to int <!-- gh-linked-prs --> ### Linked PRs * gh-133018 * gh-133027 * gh-133063 * gh-133076 * gh-133086 * gh-133185 * gh-133282 * gh-133365 * gh-133366 * gh-133479 * gh-133495 * gh-133502 * gh-133535 * gh-133547 * gh-133550 * gh-133565 * gh-133629 * gh-133670 * gh-133674 * gh-133694 * gh-133695 * gh-133723 * gh-133736 * gh-133756 * gh-133757 * gh-133762 * gh-133775 * gh-133784 * gh-133785 * gh-133786 * gh-133788 * gh-133791 * gh-133792 * gh-133793 * gh-133799 * gh-133854 * gh-133856 * gh-133857 * gh-133859 * gh-133860 * gh-133911 * gh-133915 * gh-133921 * gh-133924 * gh-133947 * gh-133950 * gh-133962 * gh-133974 * gh-134001 * gh-134230 * gh-134305 * gh-134425 * gh-134432 * gh-134442 * gh-134459 * gh-134463 * gh-134601 * gh-134602 * gh-134605 * gh-134609 * gh-134723 * gh-134838 * gh-134930 * gh-134998 * gh-136617 * gh-137052 * gh-137320 * gh-137321 * gh-137343 * gh-137360 <!-- /gh-linked-prs -->
Feature or enhancement
This is a tracking issue for implementing PEP 784. See the PEP text for more details.
Since the diff is significant (~10k lines) I wanted to split up the PRs a bit.
Implementation Plan:
compressionmodule just re-exporting existing compression modules. Move the_compressionmodule._zstdnative module with Unix build config_zstd(blocked on addinglibzstdto cpython-source-deps) and SBOM config.zstdPython module with testszstd_train_dictand_finalize_dictto share common codetest_zstdfailed on ubuntu with free-threading #133885optionsvalue can't be converted to intLinked PRs
compressionpackage and move_compressionmodule #133018_zstdbindings module #133027compression._commona full-fledged package #133076compression.zstdand Python tests #133365_zstdon Windows #133366compression.zstd#133547_zstd#133670_zstd(GH-133674) #133695_zstd(GH-133670) #133756_zstd_exec()#133775_zstd_exec()(GH-133775) #133786_zstdmodule.h#133793_zstdmodule.h(GH-133793) #133854__new__methods to Argument Clinic (GH-133860) #133915_zstd_set_c_parameters#133921mt_continue_should_break()(GH-133947) #133950compression.zstd(GH-133547) #134001test.pythoninfo#134230ZstdDict()(GH-133924) #134723_zstd_set_c_parameters(GH-133921) #134838ZstdDict(GH-137321) #137343Py_UNREACHABLEin_zstd_load_impl()(GH-137320) #137360