[text] implement 'parse_query()' without using 'urllib.parse.parse_qsl'

doesn't support bytes anymore, but is twice as fast
This commit is contained in:
Mike Fährmann
2024-10-01 20:04:43 +02:00
parent a120295632
commit 9f49cf16e8

View File

@@ -239,11 +239,17 @@ def parse_float(value, default=0.0):
def parse_query(qs):
"""Parse a query string into key-value pairs"""
if not qs:
return {}
result = {}
try:
for key, value in urllib.parse.parse_qsl(qs):
if key not in result:
result[key] = value
for name_value in qs.split("&"):
name, eq, value = name_value.partition("=")
if eq:
name = unquote(name.replace("+", " "))
if name not in result:
result[name] = unquote(value.replace("+", " "))
except Exception:
pass
return result