Use compression.zstd for gateway compression on Python 3.14

This commit is contained in:
beerpsi
2025-10-09 04:33:29 +07:00
committed by Rapptz
parent 26c4019b0b
commit 0fb682eb91
2 changed files with 21 additions and 2 deletions

View File

@@ -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:

View File

@@ -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]",