mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-11-02 14:32:53 +00:00
Do not assume Python 3.14 has compression.zstd
This commit is contained in:
@@ -74,11 +74,6 @@ import logging
|
||||
|
||||
import yarl
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
import compression.zstd
|
||||
else:
|
||||
import zlib
|
||||
|
||||
try:
|
||||
import orjson # type: ignore
|
||||
except ModuleNotFoundError:
|
||||
@@ -87,8 +82,15 @@ else:
|
||||
HAS_ORJSON = True
|
||||
|
||||
try:
|
||||
import zstandard # type: ignore
|
||||
from zstandard import ZstdDecompressor # type: ignore
|
||||
|
||||
_HAS_ZSTD = True
|
||||
except ImportError:
|
||||
try:
|
||||
from compression.zstd import ZstdDecompressor # type: ignore
|
||||
except ImportError:
|
||||
import zlib
|
||||
|
||||
_HAS_ZSTD = False
|
||||
else:
|
||||
_HAS_ZSTD = True
|
||||
@@ -1429,32 +1431,16 @@ def _human_join(seq: Sequence[str], /, *, delimiter: str = ', ', final: str = 'o
|
||||
if _HAS_ZSTD:
|
||||
|
||||
class _ZstdDecompressionContext:
|
||||
__slots__ = ('context',)
|
||||
__slots__ = ('decompressor',)
|
||||
|
||||
COMPRESSION_TYPE: str = 'zstd-stream'
|
||||
|
||||
def __init__(self) -> None:
|
||||
decompressor = zstandard.ZstdDecompressor()
|
||||
self.context = decompressor.decompressobj()
|
||||
self.decompressor = ZstdDecompressor()
|
||||
|
||||
def decompress(self, data: bytes, /) -> str | None:
|
||||
# Each WS message is a complete gateway message
|
||||
return self.context.decompress(data).decode('utf-8')
|
||||
|
||||
_ActiveDecompressionContext: Type[_DecompressionContext] = _ZstdDecompressionContext
|
||||
elif sys.version_info >= (3, 14):
|
||||
|
||||
class _ZstdDecompressionContext:
|
||||
__slots__ = ('context',)
|
||||
|
||||
COMPRESSION_TYPE: str = 'zstd-stream'
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.context = compression.zstd.ZstdDecompressor()
|
||||
|
||||
def decompress(self, data: bytes, /) -> str | None:
|
||||
# Each WS message is a complete gateway message
|
||||
return self.context.decompress(data).decode('utf-8')
|
||||
return self.decompressor.decompress(data).decode('utf-8')
|
||||
|
||||
_ActiveDecompressionContext: Type[_DecompressionContext] = _ZstdDecompressionContext
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user