changeset: 77044:79e6ff3d9afd branch: 2.7 parent: 77041:2d2079593212 user: Senthil Kumaran date: Sat May 19 08:10:40 2012 +0800 files: Lib/test/test_urlparse.py Lib/urlparse.py Misc/NEWS description: Issue9374 - Generic parsing of query and fragment portion of urls for any scheme diff -r 2d2079593212 -r 79e6ff3d9afd Lib/test/test_urlparse.py --- a/Lib/test/test_urlparse.py Fri May 18 21:51:11 2012 +0300 +++ b/Lib/test/test_urlparse.py Sat May 19 08:10:40 2012 +0800 @@ -493,6 +493,10 @@ ('s3','foo.com','/stuff','','','')) self.assertEqual(urlparse.urlparse("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): # Test urlparse without scheme diff -r 2d2079593212 -r 79e6ff3d9afd Lib/urlparse.py --- a/Lib/urlparse.py Fri May 18 21:51:11 2012 +0300 +++ b/Lib/urlparse.py Sat May 19 08:10:40 2012 +0800 @@ -40,16 +40,9 @@ 'imap', 'wais', 'file', 'mms', 'https', 'shttp', 'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '', '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', 'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips', '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 scheme_chars = ('abcdefghijklmnopqrstuvwxyz' @@ -204,9 +197,9 @@ if (('[' in netloc and ']' not in netloc) or (']' in netloc and '[' not in netloc)): 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) - if scheme in uses_query and '?' in url: + if '?' in url: url, query = url.split('?', 1) v = SplitResult(scheme, netloc, url, query, fragment) _parse_cache[key] = v diff -r 2d2079593212 -r 79e6ff3d9afd Misc/NEWS --- a/Misc/NEWS Fri May 18 21:51:11 2012 +0300 +++ b/Misc/NEWS Sat May 19 08:10:40 2012 +0800 @@ -60,6 +60,9 @@ 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 when the first part of a dotted name is not a package. Patch by Xavier de Gaye.

AltStyle によって変換されたページ (->オリジナル) /