@@ -1498,45 +1498,28 @@ def __init__(self, address, strict=True):
1498
1498
1499
1499
# Constructing from a packed address or integer
1500
1500
if isinstance (address , (int , bytes )):
1501
- self .network_address = IPv4Address (address )
1502
- self .netmask , self ._prefixlen = self ._make_netmask (self ._max_prefixlen )
1503
- #fixme: address/network test here.
1504
- return
1505
-
1506
- if isinstance (address , tuple ):
1507
- if len (address ) > 1 :
1508
- arg = address [1 ]
1509
- else :
1510
- # We weren't given an address[1]
1511
- arg = self ._max_prefixlen
1512
- self .network_address = IPv4Address (address [0 ])
1513
- self .netmask , self ._prefixlen = self ._make_netmask (arg )
1514
- packed = int (self .network_address )
1515
- if packed & int (self .netmask ) != packed :
1516
- if strict :
1517
- raise ValueError ('%s has host bits set' % self )
1518
- else :
1519
- self .network_address = IPv4Address (packed &
1520
- int (self .netmask ))
1521
- return
1522
-
1501
+ addr = address
1502
+ mask = self ._max_prefixlen
1503
+ # Constructing from a tuple (addr, [mask])
1504
+ elif isinstance (address , tuple ):
1505
+ addr = address [0 ]
1506
+ mask = address [1 ] if len (address ) > 1 else self ._max_prefixlen
1523
1507
# Assume input argument to be string or any object representation
1524
1508
# which converts into a formatted IP prefix string.
1525
- addr = _split_optional_netmask (address )
1526
- self .network_address = IPv4Address (self ._ip_int_from_string (addr [0 ]))
1527
-
1528
- if len (addr ) == 2 :
1529
- arg = addr [1 ]
1530
1509
else :
1531
- arg = self ._max_prefixlen
1532
- self .netmask , self ._prefixlen = self ._make_netmask (arg )
1533
-
1534
- if strict :
1535
- if (IPv4Address (int (self .network_address ) & int (self .netmask )) !=
1536
- self .network_address ):
1510
+ args = _split_optional_netmask (address )
1511
+ addr = self ._ip_int_from_string (args [0 ])
1512
+ mask = args [1 ] if len (args ) == 2 else self ._max_prefixlen
1513
+
1514
+ self .network_address = IPv4Address (addr )
1515
+ self .netmask , self ._prefixlen = self ._make_netmask (mask )
1516
+ packed = int (self .network_address )
1517
+ if packed & int (self .netmask ) != packed :
1518
+ if strict :
1537
1519
raise ValueError ('%s has host bits set' % self )
1538
- self .network_address = IPv4Address (int (self .network_address ) &
1539
- int (self .netmask ))
1520
+ else :
1521
+ self .network_address = IPv4Address (packed &
1522
+ int (self .netmask ))
1540
1523
1541
1524
if self ._prefixlen == (self ._max_prefixlen - 1 ):
1542
1525
self .hosts = self .__iter__
@@ -2191,46 +2174,30 @@ def __init__(self, address, strict=True):
2191
2174
"""
2192
2175
_BaseNetwork .__init__ (self , address )
2193
2176
2194
- # Efficient constructor from integer or packed address
2195
- if isinstance (address , (bytes , int )):
2196
- self .network_address = IPv6Address (address )
2197
- self .netmask , self ._prefixlen = self ._make_netmask (self ._max_prefixlen )
2198
- return
2199
-
2200
- if isinstance (address , tuple ):
2201
- if len (address ) > 1 :
2202
- arg = address [1 ]
2203
- else :
2204
- arg = self ._max_prefixlen
2205
- self .netmask , self ._prefixlen = self ._make_netmask (arg )
2206
- self .network_address = IPv6Address (address [0 ])
2207
- packed = int (self .network_address )
2208
- if packed & int (self .netmask ) != packed :
2209
- if strict :
2210
- raise ValueError ('%s has host bits set' % self )
2211
- else :
2212
- self .network_address = IPv6Address (packed &
2213
- int (self .netmask ))
2214
- return
2215
-
2177
+ # Constructing from a packed address or integer
2178
+ if isinstance (address , (int , bytes )):
2179
+ addr = address
2180
+ mask = self ._max_prefixlen
2181
+ # Constructing from a tuple (addr, [mask])
2182
+ elif isinstance (address , tuple ):
2183
+ addr = address [0 ]
2184
+ mask = address [1 ] if len (address ) > 1 else self ._max_prefixlen
2216
2185
# Assume input argument to be string or any object representation
2217
2186
# which converts into a formatted IP prefix string.
2218
- addr = _split_optional_netmask (address )
2219
-
2220
- self .network_address = IPv6Address (self ._ip_int_from_string (addr [0 ]))
2221
-
2222
- if len (addr ) == 2 :
2223
- arg = addr [1 ]
2224
2187
else :
2225
- arg = self ._max_prefixlen
2226
- self .netmask , self ._prefixlen = self ._make_netmask (arg )
2227
-
2228
- if strict :
2229
- if (IPv6Address (int (self .network_address ) & int (self .netmask )) !=
2230
- self .network_address ):
2188
+ args = _split_optional_netmask (address )
2189
+ addr = self ._ip_int_from_string (args [0 ])
2190
+ mask = args [1 ] if len (args ) == 2 else self ._max_prefixlen
2191
+
2192
+ self .network_address = IPv6Address (addr )
2193
+ self .netmask , self ._prefixlen = self ._make_netmask (mask )
2194
+ packed = int (self .network_address )
2195
+ if packed & int (self .netmask ) != packed :
2196
+ if strict :
2231
2197
raise ValueError ('%s has host bits set' % self )
2232
- self .network_address = IPv6Address (int (self .network_address ) &
2233
- int (self .netmask ))
2198
+ else :
2199
+ self .network_address = IPv6Address (packed &
2200
+ int (self .netmask ))
2234
2201
2235
2202
if self ._prefixlen == (self ._max_prefixlen - 1 ):
2236
2203
self .hosts = self .__iter__
0 commit comments