mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-11-03 23:12:56 +00:00 
			
		
		
		
	Do not assume Python 3.14 has compression.zstd
This commit is contained in:
		@@ -74,11 +74,6 @@ import logging
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
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:
 | 
				
			||||||
@@ -87,10 +82,17 @@ else:
 | 
				
			|||||||
    HAS_ORJSON = True
 | 
					    HAS_ORJSON = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    import zstandard  # type: ignore
 | 
					    from zstandard import ZstdDecompressor  # type: ignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _HAS_ZSTD = True
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        from compression.zstd import ZstdDecompressor  # type: ignore
 | 
				
			||||||
 | 
					    except ImportError:
 | 
				
			||||||
 | 
					        import zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        _HAS_ZSTD = False
 | 
					        _HAS_ZSTD = False
 | 
				
			||||||
else:
 | 
					    else:
 | 
				
			||||||
        _HAS_ZSTD = True
 | 
					        _HAS_ZSTD = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__all__ = (
 | 
					__all__ = (
 | 
				
			||||||
@@ -1429,32 +1431,16 @@ def _human_join(seq: Sequence[str], /, *, delimiter: str = ', ', final: str = 'o
 | 
				
			|||||||
if _HAS_ZSTD:
 | 
					if _HAS_ZSTD:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class _ZstdDecompressionContext:
 | 
					    class _ZstdDecompressionContext:
 | 
				
			||||||
        __slots__ = ('context',)
 | 
					        __slots__ = ('decompressor',)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        COMPRESSION_TYPE: str = 'zstd-stream'
 | 
					        COMPRESSION_TYPE: str = 'zstd-stream'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def __init__(self) -> None:
 | 
					        def __init__(self) -> None:
 | 
				
			||||||
            decompressor = zstandard.ZstdDecompressor()
 | 
					            self.decompressor = ZstdDecompressor()
 | 
				
			||||||
            self.context = decompressor.decompressobj()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def decompress(self, data: bytes, /) -> str | None:
 | 
					        def decompress(self, data: bytes, /) -> str | None:
 | 
				
			||||||
            # 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.decompressor.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:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user