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