New submission from Antti Haapala:

Because of "if x else ''" in _decode_args 
(http://hg.python.org/cpython/file/3.4/Lib/urllib/parse.py#l96), 
urllib.parse.urlparse accepts any falsy value as an url, returning a 
ParseResultBytes with all members set to empty bytestrings.

Thus you get:

    >>> urllib.parse.urlparse({})
    ParseResultBytes(scheme=b'', netloc=b'', path=b'', params=b'', query=b'', 
fragment=b'')

which may result in some very confusing exceptions later on: I had a list of 
URLs that accidentally contained some Nones and got very confusing TypeErrors 
while processing the results expecting them to be strings.

If the `if x else ''` part were removed, such invalid falsy values would fail 
with `AttributeError: 'foo' object has no attribute 'decode'`, as happens with 
any truthy invalid value.

----------
components: Library (Lib)
messages: 225566
nosy: Ztane
priority: normal
severity: normal
status: open
title: urllib.parse.urlparse accepts any falsy value as an url
type: behavior
versions: Python 3.4

_______________________________________
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

Reply via email to