summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Moody <python@hda3.com>2013-10-22 19:36:21 (GMT)
committerPeter Moody <python@hda3.com>2013-10-22 19:36:21 (GMT)
commitbe9c1b133b78754a5a27e30bd35944d75647ee4c (patch)
tree5f78177268b31576224e8bcb1eb31812c77af199
parenta4df90ceb92f9d3ad8e3dd968a22fe732a41c159 (diff)
downloadcpython-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.rst2
-rw-r--r--Lib/ipaddress.py8
-rw-r--r--Lib/test/test_ipaddress.py1
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,