[issue35377] urlsplit scheme argument broken
New submission from devkral : the scheme argument of urlsplit/urlparse is completely broken. here two examples: urlunsplit(urlsplit("httpbin.org", scheme="https://";)) 'https://:httpbin.org' urlunsplit(urlsplit("httpbin.org", scheme="https")) 'https:///httpbin.org' Fix: change urlsplit logic like this: ... url, scheme, _coerce_result = _coerce_args(url, scheme) scheme = scheme.rstrip("://") # this removes :// ... i = url.find('://') # harden against arbitrary : if i > 0: ... elif scheme: netloc, url = _splitnetloc(url, 0) # if scheme is specified, netloc is implied sry too lazy to create a patch from this. Most probably are all python versions affected but I checked only 2.7 and 3.7 . -- components: Library (Lib) messages: 330884 nosy: devkral priority: normal severity: normal status: open title: urlsplit scheme argument broken versions: Python 2.7, Python 3.7 ___ Python tracker <https://bugs.python.org/issue35377> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue35377] urlsplit scheme argument broken
devkral added the comment: first a correction; there is one protocol where it make sense: file I would change: ... elif scheme: ... to ... elif scheme and scheme != "file": ... Second: no it is not a correct behaviour. Urlunsplit is supposed to create a valid url from a tuple created by urlsplit. :/// is not a valid url (except for the file protocol). Third: rstrip could be simplified to rstrip(":/") -- ___ Python tracker <https://bugs.python.org/issue35377> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue35377] urlsplit scheme argument broken
devkral added the comment: Ok, then the problem is in unsplit. Because: :/// is not a valid url. Next try: in urlunsplit: if netloc or (scheme and scheme in uses_netloc and url[:2] != '//'): if url and url[:1] != '/' and scheme in ("file", ""): # my change url = '/' + url -- ___ Python tracker <https://bugs.python.org/issue35377> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue35377] urlsplit scheme argument broken
devkral added the comment: ah, I get the idea behind urlunsplit. But still: for e.g. http, http:/// is invalid. These urls are invalid for e.g. requests. May I ask: urllib.parse is for web protocol urls? If yes, then there should be an option which defaults to my version. -- ___ Python tracker <https://bugs.python.org/issue35377> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com