Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 454a74d

Browse files
committed
#14814: Remove dead code from ipaddress
_BaseNetwork contained (faulty) methods for creating string representations. I've fixed them and put them to use by eliminating identical overrides.
1 parent efce00c commit 454a74d

2 files changed

Lines changed: 23 additions & 38 deletions

File tree

Lib/ipaddress.py

Lines changed: 7 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,10 @@ def __int__(self):
578578
def __repr__(self):
579579
return '%s(%r)' % (self.__class__.__name__, str(self))
580580

581+
def __str__(self):
582+
return '%s/%d' % (str(self.network_address),
583+
self.prefixlen)
584+
581585
def hosts(self):
582586
"""Generate Iterator over usable hosts in a network.
583587
@@ -663,9 +667,6 @@ def __ne__(self, other):
663667
return NotImplemented
664668
return not eq
665669

666-
def __str__(self):
667-
return '%s/%s' % (self.ip, self._prefixlen)
668-
669670
def __hash__(self):
670671
return hash(int(self.network_address) ^ int(self.netmask))
671672

@@ -708,15 +709,15 @@ def hostmask(self):
708709

709710
@property
710711
def with_prefixlen(self):
711-
return '%s/%d' % (str(self.ip), self._prefixlen)
712+
return '%s/%d' % (str(self.network_address), self._prefixlen)
712713

713714
@property
714715
def with_netmask(self):
715-
return '%s/%s' % (str(self.ip), str(self.netmask))
716+
return '%s/%s' % (str(self.network_address), str(self.netmask))
716717

717718
@property
718719
def with_hostmask(self):
719-
return '%s/%s' % (str(self.ip), str(self.hostmask))
720+
return '%s/%s' % (str(self.network_address), str(self.hostmask))
720721

721722
@property
722723
def num_addresses(self):
@@ -1447,10 +1448,6 @@ def packed(self):
14471448
"""The binary representation of this address."""
14481449
return v4_int_to_packed(self.network_address)
14491450

1450-
def __str__(self):
1451-
return '%s/%d' % (str(self.network_address),
1452-
self.prefixlen)
1453-
14541451
def _is_valid_netmask(self, netmask):
14551452
"""Verify that the netmask is valid.
14561453
@@ -1498,18 +1495,6 @@ def _is_hostmask(self, ip_str):
14981495
return True
14991496
return False
15001497

1501-
@property
1502-
def with_prefixlen(self):
1503-
return '%s/%d' % (str(self.network_address), self._prefixlen)
1504-
1505-
@property
1506-
def with_netmask(self):
1507-
return '%s/%s' % (str(self.network_address), str(self.netmask))
1508-
1509-
@property
1510-
def with_hostmask(self):
1511-
return '%s/%s' % (str(self.network_address), str(self.hostmask))
1512-
15131498

15141499
class _BaseV6:
15151500

@@ -2108,10 +2093,6 @@ def __init__(self, address, strict=True):
21082093
if self._prefixlen == (self._max_prefixlen - 1):
21092094
self.hosts = self.__iter__
21102095

2111-
def __str__(self):
2112-
return '%s/%d' % (str(self.network_address),
2113-
self.prefixlen)
2114-
21152096
def _is_valid_netmask(self, prefixlen):
21162097
"""Verify that the netmask/prefixlen is valid.
21172098
@@ -2128,15 +2109,3 @@ def _is_valid_netmask(self, prefixlen):
21282109
except ValueError:
21292110
return False
21302111
return 0 <= prefixlen <= self._max_prefixlen
2131-
2132-
@property
2133-
def with_prefixlen(self):
2134-
return '%s/%d' % (str(self.network_address), self._prefixlen)
2135-
2136-
@property
2137-
def with_netmask(self):
2138-
return '%s/%s' % (str(self.network_address), str(self.netmask))
2139-
2140-
@property
2141-
def with_hostmask(self):
2142-
return '%s/%s' % (str(self.network_address), str(self.hostmask))

Lib/test/test_ipaddress.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,22 @@ def testHash(self):
972972
self.assertTrue(self.ipv4_address in dummy)
973973
self.assertTrue(ip2 in dummy)
974974

975+
def testIPv6NetworkHelpers(self):
976+
net = self.ipv6_network
977+
self.assertEqual('2001:658:22a:cafe::/64', net.with_prefixlen)
978+
self.assertEqual('2001:658:22a:cafe::/ffff:ffff:ffff:ffff::',
979+
net.with_netmask)
980+
self.assertEqual('2001:658:22a:cafe::/::ffff:ffff:ffff:ffff',
981+
net.with_hostmask)
982+
self.assertEqual('2001:658:22a:cafe::/64', str(net))
983+
984+
def testIPv4NetworkHelpers(self):
985+
net = self.ipv4_network
986+
self.assertEqual('1.2.3.0/24', net.with_prefixlen)
987+
self.assertEqual('1.2.3.0/255.255.255.0', net.with_netmask)
988+
self.assertEqual('1.2.3.0/0.0.0.255', net.with_hostmask)
989+
self.assertEqual('1.2.3.0/24', str(net))
990+
975991
def testCopyConstructor(self):
976992
addr1 = ipaddress.ip_network('10.1.1.0/24')
977993
addr2 = ipaddress.ip_network(addr1)

0 commit comments

Comments
 (0)