summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2022-10-05 10:23:00 +0200
committerMichał Górny <mgorny@gentoo.org>2022-10-05 11:41:12 +0200
commitb97e0fa492b377d616cd2285f205f604c8a92443 (patch)
treedb7e7a736c05520745caf946ee282fc1a330ed6b /dev-python/httpx
parentdev-python/nbconvert: Bump 7.1.0 (diff)
downloadgentoo-b97e0fa492b377d616cd2285f205f604c8a92443.tar.gz
gentoo-b97e0fa492b377d616cd2285f205f604c8a92443.tar.bz2
gentoo-b97e0fa492b377d616cd2285f205f604c8a92443.zip
dev-python/httpx: Backport deprecated cgi usage removal
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/httpx')
-rw-r--r--dev-python/httpx/files/httpx-0.23.0-cgi.patch68
-rw-r--r--dev-python/httpx/httpx-0.23.0-r1.ebuild (renamed from dev-python/httpx/httpx-0.23.0.ebuild)4
2 files changed, 72 insertions, 0 deletions
diff --git a/dev-python/httpx/files/httpx-0.23.0-cgi.patch b/dev-python/httpx/files/httpx-0.23.0-cgi.patch
new file mode 100644
index 000000000000..ba9a7aebda2d
--- /dev/null
+++ b/dev-python/httpx/files/httpx-0.23.0-cgi.patch
@@ -0,0 +1,68 @@
+From f13ab4d288d0b790f6f1c515a6c0ea45e9615748 Mon Sep 17 00:00:00 2001
+From: Florimond Manca <florimond.manca@protonmail.com>
+Date: Thu, 25 Aug 2022 12:23:04 +0200
+Subject: [PATCH] Replace cgi which will be deprecated in Python 3.11 (#2309)
+
+* Replace cgi which will be deprecated in Python 3.11
+
+* Update httpx/_utils.py
+---
+ httpx/_models.py | 8 ++------
+ httpx/_utils.py | 9 +++++++++
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/httpx/_models.py b/httpx/_models.py
+index fd1d7fe9a..7a3b5885d 100644
+--- a/httpx/_models.py
++++ b/httpx/_models.py
+@@ -1,4 +1,3 @@
+-import cgi
+ import datetime
+ import email.message
+ import json as jsonlib
+@@ -47,6 +46,7 @@
+ normalize_header_key,
+ normalize_header_value,
+ obfuscate_sensitive_headers,
++ parse_content_type_charset,
+ parse_header_links,
+ )
+
+@@ -608,11 +608,7 @@ def charset_encoding(self) -> typing.Optional[str]:
+ if content_type is None:
+ return None
+
+- _, params = cgi.parse_header(content_type)
+- if "charset" not in params:
+- return None
+-
+- return params["charset"].strip("'\"")
++ return parse_content_type_charset(content_type)
+
+ def _get_content_decoder(self) -> ContentDecoder:
+ """
+diff --git a/httpx/_utils.py b/httpx/_utils.py
+index e01c050df..ecce4f417 100644
+--- a/httpx/_utils.py
++++ b/httpx/_utils.py
+@@ -1,4 +1,5 @@
+ import codecs
++import email.message
+ import logging
+ import mimetypes
+ import netrc
+@@ -209,6 +210,14 @@ def parse_header_links(value: str) -> typing.List[typing.Dict[str, str]]:
+ return links
+
+
++def parse_content_type_charset(content_type: str) -> typing.Optional[str]:
++ # We used to use `cgi.parse_header()` here, but `cgi` became a dead battery.
++ # See: https://peps.python.org/pep-0594/#cgi
++ msg = email.message.Message()
++ msg["content-type"] = content_type
++ return msg.get_content_charset(failobj=None)
++
++
+ SENSITIVE_HEADERS = {"authorization", "proxy-authorization"}
+
+
diff --git a/dev-python/httpx/httpx-0.23.0.ebuild b/dev-python/httpx/httpx-0.23.0-r1.ebuild
index f63c41c27f79..674754d2796c 100644
--- a/dev-python/httpx/httpx-0.23.0.ebuild
+++ b/dev-python/httpx/httpx-0.23.0-r1.ebuild
@@ -57,6 +57,10 @@ BDEPEND="
distutils_enable_tests pytest
src_prepare() {
+ local PATCHES=(
+ "${FILESDIR}"/${P}-cgi.patch
+ )
+
# unpin deps
sed -i -e 's:==[0-9.*]\+::' -e 's:,<[0-9.]\+::' setup.py || die
if ! use cli; then