diff options
author | Peter Moody <python@hda3.com> | 2013-10-22 19:36:21 (GMT) |
---|---|---|
committer | Peter Moody <python@hda3.com> | 2013-10-22 19:36:21 (GMT) |
commit | be9c1b133b78754a5a27e30bd35944d75647ee4c (patch) | |
tree | 5f78177268b31576224e8bcb1eb31812c77af199 | |
parent | a4df90ceb92f9d3ad8e3dd968a22fe732a41c159 (diff) | |
download | cpython-be9c1b133b78754a5a27e30bd35944d75647ee4c.zip cpython-be9c1b133b78754a5a27e30bd35944d75647ee4c.tar.gz cpython-be9c1b133b78754a5a27e30bd35944d75647ee4c.tar.bz2 |
#17400: fix documentation, add cache to is_global and correctly handle 100.64.0.0/10
-rw-r--r-- | Doc/library/ipaddress.rst | 2 | ||||
-rw-r--r-- | Lib/ipaddress.py | 8 | ||||
-rw-r--r-- | Lib/test/test_ipaddress.py | 1 |
3 files changed, 7 insertions, 4 deletions
diff --git a/Doc/library/ipaddress.rst b/Doc/library/ipaddress.rst index 7336204..af1b3b8 100644 --- a/Doc/library/ipaddress.rst +++ b/Doc/library/ipaddress.rst @@ -160,7 +160,7 @@ write code that handles both IP versions correctly. .. attribute:: is_global - ``True`` if the address is allocated for private networks. See + ``True`` if the address is allocated for public networks. See iana-ipv4-special-registry (for IPv4) or iana-ipv6-special-registry (for IPv6). diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py index 53423e2..7936192 100644 --- a/Lib/ipaddress.py +++ b/Lib/ipaddress.py @@ -984,7 +984,7 @@ class _BaseNetwork(_IPAddressBase): @property def is_global(self): - """Test if this address is allocated for private networks. + """Test if this address is allocated for public networks. Returns: A boolean, True if the address is not reserved per @@ -1233,6 +1233,7 @@ class IPv4Address(_BaseV4, _BaseAddress): return self in reserved_network @property + @functools.lru_cache() def is_private(self): """Test if this address is allocated for private networks. @@ -1259,14 +1260,14 @@ class IPv4Address(_BaseV4, _BaseAddress): @property def is_global(self): - """Test if this address is allocated for private networks. + """Test if this address is allocated for public networks. Returns: A boolean, True if the address is not reserved per iana-ipv4-special-registry. """ - return not self.is_private + return self in IPv4Network('100.64.0.0/10') or not self.is_private @property @@ -1856,6 +1857,7 @@ class IPv6Address(_BaseV6, _BaseAddress): return self in sitelocal_network @property + @functools.lru_cache() def is_private(self): """Test if this address is allocated for private networks. diff --git a/Lib/test/test_ipaddress.py b/Lib/test/test_ipaddress.py index c2a2009..25f190c 100644 --- a/Lib/test/test_ipaddress.py +++ b/Lib/test/test_ipaddress.py @@ -1320,6 +1320,7 @@ class IpaddrUnitTest(unittest.TestCase): '127.42.0.0/16').is_loopback) self.assertEqual(False, ipaddress.ip_network('128.0.0.0').is_loopback) self.assertEqual(True, ipaddress.ip_network('100.64.0.0/10').is_private) + self.assertEqual(False, ipaddress.ip_network('100.64.0.0/10').is_global) self.assertEqual(True, ipaddress.ip_network('192.0.2.128/25').is_private) self.assertEqual(True, |