mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-10-16 11:58:10 +00:00
Use compression.zstd for gateway compression on Python 3.14
This commit is contained in:
@@ -71,10 +71,14 @@ import types
|
||||
import typing
|
||||
import warnings
|
||||
import logging
|
||||
import zlib
|
||||
|
||||
import yarl
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
import compression.zstd
|
||||
else:
|
||||
import zlib
|
||||
|
||||
try:
|
||||
import orjson # type: ignore
|
||||
except ModuleNotFoundError:
|
||||
@@ -1437,6 +1441,21 @@ if _HAS_ZSTD:
|
||||
# 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')
|
||||
|
||||
_ActiveDecompressionContext: Type[_DecompressionContext] = _ZstdDecompressionContext
|
||||
else:
|
||||
|
||||
|
@@ -58,7 +58,7 @@ speed = [
|
||||
"aiodns>=1.1; sys_platform != 'win32'",
|
||||
"Brotli",
|
||||
"cchardet==2.1.7; python_version < '3.10'",
|
||||
"zstandard>=0.23.0"
|
||||
"zstandard>=0.23.0; python_version <= '3.13'"
|
||||
]
|
||||
test = [
|
||||
"coverage[toml]",
|
||||
|
Reference in New Issue
Block a user