``True`` if the address is reserved for multicast use. See
:RFC:`3171` (for IPv4) or :RFC:`2373` (for IPv6).
+ .. attribute:: is_private
+
+ ``True`` if the address is allocated for private networks. See
+ iana-ipv4-special-registry (for IPv4) or iana-ipv6-special-registry
+ (for IPv6).
+
.. attribute:: is_global
``True`` if the address is allocated for public networks. See
"""
return (self in IPv4Network('0.0.0.0/8') or
self in IPv4Network('10.0.0.0/8') or
- self in IPv4Network('100.64.0.0/10') or
self in IPv4Network('127.0.0.0/8') or
self in IPv4Network('169.254.0.0/16') or
self in IPv4Network('172.16.0.0/12') or
self in IPv4Network('240.0.0.0/4') or
self in IPv4Network('255.255.255.255/32'))
- @property
- def is_global(self):
- """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 self in IPv4Network('100.64.0.0/10') or not self.is_private
-
@property
def is_multicast(self):
if self._prefixlen == (self._max_prefixlen - 1):
self.hosts = self.__iter__
+ @property
+ @functools.lru_cache()
+ def is_global(self):
+ """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.network_address in IPv4Network('100.64.0.0/10') and
+ self.broadcast_address in IPv4Network('100.64.0.0/10')) and
+ not self.is_private)
+
+
class _BaseV6:
self.assertEqual(True, ipaddress.ip_network(
'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_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,
Library
-------
+- Issue #17400: New 'is_global' attribute for ipaddress to tell if an address
+ is allocated by IANA for global or private networks.
+
- Issue #19350: Increasing the test coverage of macurl2path. Patch by Colin
Williams.