mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-23 18:38:08 -07:00
69 lines
2.0 KiB
Diff
69 lines
2.0 KiB
Diff
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"}
|
|
|
|
|