diff -r 345391bb8ee1 Lib/ipaddress.py --- a/Lib/ipaddress.py Sat Mar 01 02:04:10 2014 -0500 +++ b/Lib/ipaddress.py Sun Mar 02 13:52:59 2014 +0100 @@ -691,7 +691,10 @@ return False # dealing with another network. if isinstance(other, _BaseNetwork): - return False + return ( + int(other.network_address) >= int(self.network_address) and + int(other.broadcast_address) <= int(self.broadcast_address) + ) # dealing with another address else: # address diff -r 345391bb8ee1 Lib/test/test_ipaddress.py --- a/Lib/test/test_ipaddress.py Sat Mar 01 02:04:10 2014 -0500 +++ b/Lib/test/test_ipaddress.py Sun Mar 02 13:52:59 2014 +0100 @@ -530,6 +530,14 @@ v6addr = ipaddress.IPv6Address(1) v6net = ipaddress.IPv6Network(1) v6intf = ipaddress.IPv6Interface(1) + v4smallnet_a = ipaddress.IPv4Network('10.0.0.0/30') + v4smallnet_b = ipaddress.IPv4Network('20.0.0.0/30') + v4smallnet_c = ipaddress.IPv4Network('30.0.0.0/30') + v4bignet = ipaddress.IPv4Network('20.0.0.0/24') + v6smallnet_a = ipaddress.IPv6Network('1000::/64') + v6smallnet_b = ipaddress.IPv6Network('2000::/64') + v6smallnet_c = ipaddress.IPv6Network('3000::/64') + v6bignet = ipaddress.IPv6Network('2000::/48') v4_addresses = [v4addr, v4intf] v4_objects = v4_addresses + [v4net] @@ -560,10 +568,16 @@ self.assertIn(obj, self.v4net) for obj in self.v6_addresses: self.assertIn(obj, self.v6net) - for obj in self.v4_objects + [self.v6net]: + for obj in self.v4_objects: self.assertNotIn(obj, self.v6net) - for obj in self.v6_objects + [self.v4net]: + for obj in self.v6_objects: self.assertNotIn(obj, self.v4net) + self.assertNotIn(self.v4smallnet_a, self.v4bignet) + self.assertIn(self.v4smallnet_b, self.v4bignet) + self.assertNotIn(self.v4smallnet_c, self.v4bignet) + self.assertNotIn(self.v6smallnet_a, self.v6bignet) + self.assertIn(self.v6smallnet_b, self.v6bignet) + self.assertNotIn(self.v6smallnet_c, self.v6bignet) def test_mixed_type_ordering(self): for lhs in self.objects: