mirror of https://github.com/python/cpython
gh-104139: Add itms-services to uses_netloc urllib.parse. (#104312)
Teach unsplit to retain the `"//"` when assembling `itms-services://?action=generate-bugs` style [Apple Platform Deployment](https://support.apple.com/en-gb/guide/deployment/depce7cefc4d/web) URLs.
This commit is contained in:
parent
ca95edf177
commit
82f789be3b
|
@ -72,20 +72,20 @@ class UrlParseTestCase(unittest.TestCase):
|
|||
|
||||
def checkRoundtrips(self, url, parsed, split):
|
||||
result = urllib.parse.urlparse(url)
|
||||
self.assertEqual(result, parsed)
|
||||
self.assertSequenceEqual(result, parsed)
|
||||
t = (result.scheme, result.netloc, result.path,
|
||||
result.params, result.query, result.fragment)
|
||||
self.assertEqual(t, parsed)
|
||||
self.assertSequenceEqual(t, parsed)
|
||||
# put it back together and it should be the same
|
||||
result2 = urllib.parse.urlunparse(result)
|
||||
self.assertEqual(result2, url)
|
||||
self.assertEqual(result2, result.geturl())
|
||||
self.assertSequenceEqual(result2, url)
|
||||
self.assertSequenceEqual(result2, result.geturl())
|
||||
|
||||
# the result of geturl() is a fixpoint; we can always parse it
|
||||
# again to get the same result:
|
||||
result3 = urllib.parse.urlparse(result.geturl())
|
||||
self.assertEqual(result3.geturl(), result.geturl())
|
||||
self.assertEqual(result3, result)
|
||||
self.assertSequenceEqual(result3, result)
|
||||
self.assertEqual(result3.scheme, result.scheme)
|
||||
self.assertEqual(result3.netloc, result.netloc)
|
||||
self.assertEqual(result3.path, result.path)
|
||||
|
@ -99,18 +99,18 @@ class UrlParseTestCase(unittest.TestCase):
|
|||
|
||||
# check the roundtrip using urlsplit() as well
|
||||
result = urllib.parse.urlsplit(url)
|
||||
self.assertEqual(result, split)
|
||||
self.assertSequenceEqual(result, split)
|
||||
t = (result.scheme, result.netloc, result.path,
|
||||
result.query, result.fragment)
|
||||
self.assertEqual(t, split)
|
||||
self.assertSequenceEqual(t, split)
|
||||
result2 = urllib.parse.urlunsplit(result)
|
||||
self.assertEqual(result2, url)
|
||||
self.assertEqual(result2, result.geturl())
|
||||
self.assertSequenceEqual(result2, url)
|
||||
self.assertSequenceEqual(result2, result.geturl())
|
||||
|
||||
# check the fixpoint property of re-parsing the result of geturl()
|
||||
result3 = urllib.parse.urlsplit(result.geturl())
|
||||
self.assertEqual(result3.geturl(), result.geturl())
|
||||
self.assertEqual(result3, result)
|
||||
self.assertSequenceEqual(result3, result)
|
||||
self.assertEqual(result3.scheme, result.scheme)
|
||||
self.assertEqual(result3.netloc, result.netloc)
|
||||
self.assertEqual(result3.path, result.path)
|
||||
|
@ -162,10 +162,15 @@ class UrlParseTestCase(unittest.TestCase):
|
|||
('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
|
||||
'', '')),
|
||||
('git+ssh://git@github.com/user/project.git',
|
||||
('git+ssh', 'git@github.com','/user/project.git',
|
||||
'','',''),
|
||||
('git+ssh', 'git@github.com','/user/project.git',
|
||||
'', '')),
|
||||
('git+ssh', 'git@github.com','/user/project.git',
|
||||
'','',''),
|
||||
('git+ssh', 'git@github.com','/user/project.git',
|
||||
'', '')),
|
||||
('itms-services://?action=download-manifest&url=https://example.com/app',
|
||||
('itms-services', '', '', '',
|
||||
'action=download-manifest&url=https://example.com/app', ''),
|
||||
('itms-services', '', '',
|
||||
'action=download-manifest&url=https://example.com/app', '')),
|
||||
]
|
||||
def _encode(t):
|
||||
return (t[0].encode('ascii'),
|
||||
|
|
|
@ -54,7 +54,7 @@ uses_netloc = ['', 'ftp', 'http', 'gopher', 'nntp', 'telnet',
|
|||
'imap', 'wais', 'file', 'mms', 'https', 'shttp',
|
||||
'snews', 'prospero', 'rtsp', 'rtspu', 'rsync',
|
||||
'svn', 'svn+ssh', 'sftp', 'nfs', 'git', 'git+ssh',
|
||||
'ws', 'wss']
|
||||
'ws', 'wss', 'itms-services']
|
||||
|
||||
uses_params = ['', 'ftp', 'hdl', 'prospero', 'http', 'imap',
|
||||
'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Teach :func:`urllib.parse.unsplit` to retain the ``"//"`` when assembling
|
||||
``itms-services://?action=generate-bugs`` style `Apple Platform Deployment
|
||||
<https://support.apple.com/en-gb/guide/deployment/depce7cefc4d/web>`_ URLs.
|
Loading…
Reference in New Issue