Luiz Poleto added the comment: I am seeing some results when running urlparse with patch urlparse_empty_bad_arg_deprecation2.patch applied:
>>> urllib.parse.urlparse({}) __main__:1: DeprecationWarning: Use of {} is deprecated __main__:1: DeprecationWarning: Use of '' is deprecated ParseResultBytes(scheme=b'', netloc=b'', path=b'', params=b'', query=b'', fragment=b'') >>> urllib.parse.urlparse('', b'') __main__:1: DeprecationWarning: Use of b'' is deprecated /home/poleto/SCMws/python/latest/cpython/Lib/urllib/parse.py:378: DeprecationWarning: Use of b'' is deprecated splitresult = urlsplit(url, scheme, allow_fragments) ParseResult(scheme=b'', netloc='', path='', params='', query='', fragment='') Will bytes be deprecated if used as a default_schema? >>> urllib.parse.urlparse(b'', '') ParseResultBytes(scheme=b'', netloc=b'', path=b'', params=b'', query=b'', fragment=b'') Shouldn't it complain that the types are different? In fact it does, if you don't provide empty strings: >>> urllib.parse.urlparse(b'www.python.org', 'http') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "(...)/cpython/Lib/urllib/parse.py", line 377, in urlparse url, scheme, _coerce_result = _coerce_args(url, scheme) File "(...)/cpython/Lib/urllib/parse.py", line 120, in _coerce_args raise TypeError("Cannot mix str and non-str arguments") TypeError: Cannot mix str and non-str arguments >>> urllib.parse.urlparse({'a' : 1}) __main__:1: DeprecationWarning: Use of '' is deprecated Traceback (most recent call last): File "<stdin>", line 1, in <module> File "(...)/cpython/Lib/urllib/parse.py", line 377, in urlparse url, scheme, _coerce_result = _coerce_args(url, scheme) File "(...)/cpython/Lib/urllib/parse.py", line 128, in _coerce_args return _decode_args(args) + (_encode_result,) File "(...)/cpython/Lib/urllib/parse.py", line 98, in _decode_args return tuple(x.decode(encoding, errors) if x else '' for x in args) File "(...)/cpython/Lib/urllib/parse.py", line 98, in <genexpr> return tuple(x.decode(encoding, errors) if x else '' for x in args) AttributeError: 'dict' object has no attribute 'decode' >>> urllib.parse.urlparse(['a', 'b', 'c']) __main__:1: DeprecationWarning: Use of [] is deprecated Traceback (most recent call last): File "<stdin>", line 1, in <module> File "(...)/cpython/Lib/urllib/parse.py", line 377, in urlparse url, scheme, _coerce_result = _coerce_args(url, scheme) File "(...)/cpython/Lib/urllib/parse.py", line 128, in _coerce_args return _decode_args(args) + (_encode_result,) File "(...)/cpython/Lib/urllib/parse.py", line 98, in _decode_args return tuple(x.decode(encoding, errors) if x else '' for x in args) File "(...)/cpython/Lib/urllib/parse.py", line 98, in <genexpr> return tuple(x.decode(encoding, errors) if x else '' for x in args) AttributeError: 'list' object has no attribute 'decode' I thought about writing test cases but I wasn't a 100% sure if the above is working as expected so I thought I should ask first. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22234> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com