diff options
-rw-r--r-- | Lib/ipaddr.py | 28 | ||||
-rwxr-xr-x | Lib/test/test_ipaddr.py | 42 | ||||
-rw-r--r-- | Lib/zipfile.py | 4 |
3 files changed, 10 insertions, 64 deletions
diff --git a/Lib/ipaddr.py b/Lib/ipaddr.py index c95a814..d6ea310 100644 --- a/Lib/ipaddr.py +++ b/Lib/ipaddr.py @@ -193,17 +193,6 @@ def collapse_address_list(addresses): sorted(addresses, key=BaseIP._get_networks_key)) -# Test whether this Python implementation supports byte objects that -# are not identical to str ones. -# We need to exclude platforms where bytes == str so that we can -# distinguish between packed representations and strings, for example -# b'12::' (the IPv4 address 49.50.58.58) and '12::' (an IPv6 address). -try: - _compat_has_real_bytes = bytes != str -except NameError: # <Python2.6 - _compat_has_real_bytes = False - - class BaseIP(object): """A generic IP object. @@ -591,14 +580,6 @@ class IPv4(BaseIP): raise IPv4IpValidationError(ipaddr) return - # Constructing from a packed address - if _compat_has_real_bytes: - if isinstance(ipaddr, bytes) and len(ipaddr) == 4: - self.ip = struct.unpack('!I', ipaddr)[0] - self._prefixlen = 32 - self.netmask = self._ALL_ONES - return - # Assume input argument to be string or any object representation # which converts into a formatted IP prefix string. addr = str(ipaddr).split('/') @@ -930,15 +911,6 @@ class IPv6(BaseIP): raise IPv6IpValidationError(ipaddr) return - # Constructing from a packed address - if _compat_has_real_bytes: - if isinstance(ipaddr, bytes) and len(ipaddr) == 16: - tmp = struct.unpack('!QQ', ipaddr) - self.ip = (tmp[0] << 64) | tmp[1] - self._prefixlen = 128 - self.netmask = self._ALL_ONES - return - # Assume input argument to be string or any object representation # which converts into a formatted IP prefix string. addr_str = str(ipaddr) diff --git a/Lib/test/test_ipaddr.py b/Lib/test/test_ipaddr.py index 16ebb86..6ab581c 100755 --- a/Lib/test/test_ipaddr.py +++ b/Lib/test/test_ipaddr.py @@ -22,12 +22,6 @@ import unittest import ipaddr -# Compatibility function to cast str to bytes objects -if ipaddr._compat_has_real_bytes: - _cb = lambda bytestr: bytes(bytestr, 'charmap') -else: - _cb = str - class IpaddrUnitTest(unittest.TestCase): def setUp(self): @@ -99,27 +93,6 @@ class IpaddrUnitTest(unittest.TestCase): self.assertEqual(ipaddr.IP(self.ipv4.ip).version, 4) self.assertEqual(ipaddr.IP(self.ipv6.ip).version, 6) - if ipaddr._compat_has_real_bytes: # on python3+ - def testIpFromPacked(self): - ip = ipaddr.IP - - self.assertEqual(self.ipv4.ip, - ip(_cb('\x01\x02\x03\x04')).ip) - self.assertEqual(ip('255.254.253.252'), - ip(_cb('\xff\xfe\xfd\xfc'))) - self.assertRaises(ValueError, ipaddr.IP, _cb('\x00' * 3)) - self.assertRaises(ValueError, ipaddr.IP, _cb('\x00' * 5)) - self.assertEqual(self.ipv6.ip, - ip(_cb('\x20\x01\x06\x58\x02\x2a\xca\xfe' - '\x02\x00\x00\x00\x00\x00\x00\x01')).ip) - self.assertEqual(ip('ffff:2:3:4:ffff::'), - ip(_cb('\xff\xff\x00\x02\x00\x03\x00\x04' + - '\xff\xff' + '\x00' * 6))) - self.assertEqual(ip('::'), - ip(_cb('\x00' * 16))) - self.assertRaises(ValueError, ip, _cb('\x00' * 15)) - self.assertRaises(ValueError, ip, _cb('\x00' * 17)) - def testGetIp(self): self.assertEqual(self.ipv4.ip, 16909060) self.assertEqual(self.ipv4.ip_ext, '1.2.3.4') @@ -403,18 +376,17 @@ class IpaddrUnitTest(unittest.TestCase): self.assertEqual(self.ipv6.version, 6) def testPacked(self): - self.assertEqual(self.ipv4.packed, - _cb('\x01\x02\x03\x04')) + self.assertEqual(self.ipv4.packed, '\x01\x02\x03\x04') self.assertEqual(ipaddr.IPv4('255.254.253.252').packed, - _cb('\xff\xfe\xfd\xfc')) + '\xff\xfe\xfd\xfc') self.assertEqual(self.ipv6.packed, - _cb('\x20\x01\x06\x58\x02\x2a\xca\xfe' - '\x02\x00\x00\x00\x00\x00\x00\x01')) + '\x20\x01\x06\x58\x02\x2a\xca\xfe' + + '\x02\x00\x00\x00\x00\x00\x00\x01') self.assertEqual(ipaddr.IPv6('ffff:2:3:4:ffff::').packed, - _cb('\xff\xff\x00\x02\x00\x03\x00\x04\xff\xff' - + '\x00' * 6)) + '\xff\xff\x00\x02\x00\x03\x00\x04\xff\xff' + + '\x00' * 6) self.assertEqual(ipaddr.IPv6('::1:0:0:0:0').packed, - _cb('\x00' * 6 + '\x00\x01' + '\x00' * 8)) + '\x00' * 6 + '\x00\x01' + '\x00' * 8) def testIpStrFromPrefixlen(self): ipv4 = ipaddr.IPv4('1.2.3.4/24') diff --git a/Lib/zipfile.py b/Lib/zipfile.py index 3106353..3147f98 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -952,7 +952,9 @@ class ZipFile: """ # build the destination pathname, replacing # forward slashes to platform specific separators. - if targetpath[-1:] in (os.path.sep, os.path.altsep): + # Don't strip it if it is a drive. + if targetpath[-1:] in (os.path.sep, os.path.altsep) and \ + not (len(targetpath) > 1 and targetpath[-2] == ":"): targetpath = targetpath[:-1] # don't include leading "/" from file name if present |