Overall the patch looks ok, although I can't say the implementation strategy makes for very readable code. (I would suggest to temporarily decode bytes using latin1, but the properties on ResultMixin wouldn't make that very pretty either) http://codereview.appspot.com/2318041/diff/1/Lib/urllib/parse.py File Lib/urllib/parse.py (right): http://codereview.appspot.com/2318041/diff/1/Lib/urllib/parse.py#newcode48 Lib/urllib/parse.py:48: uses_params = ['ftp', 'hdl', 'prospero', 'http', 'imap', Not directly related to the patch, but shoudn't all these lists be sets? It would speed up containment tests quite a bit. http://codereview.appspot.com/2318041/diff/1/Lib/urllib/parse.py#newcode139 Lib/urllib/parse.py:139: __slots__ = () Again, not related to the patch, but ResultMixin lacks a __slots__, so SplitResult will have a __dict__ anyway.