GH-65056: Improve the IP address' is_global/is_private documentation … · ActiveState/cpython@2a4cbf1 (original) (raw)

`@@ -1333,18 +1333,38 @@ def is_reserved(self):

`

1333

1333

`@property

`

1334

1334

`@functools.lru_cache()

`

1335

1335

`def is_private(self):

`

1336

``

`-

"""Test if this address is allocated for private networks.

`

``

1336


"""``True`` if the address is defined as not globally reachable by

``

1337

`+

iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_

`

``

1338

`+

(for IPv6) with the following exceptions:

`

1337

1339

``

1338

``

`-

Returns:

`

1339

``

`-

A boolean, True if the address is reserved per

`

1340

``

`-

iana-ipv4-special-registry.

`

``

1340


 * ``is_private`` is ``False`` for ``100.64.0.0/10``

``

1341


 * For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the

``

1342

`+

semantics of the underlying IPv4 addresses and the following condition holds

`

``

1343

`` +

(see :attr:IPv6Address.ipv4_mapped)::

``

``

1344

+

``

1345

`+

address.is_private == address.ipv4_mapped.is_private

`

1341

1346

``

``

1347


 ``is_private`` has value opposite to :attr:`is_global`, except for the ``100.64.0.0/10``

``

1348


 IPv4 range where they are both ``False``.

1342

1349

` """

`

1343

1350

`return any(self in net for net in self._constants._private_networks)

`

1344

1351

``

1345

1352

`@property

`

1346

1353

`@functools.lru_cache()

`

1347

1354

`def is_global(self):

`

``

1355


"""``True`` if the address is defined as globally reachable by

``

1356

`+

iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_

`

``

1357

`+

(for IPv6) with the following exception:

`

``

1358

+

``

1359


 For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the

``

1360

`+

semantics of the underlying IPv4 addresses and the following condition holds

`

``

1361

`` +

(see :attr:IPv6Address.ipv4_mapped)::

``

``

1362

+

``

1363

`+

address.is_global == address.ipv4_mapped.is_global

`

``

1364

+

``

1365


 ``is_global`` has value opposite to :attr:`is_private`, except for the ``100.64.0.0/10``

``

1366


 IPv4 range where they are both ``False``.

``

1367

`+

"""

`

1348

1368

`return self not in self._constants._public_network and not self.is_private

`

1349

1369

``

1350

1370

`@property

`

`@@ -2049,13 +2069,19 @@ def is_site_local(self):

`

2049

2069

`@property

`

2050

2070

`@functools.lru_cache()

`

2051

2071

`def is_private(self):

`

2052

``

`-

"""Test if this address is allocated for private networks.

`

``

2072


"""``True`` if the address is defined as not globally reachable by

``

2073

`+

iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_

`

``

2074

`+

(for IPv6) with the following exceptions:

`

2053

2075

``

2054

``

`-

Returns:

`

2055

``

`-

A boolean, True if the address is reserved per

`

2056

``

`-

iana-ipv6-special-registry, or is ipv4_mapped and is

`

2057

``

`-

reserved in the iana-ipv4-special-registry.

`

``

2076


 * ``is_private`` is ``False`` for ``100.64.0.0/10``

``

2077


 * For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the

``

2078

`+

semantics of the underlying IPv4 addresses and the following condition holds

`

``

2079

`` +

(see :attr:IPv6Address.ipv4_mapped)::

``

``

2080

+

``

2081

`+

address.is_private == address.ipv4_mapped.is_private

`

2058

2082

``

``

2083


 ``is_private`` has value opposite to :attr:`is_global`, except for the ``100.64.0.0/10``

``

2084


 IPv4 range where they are both ``False``.

2059

2085

` """

`

2060

2086

`ipv4_mapped = self.ipv4_mapped

`

2061

2087

`if ipv4_mapped is not None:

`

`@@ -2064,12 +2090,18 @@ def is_private(self):

`

2064

2090

``

2065

2091

`@property

`

2066

2092

`def is_global(self):

`

2067

``

`-

"""Test if this address is allocated for public networks.

`

``

2093


"""``True`` if the address is defined as globally reachable by

``

2094

`+

iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_

`

``

2095

`+

(for IPv6) with the following exception:

`

2068

2096

``

2069

``

`-

Returns:

`

2070

``

`-

A boolean, true if the address is not reserved per

`

2071

``

`-

iana-ipv6-special-registry.

`

``

2097


 For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the

``

2098

`+

semantics of the underlying IPv4 addresses and the following condition holds

`

``

2099

`` +

(see :attr:IPv6Address.ipv4_mapped)::

``

``

2100

+

``

2101

`+

address.is_global == address.ipv4_mapped.is_global

`

2072

2102

``

``

2103


 ``is_global`` has value opposite to :attr:`is_private`, except for the ``100.64.0.0/10``

``

2104


 IPv4 range where they are both ``False``.

2073

2105

` """

`

2074

2106

`return not self.is_private

`

2075

2107

``