mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-10-18 04:00:39 +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 typing
|
||||||
import warnings
|
import warnings
|
||||||
import logging
|
import logging
|
||||||
import zlib
|
|
||||||
|
|
||||||
import yarl
|
import yarl
|
||||||
|
|
||||||
|
if sys.version_info >= (3, 14):
|
||||||
|
import compression.zstd
|
||||||
|
else:
|
||||||
|
import zlib
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import orjson # type: ignore
|
import orjson # type: ignore
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
@@ -1437,6 +1441,21 @@ if _HAS_ZSTD:
|
|||||||
# Each WS message is a complete gateway message
|
# Each WS message is a complete gateway message
|
||||||
return self.context.decompress(data).decode('utf-8')
|
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
|
_ActiveDecompressionContext: Type[_DecompressionContext] = _ZstdDecompressionContext
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
@@ -58,7 +58,7 @@ speed = [
|
|||||||
"aiodns>=1.1; sys_platform != 'win32'",
|
"aiodns>=1.1; sys_platform != 'win32'",
|
||||||
"Brotli",
|
"Brotli",
|
||||||
"cchardet==2.1.7; python_version < '3.10'",
|
"cchardet==2.1.7; python_version < '3.10'",
|
||||||
"zstandard>=0.23.0"
|
"zstandard>=0.23.0; python_version <= '3.13'"
|
||||||
]
|
]
|
||||||
test = [
|
test = [
|
||||||
"coverage[toml]",
|
"coverage[toml]",
|
||||||
|
Reference in New Issue
Block a user