self.assertEqual(p1.username, 'user')
self.assertEqual(p1.path, '/path')
self.assertEqual(p1.port, 1234)
- p2 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7%test]/path?query')
- self.assertEqual(p2.hostname, '0439:23af:2309::fae7%test')
+ p2 = urllib.parse.urlsplit('scheme://user@[V6a.ip]:1234/path?query')
+ self.assertEqual(p2.hostname, 'v6a.ip')
self.assertEqual(p2.username, 'user')
self.assertEqual(p2.path, '/path')
- self.assertIs(p2.port, None)
- p3 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?query')
- self.assertEqual(p3.hostname, '0439:23af:2309::fae7:1234:192.0.2.146%test')
+ self.assertEqual(p2.port, 1234)
+ p3 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7%test]/path?query')
+ self.assertEqual(p3.hostname, '0439:23af:2309::fae7%test')
self.assertEqual(p3.username, 'user')
self.assertEqual(p3.path, '/path')
+ self.assertIs(p3.port, None)
+ p4 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?query')
+ self.assertEqual(p4.hostname, '0439:23af:2309::fae7:1234:192.0.2.146%test')
+ self.assertEqual(p4.username, 'user')
+ self.assertEqual(p4.path, '/path')
def test_port_casting_failure_message(self):
message = "Port could not be cast to integer value as 'oracle'"
# Valid bracketed hosts are defined in
# https://www.rfc-editor.org/rfc/rfc3986#page-49 and https://url.spec.whatwg.org/
def _check_bracketed_host(hostname):
- if hostname.startswith('v'):
- if not re.match(r"\Av[a-fA-F0-9]+\..+\z", hostname):
+ if hostname.startswith(('v', 'V')):
+ if not re.match(r"\A[vV][a-fA-F0-9]+\..+\z", hostname):
raise ValueError(f"IPvFuture address is invalid")
else:
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4