Skip to content

Commit

Permalink
Fix empty query params (#2354)
Browse files Browse the repository at this point in the history
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
  • Loading branch information
tomchristie and Kludex committed Sep 2, 2022
1 parent 3eee17e commit d5900cd
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
2 changes: 1 addition & 1 deletion httpx/_urls.py
Expand Up @@ -540,7 +540,7 @@ def __init__(
items: typing.Sequence[typing.Tuple[str, PrimitiveData]]
if value is None or isinstance(value, (str, bytes)):
value = value.decode("ascii") if isinstance(value, bytes) else value
self._dict = parse_qs(value)
self._dict = parse_qs(value, keep_blank_values=True)
elif isinstance(value, QueryParams):
self._dict = {k: list(v) for k, v in value._dict.items()}
else:
Expand Down
11 changes: 11 additions & 0 deletions tests/models/test_queryparams.py
Expand Up @@ -76,6 +76,17 @@ def test_queryparam_types():
assert str(q) == "a=1&a=2"


def test_empty_query_params():
q = httpx.QueryParams({"a": ""})
assert str(q) == "a="

q = httpx.QueryParams("a=")
assert str(q) == "a="

q = httpx.QueryParams("a")
assert str(q) == "a="


def test_queryparam_update_is_hard_deprecated():
q = httpx.QueryParams("a=123")
with pytest.raises(RuntimeError):
Expand Down

0 comments on commit d5900cd

Please sign in to comment.