diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index 1d889ae7cf458f..dec76728dabb5d 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -1675,5 +1675,23 @@ def test_with_method_arg(self): self.assertEqual(request.get_method(), 'HEAD') +class TestReplaceMethod: + """Testcase to test the '.replace' method""" + + def test_defrag(self): + result = urllib.parse.defrag("http://www.python.org") + result = result.replace(frament="something") + self.assertEqual(result.fragment, "something") + + def test_urlsplit(self): + result = urllib.parse.urlsplit("http://www.python.org") + result = result.replace(frament="something") + self.assertEqual(result.fragment, "something") + + def test_urlparse(self): + result = urllib.parse.urlparse("http://www.python.org") + result = result.replace(frament="something") + self.assertEqual(result.fragment, "something") + if __name__ == '__main__': unittest.main() diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 67d9bbea0d3150..61358f5b1e32b7 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -313,6 +313,11 @@ def _hostinfo(self): _ParseResultBase.query.__doc__ = _SplitResultBase.query.__doc__ _ParseResultBase.fragment.__doc__ = _SplitResultBase.fragment.__doc__ +# Re-export these, since we don't have a 'replace' field +# and making the user call '._replace' feels yucky +_DefragResultBase.replace = _DefragResultBase._replace +_SplitResultBase.replace = _SplitResultBase._replace +_ParseResultBase.replace = _ParseResultBase._replace # For backwards compatibility, alias _NetlocResultMixinStr # ResultBase is no longer part of the documented API, but it is