8000 gh-132983: Clean-ups for `_zstd` by AA-Turner · Pull Request #133670 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

gh-132983: Clean-ups for _zstd #133670

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
May 9, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
zstd: Replace add_parameters and ADD_INT_PREFIX_MACRO with PyModule_A…
…ddIntMacro
  • Loading branch information
AA-Turner committed May 8, 2025
commit 1a54bf3947c3f89673d954970854298593678940
64 changes: 32 additions & 32 deletions Lib/compression/zstd/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,28 +168,28 @@ def decompress(data, zstd_dict=None, options=None):
class CompressionParameter(enum 8000 .IntEnum):
"""Compression parameters."""

compression_level = _zstd._ZSTD_c_compressionLevel
window_log = _zstd._ZSTD_c_windowLog
hash_log = _zstd._ZSTD_c_hashLog
chain_log = _zstd._ZSTD_c_chainLog
search_log = _zstd._ZSTD_c_searchLog
min_match = _zstd._ZSTD_c_minMatch
target_length = _zstd._ZSTD_c_targetLength
strategy = _zstd._ZSTD_c_strategy

enable_long_distance_matching = _zstd._ZSTD_c_enableLongDistanceMatching
ldm_hash_log = _zstd._ZSTD_c_ldmHashLog
ldm_min_match = _zstd._ZSTD_c_ldmMinMatch
ldm_bucket_size_log = _zstd._ZSTD_c_ldmBucketSizeLog
ldm_hash_rate_log = _zstd._ZSTD_c_ldmHashRateLog

content_size_flag = _zstd._ZSTD_c_contentSizeFlag
checksum_flag = _zstd._ZSTD_c_checksumFlag
dict_id_flag = _zstd._ZSTD_c_dictIDFlag

nb_workers = _zstd._ZSTD_c_nbWorkers
job_size = _zstd._ZSTD_c_jobSize
overlap_log = _zstd._ZSTD_c_overlapLog
compression_level = _zstd.ZSTD_c_compressionLevel
window_log = _zstd.ZSTD_c_windowLog
hash_log = _zstd.ZSTD_c_hashLog
chain_log = _zstd.ZSTD_c_chainLog
search_log = _zstd.ZSTD_c_searchLog
min_match = _zstd.ZSTD_c_minMatch
target_length = _zstd.ZSTD_c_targetLength
strategy = _zstd.ZSTD_c_strategy

enable_long_distance_matching = _zstd.ZSTD_c_enableLongDistanceMatching
ldm_hash_log = _zstd.ZSTD_c_ldmHashLog
ldm_min_match = _zstd.ZSTD_c_ldmMinMatch
ldm_bucket_size_log = _zstd.ZSTD_c_ldmBucketSizeLog
ldm_hash_rate_log = _zstd.ZSTD_c_ldmHashRateLog

content_size_flag = _zstd.ZSTD_c_contentSizeFlag
checksum_flag = _zstd.ZSTD_c_checksumFlag
dict_id_flag = _zstd.ZSTD_c_dictIDFlag

nb_workers = _zstd.ZSTD_c_nbWorkers
job_size = _zstd.ZSTD_c_jobSize
overlap_log = _zstd.ZSTD_c_overlapLog

