diff options
author | Omer Katz <omer.drow@gmail.com> | 2019-01-09 15:13:48 +0200 |
---|---|---|
committer | Omer Katz <omer.drow@gmail.com> | 2019-01-09 16:27:40 +0200 |
commit | 48fc43e40154ff2d1e8e7d7918f617ade838c26f (patch) | |
tree | 48811cae6c84930e0532ef6b324f7767a9756cf0 | |
parent | 77b1362b39665b79afba64b501a94fa7e730af16 (diff) | |
download | kombu-brotli-compression.tar.gz |
Added optional support for brotli compression.brotli-compression
-rw-r--r-- | kombu/compression.py | 9 | ||||
-rw-r--r-- | requirements/extras/brotli.txt | 2 | ||||
-rw-r--r-- | requirements/test-ci.txt | 1 | ||||
-rw-r--r-- | t/unit/test_compression.py | 16 |
4 files changed, 28 insertions, 0 deletions
diff --git a/kombu/compression.py b/kombu/compression.py index 26feb70c..e8e5504b 100644 --- a/kombu/compression.py +++ b/kombu/compression.py @@ -76,3 +76,12 @@ register(zlib.compress, register(bz2.compress, bz2.decompress, 'application/x-bz2', aliases=['bzip2', 'bzip']) + +try: + import brotli +except ImportError: + pass +else: + register(brotli.compress, + brotli.decompress, + 'application/x-brotli', aliases=['brotli']) diff --git a/requirements/extras/brotli.txt b/requirements/extras/brotli.txt new file mode 100644 index 00000000..a449c7de --- /dev/null +++ b/requirements/extras/brotli.txt @@ -0,0 +1,2 @@ +brotlipy>=0.7.0;python_implementation=="PyPy" +brotli>=1.0.0;python_implementation=="CPython" diff --git a/requirements/test-ci.txt b/requirements/test-ci.txt index 65b43895..143af172 100644 --- a/requirements/test-ci.txt +++ b/requirements/test-ci.txt @@ -9,4 +9,5 @@ msgpack-python>0.2.0 -r extras/consul.txt -r extras/librabbitmq.txt -r extras/zookeeper.txt +-r extras/brotli.txt sqlalchemy diff --git a/t/unit/test_compression.py b/t/unit/test_compression.py index 4f18f05d..2b416824 100644 --- a/t/unit/test_compression.py +++ b/t/unit/test_compression.py @@ -1,5 +1,7 @@ from __future__ import absolute_import, unicode_literals +import pytest + from kombu import compression @@ -11,6 +13,11 @@ class test_compression: def test_encoders__bz2(self): assert 'application/x-bz2' in compression.encoders() + def test_encoders__brotli(self): + pytest.importorskip('brotli') + + assert 'application/x-brotli' in compression.encoders() + def test_compress__decompress__zlib(self): text = b'The Quick Brown Fox Jumps Over The Lazy Dog' c, ctype = compression.compress(text, 'zlib') @@ -24,3 +31,12 @@ class test_compression: assert text != c d = compression.decompress(c, ctype) assert d == text + + def test_compress__decompress__brotli(self): + pytest.importorskip('brotli') + + text = b'The Brown Quick Fox Over The Lazy Dog Jumps' + c, ctype = compression.compress(text, 'brotli') + assert text != c + d = compression.decompress(c, ctype) + assert d == text |