Skip to content

Commit fc483e0

Browse files
RogdhamNusnus
authored andcommitted
Use compression.zstd (PEP-784)
1 parent 1bef093 commit fc483e0

File tree

3 files changed

+11
-15
lines changed

3 files changed

+11
-15
lines changed

kombu/compression.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from __future__ import annotations
44

5+
import sys
56
import zlib
67

78
from kombu.utils.encoding import ensure_bytes
@@ -104,18 +105,13 @@ def decompress(body, content_type):
104105
'application/x-lzma', aliases=['lzma', 'xz'])
105106

106107
try:
107-
import zstandard as zstd
108+
if sys.version_info >= (3, 14):
109+
from compression import zstd
110+
else:
111+
from backports import zstd
108112
except ImportError: # pragma: no cover
109-
pass
113+
pass # no zstd support
110114
else:
111-
def zstd_compress(body):
112-
c = zstd.ZstdCompressor()
113-
return c.compress(body)
114-
115-
def zstd_decompress(body):
116-
d = zstd.ZstdDecompressor()
117-
return d.decompress(body)
118-
119-
register(zstd_compress,
120-
zstd_decompress,
115+
register(zstd.compress,
116+
zstd.decompress,
121117
'application/zstd', aliases=['zstd', 'zstandard'])

requirements/extras/zstd.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
zstandard==0.25.0
1+
backports.zstd==1.0.0; python_version<'3.14'

t/unit/test_compression.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_encoders__lzma(self):
2727
assert 'application/x-lzma' in compression.encoders()
2828

2929
def test_encoders__zstd(self):
30-
pytest.importorskip('zstandard')
30+
pytest.importorskip('compression.zstd' if sys.version_info >= (3, 14) else 'backports.zstd')
3131

3232
assert 'application/zstd' in compression.encoders()
3333

@@ -64,7 +64,7 @@ def test_compress__decompress__lzma(self):
6464
assert d == text
6565

6666
def test_compress__decompress__zstd(self):
67-
pytest.importorskip('zstandard')
67+
pytest.importorskip('compression.zstd' if sys.version_info >= (3, 14) else 'backports.zstd')
6868

6969
text = b'The Brown Quick Fox Over The Lazy Dog Jumps'
7070
c, ctype = compression.compress(text, 'zstd')

0 commit comments

Comments
 (0)