Skip to content

Commit 82f789b

Browse files
authored
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.
1 parent ca95edf commit 82f789b

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

Diff for: Lib/test/test_urlparse.py

+19-14
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,20 @@ class UrlParseTestCase(unittest.TestCase):
7272

7373
def checkRoundtrips(self, url, parsed, split):
7474
result = urllib.parse.urlparse(url)
75-
self.assertEqual(result, parsed)
75+
self.assertSequenceEqual(result, parsed)
7676
t = (result.scheme, result.netloc, result.path,
7777
result.params, result.query, result.fragment)
78-
self.assertEqual(t, parsed)
78+
self.assertSequenceEqual(t, parsed)
7979
# put it back together and it should be the same
8080
result2 = urllib.parse.urlunparse(result)
81-
self.assertEqual(result2, url)
82-
self.assertEqual(result2, result.geturl())
81+
self.assertSequenceEqual(result2, url)
82+
self.assertSequenceEqual(result2, result.geturl())
8383

8484
# the result of geturl() is a fixpoint; we can always parse it
8585
# again to get the same result:
8686
result3 = urllib.parse.urlparse(result.geturl())
8787
self.assertEqual(result3.geturl(), result.geturl())
88-
self.assertEqual(result3, result)
88+
self.assertSequenceEqual(result3, result)
8989
self.assertEqual(result3.scheme, result.scheme)
9090
self.assertEqual(result3.netloc, result.netloc)
9191
self.assertEqual(result3.path, result.path)
@@ -99,18 +99,18 @@ def checkRoundtrips(self, url, parsed, split):
9999

100100
# check the roundtrip using urlsplit() as well
101101
result = urllib.parse.urlsplit(url)
102-
self.assertEqual(result, split)
102+
self.assertSequenceEqual(result, split)
103103
t = (result.scheme, result.netloc, result.path,
104104
result.query, result.fragment)
105-
self.assertEqual(t, split)
105+
self.assertSequenceEqual(t, split)
106106
result2 = urllib.parse.urlunsplit(result)
107-
self.assertEqual(result2, url)
108-
self.assertEqual(result2, result.geturl())
107+
self.assertSequenceEqual(result2, url)
108+
self.assertSequenceEqual(result2, result.geturl())
109109

110110
# check the fixpoint property of re-parsing the result of geturl()
111111
result3 = urllib.parse.urlsplit(result.geturl())
112112
self.assertEqual(result3.geturl(), result.geturl())
113-
self.assertEqual(result3, result)
113+
self.assertSequenceEqual(result3, result)
114114
self.assertEqual(result3.scheme, result.scheme)
115115
self.assertEqual(result3.netloc, result.netloc)
116116
self.assertEqual(result3.path, result.path)
@@ -162,10 +162,15 @@ def test_roundtrips(self):
162162
('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
163163
'', '')),
164164
('git+ssh://git@github.com/user/project.git',
165-
('git+ssh', 'git@github.com','/user/project.git',
166-
'','',''),
167-
('git+ssh', 'git@github.com','/user/project.git',
168-
'', '')),
165+
('git+ssh', 'git@github.com','/user/project.git',
166+
'','',''),
167+
('git+ssh', 'git@github.com','/user/project.git',
168+
'', '')),
169+
('itms-services://?action=download-manifest&url=https://example.com/app',
170+
('itms-services', '', '', '',
171+
'action=download-manifest&url=https://example.com/app', ''),
172+
('itms-services', '', '',
173+
'action=download-manifest&url=https://example.com/app', '')),
169174
]
170175
def _encode(t):
171176
return (t[0].encode('ascii'),

Diff for: Lib/urllib/parse.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
'imap', 'wais', 'file', 'mms', 'https', 'shttp',
5555
'snews', 'prospero', 'rtsp', 'rtspu', 'rsync',
5656
'svn', 'svn+ssh', 'sftp', 'nfs', 'git', 'git+ssh',
57-
'ws', 'wss']
57+
'ws', 'wss', 'itms-services']
5858

5959
uses_params = ['', 'ftp', 'hdl', 'prospero', 'http', 'imap',
6060
'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Teach :func:`urllib.parse.unsplit` to retain the ``"//"`` when assembling
2+
``itms-services://?action=generate-bugs`` style `Apple Platform Deployment
3+
<https://support.apple.com/en-gb/guide/deployment/depce7cefc4d/web>`_ URLs.

0 commit comments

Comments
 (0)