mirror of https://github.com/python/cpython
Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
This commit is contained in:
parent
280e9f7ce5
commit
ea24dda01f
|
@ -493,6 +493,10 @@ class UrlParseTestCase(unittest.TestCase):
|
||||||
('s3','foo.com','/stuff','','',''))
|
('s3','foo.com','/stuff','','',''))
|
||||||
self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff"),
|
self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff"),
|
||||||
('x-newscheme','foo.com','/stuff','','',''))
|
('x-newscheme','foo.com','/stuff','','',''))
|
||||||
|
self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff?query#fragment"),
|
||||||
|
('x-newscheme','foo.com','/stuff','','query','fragment'))
|
||||||
|
self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff?query"),
|
||||||
|
('x-newscheme','foo.com','/stuff','','query',''))
|
||||||
|
|
||||||
def test_withoutscheme(self):
|
def test_withoutscheme(self):
|
||||||
# Test urlparse without scheme
|
# Test urlparse without scheme
|
||||||
|
|
|
@ -40,16 +40,9 @@ uses_netloc = ['ftp', 'http', 'gopher', 'nntp', 'telnet',
|
||||||
'imap', 'wais', 'file', 'mms', 'https', 'shttp',
|
'imap', 'wais', 'file', 'mms', 'https', 'shttp',
|
||||||
'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '',
|
'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '',
|
||||||
'svn', 'svn+ssh', 'sftp','nfs','git', 'git+ssh']
|
'svn', 'svn+ssh', 'sftp','nfs','git', 'git+ssh']
|
||||||
non_hierarchical = ['gopher', 'hdl', 'mailto', 'news',
|
|
||||||
'telnet', 'wais', 'imap', 'snews', 'sip', 'sips']
|
|
||||||
uses_params = ['ftp', 'hdl', 'prospero', 'http', 'imap',
|
uses_params = ['ftp', 'hdl', 'prospero', 'http', 'imap',
|
||||||
'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',
|
'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',
|
||||||
'mms', '', 'sftp']
|
'mms', '', 'sftp']
|
||||||
uses_query = ['http', 'wais', 'imap', 'https', 'shttp', 'mms',
|
|
||||||
'gopher', 'rtsp', 'rtspu', 'sip', 'sips', '']
|
|
||||||
uses_fragment = ['ftp', 'hdl', 'http', 'gopher', 'news',
|
|
||||||
'nntp', 'wais', 'https', 'shttp', 'snews',
|
|
||||||
'file', 'prospero', '']
|
|
||||||
|
|
||||||
# Characters valid in scheme names
|
# Characters valid in scheme names
|
||||||
scheme_chars = ('abcdefghijklmnopqrstuvwxyz'
|
scheme_chars = ('abcdefghijklmnopqrstuvwxyz'
|
||||||
|
@ -204,9 +197,9 @@ def urlsplit(url, scheme='', allow_fragments=True):
|
||||||
if (('[' in netloc and ']' not in netloc) or
|
if (('[' in netloc and ']' not in netloc) or
|
||||||
(']' in netloc and '[' not in netloc)):
|
(']' in netloc and '[' not in netloc)):
|
||||||
raise ValueError("Invalid IPv6 URL")
|
raise ValueError("Invalid IPv6 URL")
|
||||||
if allow_fragments and scheme in uses_fragment and '#' in url:
|
if allow_fragments and '#' in url:
|
||||||
url, fragment = url.split('#', 1)
|
url, fragment = url.split('#', 1)
|
||||||
if scheme in uses_query and '?' in url:
|
if '?' in url:
|
||||||
url, query = url.split('?', 1)
|
url, query = url.split('?', 1)
|
||||||
v = SplitResult(scheme, netloc, url, query, fragment)
|
v = SplitResult(scheme, netloc, url, query, fragment)
|
||||||
_parse_cache[key] = v
|
_parse_cache[key] = v
|
||||||
|
|
|
@ -60,6 +60,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #9374: Generic parsing of query and fragment portions of url for any
|
||||||
|
scheme. Supported both by RFC3986 and RFC2396.
|
||||||
|
|
||||||
- Issue #14798: Fix the functions in pyclbr to raise an ImportError
|
- Issue #14798: Fix the functions in pyclbr to raise an ImportError
|
||||||
when the first part of a dotted name is not a package. Patch by
|
when the first part of a dotted name is not a package. Patch by
|
||||||
Xavier de Gaye.
|
Xavier de Gaye.
|
||||||
|
|
Loading…
Reference in New Issue