summaryrefslogtreecommitdiffstats
path: root/Lib/urllib
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2019-10-18 13:07:20 (GMT)
committerSenthil Kumaran <skumaran@gatech.edu>2019-10-18 13:07:20 (GMT)
commit5a88d50ff013a64fbdb25b877c87644a9034c969 (patch)
tree48ee40eae4bce36fadf31bca4790f097ac65e999 /Lib/urllib
parentfbe3c76c7ce1eec887d332d801d3784212cc0f73 (diff)
downloadcpython-5a88d50ff013a64fbdb25b877c87644a9034c969.zip
cpython-5a88d50ff013a64fbdb25b877c87644a9034c969.tar.gz
cpython-5a88d50ff013a64fbdb25b877c87644a9034c969.tar.bz2
bpo-27657: Fix urlparse() with numeric paths (#661)
* bpo-27657: Fix urlparse() with numeric paths Revert parsing decision from bpo-754016 in favor of the documented consensus in bpo-16932 of how to treat strings without a // to designate the netloc. * bpo-22891: Remove urlsplit() optimization for 'http' prefixed inputs.
Diffstat (limited to 'Lib/urllib')
-rw-r--r--Lib/urllib/parse.py22
1 files changed, 1 insertions, 21 deletions
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index 3a38dc1..31fd7e1 100644
--- a/Lib/urllib/parse.py
+++ b/Lib/urllib/parse.py
@@ -431,31 +431,11 @@ def urlsplit(url, scheme='', allow_fragments=True):
netloc = query = fragment = ''
i = url.find(':')
if i > 0:
- if url[:i] == 'http': # optimize the common case
- url = url[i+1:]
- if url[:2] == '//':
- netloc, url = _splitnetloc(url, 2)
- if (('[' in netloc and ']' not in netloc) or
- (']' in netloc and '[' not in netloc)):
- raise ValueError("Invalid IPv6 URL")
- if allow_fragments and '#' in url:
- url, fragment = url.split('#', 1)
- if '?' in url:
- url, query = url.split('?', 1)
- _checknetloc(netloc)
- v = SplitResult('http', netloc, url, query, fragment)
- _parse_cache[key] = v
- return _coerce_result(v)
for c in url[:i]:
if c not in scheme_chars:
break
else:
- # make sure "url" is not actually a port number (in which case
- # "scheme" is really part of the path)
- rest = url[i+1:]
- if not rest or any(c not in '0123456789' for c in rest):
- # not a port number
- scheme, url = url[:i].lower(), rest
+ scheme, url = url[:i].lower(), url[i+1:]
if url[:2] == '//':
netloc, url = _splitnetloc(url, 2)