From 02953d244fdb2fe99853d2fe5db905df53c6596f Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Sat, 2 May 2009 18:35:58 +0000 Subject: [PATCH] ipaddr cleanup for python 3.x: * Get rid of __hex__. * Support bytearray as well as bytes. * Don't double test for integer input. --- Lib/ipaddr.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Lib/ipaddr.py b/Lib/ipaddr.py index 77c21f58d5b..1fec59a8c3b 100644 --- a/Lib/ipaddr.py +++ b/Lib/ipaddr.py @@ -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