@@ -1514,45 +1514,28 @@ def __init__(self, address, strict=True):
15141514
15151515 # Constructing from a packed address or integer
15161516 if isinstance (address , (int , bytes )):
1517- self .network_address = IPv4Address (address )
1518- self .netmask , self ._prefixlen = self ._make_netmask (self ._max_prefixlen )
1519- #fixme: address/network test here.
1520- return
1521-
1522- if isinstance (address , tuple ):
1523- if len (address ) > 1 :
1524- arg = address [1 ]
1525- else :
1526- # We weren't given an address[1]
1527- arg = self ._max_prefixlen
1528- self .network_address = IPv4Address (address [0 ])
1529- self .netmask , self ._prefixlen = self ._make_netmask (arg )
1530- packed = int (self .network_address )
1531- if packed & int (self .netmask ) != packed :
1532- if strict :
1533- raise ValueError ('%s has host bits set' % self )
1534- else :
1535- self .network_address = IPv4Address (packed &
1536- int (self .netmask ))
1537- return
1538-
1517+ addr = address
1518+ mask = self ._max_prefixlen
1519+ # Constructing from a tuple (addr, [mask])
1520+ elif isinstance (address , tuple ):
1521+ addr = address [0 ]
1522+ mask = address [1 ] if len (address ) > 1 else self ._max_prefixlen
15391523 # Assume input argument to be string or any object representation
15401524 # which converts into a formatted IP prefix string.
1541- addr = _split_optional_netmask (address )
1542- self .network_address = IPv4Address (self ._ip_int_from_string (addr [0 ]))
1543-
1544- if len (addr ) == 2 :
1545- arg = addr [1 ]
15461525 else :
1547- arg = self ._max_prefixlen
1548- self .netmask , self ._prefixlen = self ._make_netmask (arg )
1549-
1550- if strict :
1551- if (IPv4Address (int (self .network_address ) & int (self .netmask )) !=
1552- self .network_address ):
1526+ args = _split_optional_netmask (address )
1527+ addr = self ._ip_int_from_string (args [0 ])
1528+ mask = args [1 ] if len (args ) == 2 else self ._max_prefixlen
1529+
1530+ self .network_address = IPv4Address (addr )
1531+ self .netmask , self ._prefixlen = self ._make_netmask (mask )
1532+ packed = int (self .network_address )
1533+ if packed & int (self .netmask ) != packed :
1534+ if strict :
15531535 raise ValueError ('%s has host bits set' % self )
1554- self .network_address = IPv4Address (int (self .network_address ) &
1555- int (self .netmask ))
1536+ else :
1537+ self .network_address = IPv4Address (packed &
1538+ int (self .netmask ))
15561539
15571540 if self ._prefixlen == (self ._max_prefixlen - 1 ):
15581541 self .hosts = self .__iter__
@@ -2207,46 +2190,30 @@ def __init__(self, address, strict=True):
22072190 """
22082191 _BaseNetwork .__init__ (self , address )
22092192
2210- # Efficient constructor from integer or packed address
2211- if isinstance (address , (bytes , int )):
2212- self .network_address = IPv6Address (address )
2213- self .netmask , self ._prefixlen = self ._make_netmask (self ._max_prefixlen )
2214- return
2215-
2216- if isinstance (address , tuple ):
2217- if len (address ) > 1 :
2218- arg = address [1 ]
2219- else :
2220- arg = self ._max_prefixlen
2221- self .netmask , self ._prefixlen = self ._make_netmask (arg )
2222- self .network_address = IPv6Address (address [0 ])
2223- packed = int (self .network_address )
2224- if packed & int (self .netmask ) != packed :
2225- if strict :
2226- raise ValueError ('%s has host bits set' % self )
2227- else :
2228- self .network_address = IPv6Address (packed &
2229- int (self .netmask ))
2230- return
2231-
2193+ # Constructing from a packed address or integer
2194+ if isinstance (address , (int , bytes )):
2195+ addr = address
2196+ mask = self ._max_prefixlen
2197+ # Constructing from a tuple (addr, [mask])
2198+ elif isinstance (address , tuple ):
2199+ addr = address [0 ]
2200+ mask = address [1 ] if len (address ) > 1 else self ._max_prefixlen
22322201 # Assume input argument to be string or any object representation
22332202 # which converts into a formatted IP prefix string.
2234- addr = _split_optional_netmask (address )
2235-
2236- self .network_address = IPv6Address (self ._ip_int_from_string (addr [0 ]))
2237-
2238- if len (addr ) == 2 :
2239- arg = addr [1 ]
22402203 else :
2241- arg = self ._max_prefixlen
2242- self .netmask , self ._prefixlen = self ._make_netmask (arg )
2243-
2244- if strict :
2245- if (IPv6Address (int (self .network_address ) & int (self .netmask )) !=
2246- self .network_address ):
2204+ args = _split_optional_netmask (address )
2205+ addr = self ._ip_int_from_string (args [0 ])
2206+ mask = args [1 ] if len (args ) == 2 else self ._max_prefixlen
2207+
2208+ self .network_address = IPv6Address (addr )
2209+ self .netmask , self ._prefixlen = self ._make_netmask (mask )
2210+ packed = int (self .network_address )
2211+ if packed & int (self .netmask ) != packed :
2212+ if strict :
22472213 raise ValueError ('%s has host bits set' % self )
2248- self .network_address = IPv6Address (int (self .network_address ) &
2249- int (self .netmask ))
2214+ else :
2215+ self .network_address = IPv6Address (packed &
2216+ int (self .netmask ))
22502217
22512218 if self ._prefixlen == (self ._max_prefixlen - 1 ):
22522219 self .hosts = self .__iter__
0 commit comments