Browse Source

Merge 71da99a7da into c58b973c7e

pull/10328/merge
beerpsi 2 days ago
committed by GitHub
parent
commit
b6f14eba2c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 42
      discord/utils.py

42
discord/utils.py

@ -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,11 +82,18 @@ else:
HAS_ORJSON = True
try:
import zstandard # type: ignore
except ImportError:
_HAS_ZSTD = False
else:
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
__all__ = (
'oauth_url',
@ -1429,32 +1431,16 @@ def _human_join(seq: Sequence[str], /, *, delimiter: str = ', ', final: str = 'o
if _HAS_ZSTD:
class _ZstdDecompressionContext:
__slots__ = ('context',)
COMPRESSION_TYPE: str = 'zstd-stream'
def __init__(self) -> None:
decompressor = zstandard.ZstdDecompressor()
self.context = decompressor.decompressobj()
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',)
__slots__ = ('decompressor',)
COMPRESSION_TYPE: str = 'zstd-stream'
def __init__(self) -> None:
self.context = compression.zstd.ZstdDecompressor()
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')
return self.decompressor.decompress(data).decode('utf-8')
_ActiveDecompressionContext: Type[_DecompressionContext] = _ZstdDecompressionContext
else:

Loading…
Cancel
Save