Skip to content

Commit 9f402d7

Browse files
committed
Add constants to ZstdCompressor in C
1 parent d5ff6d3 commit 9f402d7

File tree

3 files changed

+22
-12
lines changed

3 files changed

+22
-12
lines changed

Lib/compression/zstd/__init__.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@
4040
COMPRESSION_LEVEL_DEFAULT = _zstd.ZSTD_CLEVEL_DEFAULT
4141
"""The default compression level for Zstandard, currently '3'."""
4242

43-
# Set ZSTD_EndDirective constants on ZstdCompressor
44-
ZstdCompressor.CONTINUE = _zstd.ZSTD_e_continue
45-
ZstdCompressor.FLUSH_BLOCK = _zstd.ZSTD_e_flush
46-
ZstdCompressor.FLUSH_FRAME = _zstd.ZSTD_e_end
47-
4843

4944
class FrameInfo:
5045
"""Information about a Zstandard frame."""

Lib/compression/zstd/_zstdfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import io
22
from os import PathLike
33
from _zstd import (ZstdCompressor, ZstdDecompressor, ZstdError,
4-
ZSTD_DStreamOutSize, ZSTD_e_end, ZSTD_e_flush)
4+
ZSTD_DStreamOutSize)
55
from compression._common import _streams
66

77
__all__ = ("ZstdFile", "open")
@@ -28,8 +28,8 @@ class ZstdFile(_streams.BaseStream):
2828
bytes, and may only be written to objects that support the Buffer Protocol.
2929
"""
3030

31-
FLUSH_BLOCK = ZSTD_e_flush # ZstdCompressor.FLUSH_BLOCK
32-
FLUSH_FRAME = ZSTD_e_end # ZstdCompressor.FLUSH_FRAME
31+
FLUSH_BLOCK = ZstdCompressor.FLUSH_BLOCK
32+
FLUSH_FRAME = ZstdCompressor.FLUSH_FRAME
3333

3434
def __init__(self, file, /, mode="r", *,
3535
level=None, options=None, zstd_dict=None):

Modules/_zstd/_zstdmodule.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,17 @@ do { \
573573
return -1; \
574574
}
575575

576+
#define ADD_INT_CONST_TO_TYPE(TYPE, NAME, VALUE) \
577+
do { \
578+
PyObject *v = PyLong_FromLong((VALUE)); \
579+
if (v == NULL || PyObject_SetAttrString((PyObject *)(TYPE), \
580+
(NAME), v) < 0) { \
581+
Py_XDECREF(v); \
582+
return -1; \
583+
} \
584+
Py_DECREF(v); \
585+
} while (0)
586+
576587
_zstd_state* const mod_state = get_zstd_state(m);
577588

578589
/* Reusable objects & variables */
@@ -663,13 +674,17 @@ do { \
663674
ADD_INT_MACRO(ZSTD_btultra);
664675
ADD_INT_MACRO(ZSTD_btultra2);
665676

666-
/* Add ZSTD_EndDirective enum members */
667-
ADD_INT_MACRO(ZSTD_e_continue);
668-
ADD_INT_MACRO(ZSTD_e_flush);
669-
ADD_INT_MACRO(ZSTD_e_end);
677+
/* Add ZSTD_EndDirective enum members to ZstdCompressor */
678+
ADD_INT_CONST_TO_TYPE(mod_state->ZstdCompressor_type,
679+
"CONTINUE", ZSTD_e_continue);
680+
ADD_INT_CONST_TO_TYPE(mod_state->ZstdCompressor_type,
681+
"FLUSH_BLOCK", ZSTD_e_flush);
682+
ADD_INT_CONST_TO_TYPE(mod_state->ZstdCompressor_type,
683+
"FLUSH_FRAME", ZSTD_e_end);
670684

671685
#undef ADD_TYPE
672686
#undef ADD_INT_MACRO
687+
#undef ADD_ZSTD_COMPRESSOR_INT_CONST
673688

674689
return 0;
675690
}

0 commit comments

Comments
 (0)