mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-11-03 23:12:56 +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:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user