Skip to content

Commit dd86b34

Browse files
derecktasvetlov
andauthored
Fix to query_update(None) (#792)
* Handled case where update_query() is handed None as an argument. Added corresponding test file as well. * Added Changes file * Rename 790.bugfix.rst to 792.bugfix.rst Co-authored-by: Andrew Svetlov <[email protected]>
1 parent 94b8679 commit dd86b34

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

CHANGES/792.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed an issue with update_query() not getting rid of the query when argument is None.

tests/test_update_query.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ def test_update_query_with_multiple_args():
4040
url.update_query("a", "b")
4141

4242

43+
def test_update_query_with_none_arg():
44+
url = URL("http://example.com/?foo=bar&baz=foo")
45+
expected_url = URL("http://example.com/")
46+
assert url.update_query(None) == expected_url
47+
48+
4349
def test_with_query_list_of_pairs():
4450
url = URL("http://example.com")
4551
assert str(url.with_query([("a", "1")])) == "http://example.com/?a=1"

yarl/_url.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -985,9 +985,11 @@ def with_query(self, *args, **kwargs):
985985
def update_query(self, *args, **kwargs):
986986
"""Return a new URL with query part updated."""
987987
s = self._get_str_query(*args, **kwargs)
988-
new_query = MultiDict(parse_qsl(s, keep_blank_values=True))
989-
query = MultiDict(self.query)
990-
query.update(new_query)
988+
query = None
989+
if s:
990+
new_query = MultiDict(parse_qsl(s, keep_blank_values=True))
991+
query = MultiDict(self.query)
992+
query.update(new_query)
991993

992994
return URL(self._val._replace(query=self._get_str_query(query)), encoded=True)
993995

0 commit comments

Comments
 (0)