mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-23 21:57:33 -08:00
It was necessary to backport the patch [1]. [1] https://github.com/falconry/python-mimeparse/pull/46 Signed-off-by: Petr Vaněk <arkamar@gentoo.org>
80 lines
2.3 KiB
Diff
80 lines
2.3 KiB
Diff
From 5427072b12119fe28fd66f19f74beb7da0c1de8b Mon Sep 17 00:00:00 2001
|
|
From: Stanis Trendelenburg <stanis.trendelenburg@gmail.com>
|
|
Date: Mon, 1 Jan 2024 12:48:19 +0100
|
|
Subject: [PATCH] chore(cgi): include `parse_header()` from the deprecated cgi
|
|
module (#46)
|
|
|
|
* Include functions from the deprecated cgi module
|
|
|
|
* Document source of vendored functions from cgi.py
|
|
|
|
* Fix linter error
|
|
---
|
|
|
|
Upstream-PR: https://github.com/falconry/python-mimeparse/pull/46
|
|
|
|
diff --git a/mimeparse.py b/mimeparse.py
|
|
index 0de6d57..506e138 100644
|
|
--- a/mimeparse.py
|
|
+++ b/mimeparse.py
|
|
@@ -1,5 +1,3 @@
|
|
-import cgi
|
|
-
|
|
__version__ = '1.6.0'
|
|
__author__ = 'Joe Gregorio'
|
|
__email__ = 'joe@bitworking.org'
|
|
@@ -11,6 +9,44 @@ class MimeTypeParseException(ValueError):
|
|
pass
|
|
|
|
|
|
+# Vendored version of cgi._parseparam from Python 3.11 (deprecated and slated
|
|
+# for removal in 3.13)
|
|
+def _parseparam(s):
|
|
+ while s[:1] == ';':
|
|
+ s = s[1:]
|
|
+ end = s.find(';')
|
|
+ while end > 0 and (s.count('"', 0, end) - s.count('\\"', 0, end)) % 2:
|
|
+ end = s.find(';', end + 1)
|
|
+ if end < 0:
|
|
+ end = len(s)
|
|
+ f = s[:end]
|
|
+ yield f.strip()
|
|
+ s = s[end:]
|
|
+
|
|
+
|
|
+# Vendored version of cgi.parse_header from Python 3.11 (deprecated and slated
|
|
+# for removal in 3.13)
|
|
+def _parse_header(line):
|
|
+ """Parse a Content-type like header.
|
|
+
|
|
+ Return the main content-type and a dictionary of options.
|
|
+
|
|
+ """
|
|
+ parts = _parseparam(';' + line)
|
|
+ key = parts.__next__()
|
|
+ pdict = {}
|
|
+ for p in parts:
|
|
+ i = p.find('=')
|
|
+ if i >= 0:
|
|
+ name = p[:i].strip().lower()
|
|
+ value = p[i + 1:].strip()
|
|
+ if len(value) >= 2 and value[0] == value[-1] == '"':
|
|
+ value = value[1:-1]
|
|
+ value = value.replace('\\\\', '\\').replace('\\"', '"')
|
|
+ pdict[name] = value
|
|
+ return key, pdict
|
|
+
|
|
+
|
|
def parse_mime_type(mime_type):
|
|
"""Parses a mime-type into its component parts.
|
|
|
|
@@ -23,7 +59,7 @@ def parse_mime_type(mime_type):
|
|
|
|
:rtype: (str,str,dict)
|
|
"""
|
|
- full_type, params = cgi.parse_header(mime_type)
|
|
+ full_type, params = _parse_header(mime_type)
|
|
# Java URLConnection class sends an Accept header that includes a
|
|
# single '*'. Turn it into a legal wildcard.
|
|
if full_type == '*':
|