From b97e0fa492b377d616cd2285f205f604c8a92443 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Wed, 5 Oct 2022 10:23:00 +0200 Subject: dev-python/httpx: Backport deprecated cgi usage removal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- dev-python/httpx/files/httpx-0.23.0-cgi.patch | 68 ++++++++++++++++++++ dev-python/httpx/httpx-0.23.0-r1.ebuild | 91 +++++++++++++++++++++++++++ dev-python/httpx/httpx-0.23.0.ebuild | 87 ------------------------- 3 files changed, 159 insertions(+), 87 deletions(-) create mode 100644 dev-python/httpx/files/httpx-0.23.0-cgi.patch create mode 100644 dev-python/httpx/httpx-0.23.0-r1.ebuild delete mode 100644 dev-python/httpx/httpx-0.23.0.ebuild (limited to 'dev-python') 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 +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-r1.ebuild b/dev-python/httpx/httpx-0.23.0-r1.ebuild new file mode 100644 index 000000000000..674754d2796c --- /dev/null +++ b/dev-python/httpx/httpx-0.23.0-r1.ebuild @@ -0,0 +1,91 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Docs builder mkdocs not keyworded on all these arches yet +# DOCS_BUILDER="mkdocs" +# DOCS_DEPEND="dev-python/mkdocs-material" +# DOCS_AUTODOC=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( pypy3 python3_{8..11} ) + +inherit distutils-r1 optfeature # docs + +DESCRIPTION="Fully-featured HTTP client which provides sync and async APIs" +HOMEPAGE=" + https://www.python-httpx.org/ + https://github.com/encode/httpx/ + https://pypi.org/project/httpx/ +" +SRC_URI=" + https://github.com/encode/httpx/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="cli" + +RDEPEND=" + dev-python/certifi[${PYTHON_USEDEP}] + dev-python/sniffio[${PYTHON_USEDEP}] + =dev-python/httpcore-0.15*[${PYTHON_USEDEP}] + >=dev-python/rfc3986-1.3[${PYTHON_USEDEP}] + cli? ( + =dev-python/click-8*[${PYTHON_USEDEP}] + =dev-python/pygments-2*[${PYTHON_USEDEP}] +