This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: urllib.parse.parse_qsl does not parse empty query string with strict parsing
Type: behavior Stage: patch review
Components: Library (Lib) Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: asvetlov, python-dev, sattler
Priority: normal Keywords: patch

Created on 2021-11-22 22:35 by sattler, last changed 2022-04-11 14:59 by admin.

Pull Requests
URL Status Linked Edit
PR 29716 merged python-dev, 2021-11-22 22:39
Messages (2)
msg406807 - (view) Author: Christian Sattler (sattler) * Date: 2021-11-22 22:35
Calling
  urllib.parse.parse_qsl('', strict_parsing=True)
yields an error:
  ValueError: bad query field: ''

The empty string '' is produced by
  urllib.parse.urlencode({})
and also as query string by
  urllib.parse.urlsplit('http://example.org/')
so it should be accepted by urllib.parse.parse_qsl with strict parsing. 

The problem is that parse_qsl(qs, ...) cannot distinguish between zero and one query arguments. The call to qs.split(separator) returns the non-empty list [''] for qs empty, which means one query argument. However, in this case, we want the other semantics.
msg408368 - (view) Author: Andrew Svetlov (asvetlov) * (Python committer) Date: 2021-12-12 08:41
New changeset e6fe10d34096a23be7d26271cf6aba429313b01d by Christian Sattler in branch 'main':
bpo-45874: Handle empty query string correctly in urllib.parse.parse_qsl (#29716)
https://github.com/python/cpython/commit/e6fe10d34096a23be7d26271cf6aba429313b01d
History
Date User Action Args
2022-04-11 14:59:52adminsetgithub: 90032
2021-12-12 08:41:19asvetlovsetnosy: + asvetlov
messages: + msg408368
2021-11-22 22:39:32python-devsetkeywords: + patch
nosy: + python-dev

pull_requests: + pull_request27952
stage: patch review
2021-11-22 22:35:40sattlercreate