summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2021-06-19 13:15:34 +0200
committerMichał Górny <mgorny@gentoo.org>2021-06-19 14:01:24 +0200
commit449b6535e1bc097415f34b1930b24c843960015d (patch)
treeb223a49054748f4134719f6bc8630e2ea2f2316d /dev-python/aiohttp
parentdev-java/antlr: removed obsolete 2.7.7-r7 (diff)
downloadgentoo-449b6535e1bc097415f34b1930b24c843960015d.tar.gz
gentoo-449b6535e1bc097415f34b1930b24c843960015d.tar.bz2
gentoo-449b6535e1bc097415f34b1930b24c843960015d.zip
dev-python/aiohttp: Backport the switch to app-arch/brotli
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/aiohttp')
-rw-r--r--dev-python/aiohttp/aiohttp-3.7.4-r1.ebuild (renamed from dev-python/aiohttp/aiohttp-3.7.4.ebuild)8
-rw-r--r--dev-python/aiohttp/files/aiohttp-3.7.4-brotli.patch97
2 files changed, 103 insertions, 2 deletions
diff --git a/dev-python/aiohttp/aiohttp-3.7.4.ebuild b/dev-python/aiohttp/aiohttp-3.7.4-r1.ebuild
index f90f64776cf1..d35289bb49a3 100644
--- a/dev-python/aiohttp/aiohttp-3.7.4.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.7.4-r1.ebuild
@@ -3,7 +3,7 @@
EAPI=7
-PYTHON_COMPAT=( python3_{7..9} )
+PYTHON_COMPAT=( python3_{8..9} )
inherit distutils-r1 multiprocessing
@@ -27,8 +27,8 @@ BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
test? (
!!dev-python/pytest-aiohttp
+ app-arch/brotli[python,${PYTHON_USEDEP}]
dev-python/async_generator[${PYTHON_USEDEP}]
- dev-python/brotlipy[${PYTHON_USEDEP}]
dev-python/freezegun[${PYTHON_USEDEP}]
www-servers/gunicorn[${PYTHON_USEDEP}]
dev-python/pytest-forked[${PYTHON_USEDEP}]
@@ -40,6 +40,10 @@ BDEPEND="
)
"
+PATCHES=(
+ "${FILESDIR}"/aiohttp-3.7.4-brotli.patch
+)
+
DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
distutils_enable_tests pytest
diff --git a/dev-python/aiohttp/files/aiohttp-3.7.4-brotli.patch b/dev-python/aiohttp/files/aiohttp-3.7.4-brotli.patch
new file mode 100644
index 000000000000..1e8add007999
--- /dev/null
+++ b/dev-python/aiohttp/files/aiohttp-3.7.4-brotli.patch
@@ -0,0 +1,97 @@
+From a7424ddf490fc51244d427543cc9683b5427102b Mon Sep 17 00:00:00 2001
+From: Felix Yan <felixonmars@archlinux.org>
+Date: Fri, 19 Jul 2019 21:32:55 +0800
+Subject: [PATCH] Use Brotli instead of brotlipy (#3803)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+brotlipy is stuck at brotli 0.6 and upstream is inactive. Let's switch
+to the official binding which is up-to-date.
+
+(rebased for 3.7.x by Michał Górny)
+---
+ aiohttp/http_parser.py | 25 +++++++++++++++++++++----
+ docs/client_quickstart.rst | 2 +-
+ docs/index.rst | 2 +-
+ setup.py | 2 +-
+ 4 files changed, 24 insertions(+), 7 deletions(-)
+
+diff --git a/aiohttp/http_parser.py b/aiohttp/http_parser.py
+index 71ba815a..56ecead4 100644
+--- a/aiohttp/http_parser.py
++++ b/aiohttp/http_parser.py
+@@ -821,10 +821,27 @@ class DeflateBuffer:
+ if encoding == "br":
+ if not HAS_BROTLI: # pragma: no cover
+ raise ContentEncodingError(
+- "Can not decode content-encoding: brotli (br). "
+- "Please install `brotlipy`"
+- )
+- self.decompressor = brotli.Decompressor()
++ 'Can not decode content-encoding: brotli (br). '
++ 'Please install `Brotli`')
++
++ class BrotliDecoder:
++ # Supports both 'brotlipy' and 'Brotli' packages
++ # since they share an import name. The top branches
++ # are for 'brotlipy' and bottom branches for 'Brotli'
++ def __init__(self) -> None:
++ self._obj = brotli.Decompressor()
++
++ def decompress(self, data: bytes) -> bytes:
++ if hasattr(self._obj, "decompress"):
++ return self._obj.decompress(data)
++ return self._obj.process(data)
++
++ def flush(self) -> bytes:
++ if hasattr(self._obj, "flush"):
++ return self._obj.flush()
++ return b""
++
++ self.decompressor = BrotliDecoder() # type: Any
+ else:
+ zlib_mode = 16 + zlib.MAX_WBITS if encoding == "gzip" else zlib.MAX_WBITS
+ self.decompressor = zlib.decompressobj(wbits=zlib_mode)
+diff --git a/docs/client_quickstart.rst b/docs/client_quickstart.rst
+index 95588cb6..b9146584 100644
+--- a/docs/client_quickstart.rst
++++ b/docs/client_quickstart.rst
+@@ -174,7 +174,7 @@ The ``gzip`` and ``deflate`` transfer-encodings are automatically
+ decoded for you.
+
+ You can enable ``brotli`` transfer-encodings support,
+-just install `brotlipy <https://github.com/python-hyper/brotlipy>`_.
++just install `Brotli <https://pypi.org/project/Brotli>`_.
+
+ JSON Request
+ ============
+diff --git a/docs/index.rst b/docs/index.rst
+index 13fe723b..4091c001 100644
+--- a/docs/index.rst
++++ b/docs/index.rst
+@@ -52,7 +52,7 @@ Installing speedups altogether
+ ------------------------------
+
+ The following will get you ``aiohttp`` along with :term:`chardet`,
+-:term:`aiodns` and ``brotlipy`` in one bundle. No need to type
++:term:`aiodns` and ``Brotli`` in one bundle. No need to type
+ separate commands anymore!
+
+ .. code-block:: bash
+diff --git a/setup.py b/setup.py
+index 54462ba7..7a184817 100644
+--- a/setup.py
++++ b/setup.py
+@@ -137,7 +137,7 @@ args = dict(
+ extras_require={
+ "speedups": [
+ "aiodns",
+- "brotlipy",
++ "Brotli",
+ "cchardet",
+ ],
+ },
+--
+2.32.0
+