summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSviatoslav Sydorenko <wk@sydorenko.org.ua>2023-01-05 05:29:43 +0100
committerSviatoslav Sydorenko <wk@sydorenko.org.ua>2023-01-05 05:29:43 +0100
commit6b7c2cdc91ca5ba1f6cf3e5d9e8e386266c64ce6 (patch)
tree30e2fd2c29b55e764de9ea473f75ef82ff94609d
parent49401127ca9082b5bdf9ea20d71ddf107fa73cb2 (diff)
downloadcherrypy-git-6b7c2cdc91ca5ba1f6cf3e5d9e8e386266c64ce6.tar.gz
🔧 Stop using the `cgi` stdlib module
This module is deprecated since Python 3.11.
-rw-r--r--CHANGES.rst6
-rw-r--r--cherrypy/lib/httputil.py9
2 files changed, 13 insertions, 2 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 35b3f895..641976d4 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,3 +1,9 @@
+v(next)
+-------
+
+* Removed the use of :mod:`cgi` deprecated in Python 3.11
+ -- by :user:`webknjaz`.
+
v18.8.0
-------
diff --git a/cherrypy/lib/httputil.py b/cherrypy/lib/httputil.py
index ced310a0..f852cbd6 100644
--- a/cherrypy/lib/httputil.py
+++ b/cherrypy/lib/httputil.py
@@ -12,8 +12,8 @@ import email.utils
import re
import builtins
from binascii import b2a_base64
-from cgi import parse_header
from email.header import decode_header
+from email.message import EmailMessage as _EmailMessage
from http.server import BaseHTTPRequestHandler
from urllib.parse import unquote_plus
@@ -155,7 +155,12 @@ class HeaderElement(object):
@staticmethod
def parse(elementstr):
"""Transform 'token;key=val' to ('token', {'key': 'val'})."""
- initial_value, params = parse_header(elementstr)
+ msg = _EmailMessage()
+ msg['content-type'] = elementstr
+
+ initial_value = msg.get_content_type()
+ params = dict(msg['content-type'].params)
+
return initial_value, params
@classmethod