def bounds(self):
"""Return the (lower, upper) int bounds of a compression parameter.
Expand All @@ -202,7 +202,7 @@ def bounds(self):
class DecompressionParameter(enum.IntEnum):
"""Decompression parameters."""

window_log_max = _zstd._ZSTD_d_windowLogMax
window_log_max = _zstd.ZSTD_d_windowLogMax

def bounds(self):
"""Return the (lower, upper) int bounds of a decompression parameter.
Expand All @@ -220,15 +220,15 @@ class Strategy(enum.IntEnum):
the numeric value might change.
"""

fast = _zstd._ZSTD_fast
dfast = _zstd._ZSTD_dfast
greedy = _zstd._ZSTD_greedy
lazy = _zstd._ZSTD_lazy
lazy2 = _zstd._ZSTD_lazy2
btlazy2 = _zstd._ZSTD_btlazy2
btopt = _zstd._ZSTD_btopt
btultra = _zstd._ZSTD_btultra
btultra2 = _zstd._ZSTD_btultra2
fast = _zstd.ZSTD_fast
dfast = _zstd.ZSTD_dfast
greedy = _zstd.ZSTD_greedy
lazy = _zstd.ZSTD_lazy
lazy2 = _zstd.ZSTD_lazy2
btlazy2 = _zstd.ZSTD_btlazy2
btopt = _zstd.ZSTD_btopt
btultra = _zstd.ZSTD_btultra
btultra2 = _zstd.ZSTD_btultra2


# Check validity of the CompressionParameter & DecompressionParameter types
Expand Down
94 changes: 37 additions & 57 deletions Modules/_zstd/_zstdmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -559,59 +559,6 @@ static PyMethodDef _zstd_methods[] = {
};


#define ADD_INT_PREFIX_MACRO(module, macro) \
do { \
if (PyModule_AddIntConstant(module, "_" #macro, macro) < 0) { \
return -1; \
} \
} while(0)

static int
add_parameters(PyObject *module)
{
/* If add new parameters, please also add to cp_list/dp_list above. */

/* Compression parameters */
ADD_INT_PREFIX_MACRO(module, ZSTD_c_compressionLevel);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_windowLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_hashLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_chainLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_searchLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_minMatch);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_targetLength);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_strategy);

ADD_INT_PREFIX_MACRO(module, ZSTD_c_enableLongDistanceMatching);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_ldmHashLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_ldmMinMatch);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_ldmBucketSizeLog);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_ldmHashRateLog);

ADD_INT_PREFIX_MACRO(module, ZSTD_c_contentSizeFlag);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_checksumFlag);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_dictIDFlag);

ADD_INT_PREFIX_MACRO(module, ZSTD_c_nbWorkers);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_jobSize);
ADD_INT_PREFIX_MACRO(module, ZSTD_c_overlapLog);

/* Decompression parameters */
ADD_INT_PREFIX_MACRO(module, ZSTD_d_windowLogMax);

/* ZSTD_strategy enum */
ADD_INT_PREFIX_MACRO(module, ZSTD_fast);
ADD_INT_PREFIX_MACRO(module, ZSTD_dfast);
ADD_INT_PREFIX_MACRO(module, ZSTD_greedy);
ADD_INT_PREFIX_MACRO(module, ZSTD_lazy);
ADD_INT_PREFIX_MACRO(module, Z 8000 STD_lazy2);
ADD_INT_PREFIX_MACRO(module, ZSTD_btlazy2);
ADD_INT_PREFIX_MACRO(module, ZSTD_btopt);
ADD_INT_PREFIX_MACRO(module, ZSTD_btultra);
ADD_INT_PREFIX_MACRO(module, ZSTD_btultra2);

return 0;
}

static inline int
add_vars_to_module(PyObject *module)
{
Expand Down Expand Up @@ -648,10 +595,43 @@ add_vars_to_module(PyObject *module)
return -1;
}

/* Add zstd parameters */
if (add_parameters(module) < 0) {
return -1;
}
/* Add zstd compression parameters. All should also be in cp_list. */
PyModule_AddIntMacro(module, ZSTD_c_compressionLevel);
PyModule_AddIntMacro(module, ZSTD_c_windowLog);
PyModule_AddIntMacro(module, ZSTD_c_hashLog);
PyModule_AddIntMacro(module, ZSTD_c_chainLog);
PyModule_AddIntMacro(module, ZSTD_c_searchLog);
PyModule_AddIntMacro(module, ZSTD_c_minMatch);
PyModule_AddIntMacro(module, ZSTD_c_targetLength);
PyModule_AddIntMacro(module, ZSTD_c_strategy);

PyModule_AddIntMacro(module, ZSTD_c_enableLongDistanceMatching);
PyModule_AddIntMacro(module, ZSTD_c_ldmHashLog);
PyModule_AddIntMacro(module, ZSTD_c_ldmMinMatch);
PyModule_AddIntMacro(module, ZSTD_c_ldmBucketSizeLog);
PyModule_AddIntMacro(module, ZSTD_c_ldmHashRateLog);

PyModule_AddIntMacro(module, ZSTD_c_contentSizeFlag);
PyModule_AddIntMacro(module, ZSTD_c_checksumFlag);
PyModule_AddIntMacro(module, ZSTD_c_dictIDFlag);

PyModule_AddIntMacro(module, ZSTD_c_nbWorkers);
PyModule_AddIntMacro(module, ZSTD_c_jobSize);
PyModule_AddIntMacro(module, ZSTD_c_overlapLog);

/* Add zstd decompression parameters. All should also be in dp_list. */
PyModule_AddIntMacro(module, ZSTD_d_windowLogMax);

/* ZSTD_strategy enum */
PyModule_AddIntMacro(module, ZSTD_fast);
PyModule_AddIntMacro(module, ZSTD_dfast);
PyModule_AddIntMacro(module, ZSTD_greedy);
PyModule_AddIntMacro(module, ZSTD_lazy);
PyModule_AddIntMacro(module, ZSTD_lazy2);
PyModule_AddIntMacro(module, ZSTD_btlazy2);
PyModule_AddIntMacro(module, ZSTD_btopt);
PyModule_AddIntMacro(module, ZSTD_btultra);
PyModule_AddIntMacro(module, ZSTD_btultra2);

return 0;
}
Expand Down
0