]> granicus.if.org Git - python/commitdiff
ipaddr cleanup for python 3.x:
authorGregory P. Smith <greg@mad-scientist.com>
Sat, 2 May 2009 18:35:58 +0000 (18:35 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Sat, 2 May 2009 18:35:58 +0000 (18:35 +0000)
* Get rid of __hex__.
* Support bytearray as well as bytes.
* Don't double test for integer input.

Lib/ipaddr.py

index 77c21f58d5b25a414c9ede144b6ee2b0ee6f8510..1fec59a8c3b2101aee4ed85c9cc785d33e4c22a7 100644 (file)
@@ -263,9 +263,6 @@ class BaseIP(object):
     def __int__(self):
         return self.ip
 
-    def __hex__(self):
-        return hex(int(self))
-
     def address_exclude(self, other):
         """Remove an address from a larger block.
 
@@ -572,7 +569,7 @@ class IPv4(BaseIP):
         self._version = 4
 
         # Efficient constructor from integer.
-        if isinstance(ipaddr, int) or isinstance(ipaddr, int):
+        if isinstance(ipaddr, int):
             self.ip = ipaddr
             self._prefixlen = 32
             self.netmask = self._ALL_ONES
@@ -580,7 +577,8 @@ class IPv4(BaseIP):
                 raise IPv4IpValidationError(ipaddr)
             return
 
-        if isinstance(ipaddr, bytes) and len(ipaddr) == 4:
+        # Constructing from a packed address
+        if isinstance(ipaddr, (bytes, bytearray)) and len(ipaddr) == 4:
             self.ip = struct.unpack('!I', ipaddr)[0]
             self._prefixlen = 32
             self.netmask = self._ALL_ONES
@@ -909,7 +907,7 @@ class IPv6(BaseIP):
         self._version = 6
 
         # Efficient constructor from integer.
-        if isinstance(ipaddr, int) or isinstance(ipaddr, int):
+        if isinstance(ipaddr, int):
             self.ip = ipaddr
             self._prefixlen = 128
             self.netmask = self._ALL_ONES
@@ -917,7 +915,8 @@ class IPv6(BaseIP):
                 raise IPv6IpValidationError(ipaddr)
             return
 
-        if isinstance(ipaddr, bytes) and len(ipaddr) == 16:
+        # Constructing from a packed address
+        if isinstance(ipaddr, (bytes, bytearray)) and len(ipaddr) == 16:
             tmp = struct.unpack('!QQ', ipaddr)
             self.ip = (tmp[0] << 64) | tmp[1]
             self._prefixlen = 128