Skip to content

Commit 92fe746

Browse files
committed
add value kwarg to filter for specific query parameters to remove, fixes interdoc-edit-bot#70
1 parent c19cf48 commit 92fe746

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

hyperlink/_url.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,7 +1560,7 @@ def get(self, name):
15601560
"""
15611561
return [value for (key, value) in self.query if name == key]
15621562

1563-
def remove(self, name):
1563+
def remove(self, name, value=_UNSET):
15641564
"""Make a new :class:`URL` instance with all occurrences of the query
15651565
parameter *name* removed. No exception is raised if the
15661566
parameter is not already set.
@@ -1572,8 +1572,11 @@ def remove(self, name):
15721572
URL: A new :class:`URL` instance with the parameter removed.
15731573
15741574
"""
1575-
return self.replace(query=((k, v) for (k, v) in self.query
1576-
if k != name))
1575+
if value is _UNSET:
1576+
nq = [(k, v) for (k, v) in self.query if k != name]
1577+
else:
1578+
nq = [(k, v) for (k, v) in self.query if not (k == name and v == value)]
1579+
return self.replace(query=nq)
15771580

15781581

15791582
EncodedURL = URL # An alias better describing what the URL really is

hyperlink/test/test_url.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,13 @@ def test_queryRemove(self):
535535
URL.from_text(u"https://example.com/a/b/?bar=2")
536536
)
537537

538+
self.assertEqual(
539+
url.remove(name=u"foo", value=u"1"),
540+
URL.from_text(u"https://example.com/a/b/?bar=2&foo=3")
541+
)
542+
543+
544+
538545
def test_parseEqualSignInParamValue(self):
539546
"""
540547
Every C{=}-sign after the first in a query parameter is simply included

0 commit comments

Comments
 (0)