FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Make next_network and prev_network out of address space exceptions co… · python/cpython@fe2741b · GitHub

Repository navigation

Commit fe2741b

Browse files
authored andcommitted
Make next_network and prev_network out of address space exceptions consistent
1 parent 096db42 commit fe2741b

2 files changed

Lines changed: 23 additions & 21 deletions

File tree

‎Lib/ipaddress.py‎

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,16 +1152,12 @@ def _network_by_offset(self, prefix, offset):
11521152
((new_netmask._ip & self.network_address._ip) >> bit_shift)
11531153
+ offset
11541154
) << bit_shift
1155+
if not 0 <= new_ip <= self._ALL_ONES:
1156+
raise ValueError(error)
11551157

1156-
if new_ip < 0:
1157-
raise ValueError(error)
1158-
1159-
try:
1160-
return self.__class__(
1161-
f"{self._string_from_ip_int(new_ip)}/{prefix}"
1162-
)
1163-
except OverflowError:
1164-
raise ValueError(error) from None
1158+
return self.__class__(
1159+
f"{self._string_from_ip_int(new_ip)}/{prefix}"
1160+
)
11651161

11661162
def next_network(self, next_prefix=None):
11671163
"""Get the next closest network with a specific prefix.

‎Lib/test/test_ipaddress.py‎

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,16 +1595,17 @@ def testNextNetworkWithBadPrefix(self):
15951595
self.assertRaises(ValueError, self.ipv6_network.next_network, 150)
15961596

15971597
def testNextNetworkOutOfAddressSpace(self):
1598+
error = r"out of address space, cannot make another /{} network"
15981599
ipv4 = ipaddress.IPv4Network('255.255.255.0/24')
1599-
self.assertRaisesRegex(
1600-
ValueError,
1601-
'out of address space, cannot make another /24 network',
1602-
ipv4.next_network)
1600+
with self.assertRaisesRegex(ValueError, error.format(24)):
1601+
ipv4.next_network()
1602+
with self.assertRaisesRegex(ValueError, error.format(25)):
1603+
ipv4.next_network(25)
16031604
ipv6 = ipaddress.IPv6Network('ffff:ffff:ffff:ffff:ffff:ffff:ffff:0/112')
1604-
self.assertRaisesRegex(
1605-
ValueError,
1606-
'out of address space, cannot make another /112 network',
1607-
ipv6.next_network)
1605+
with self.assertRaisesRegex(ValueError, error.format(112)):
1606+
ipv6.next_network()
1607+
with self.assertRaisesRegex(ValueError, error.format(120)):
1608+
ipv6.next_network(120)
16081609

16091610
def testPrevNetwork(self):
16101611
ipv4 = ipaddress.IPv4Network('1.2.3.0/24')
@@ -1646,12 +1647,17 @@ def testPrevNetworkWithBadPrefix(self):
16461647
self.assertRaises(ValueError, self.ipv6_network.prev_network, 150)
16471648

16481649
def testPrevNetworkOutOfAddressSpace(self):
1650+
error = r"out of address space, cannot make another /{} network"
16491651
ipv4 = ipaddress.IPv4Network('0.0.0.0/24')
1650-
self.assertRaises(ValueError, ipv4.prev_network)
1651-
self.assertRaises(ValueError, ipv4.prev_network, 25)
1652+
with self.assertRaisesRegex(ValueError, error.format(24)):
1653+
ipv4.prev_network()
1654+
with self.assertRaisesRegex(ValueError, error.format(25)):
1655+
ipv4.prev_network(25)
16521656
ipv6 = ipaddress.IPv6Network('::/112')
1653-
self.assertRaises(ValueError, ipv6.prev_network)
1654-
self.assertRaises(ValueError, ipv6.prev_network, 112)
1657+
with self.assertRaisesRegex(ValueError, error.format(112)):
1658+
ipv6.prev_network()
1659+
with self.assertRaisesRegex(ValueError, error.format(120)):
1660+
ipv6.prev_network(120)
16551661

16561662
def testFancySubnetting(self):
16571663
self.assertEqual(sorted(self.ipv4_network.subnets(prefixlen_diff=3)),

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL