GH-65056: Improve the IP address' is_global/is_private documentation#113186
GH-65056: Improve the IP address' is_global/is_private documentation#113186encukou merged 6 commits into
Conversation
…ation It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). I opted to fully replace the docstrings with the content from the documentation to save myself some work.
|
I think the news entry can be safely skipped here. Note that the documentation is accurate assuming that #113179 gets merged and the I'll adapt the documentation as needed. |
Sorry, something went wrong.
encukou
left a comment
There was a problem hiding this comment.
LGTM, but I'd prefer saying shared address space rather than (or in addition to) the numbers -- at least in the public docs.
Sorry, something went wrong.
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
|
That's more than fair, all suggestions applied. |
Sorry, something went wrong.
…ation (pythonGH-113186) * pythonGH-65056: Improve the IP address' is_global/is_private documentation It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). Co-authored-by: Petr Viktorin <encukou@gmail.com>
…ation (pythonGH-113186) * pythonGH-65056: Improve the IP address' is_global/is_private documentation It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). Co-authored-by: Petr Viktorin <encukou@gmail.com>
…ation (pythonGH-113186) * pythonGH-65056: Improve the IP address' is_global/is_private documentation It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). Co-authored-by: Petr Viktorin <encukou@gmail.com>
…ation (pythonGH-113186) * pythonGH-65056: Improve the IP address' is_global/is_private documentation It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). Co-authored-by: Petr Viktorin <encukou@gmail.com>
…ges (GH-113179) (GH-113186) (GH-118177) * GH-113171: Fix "private" (non-global) IP address ranges (GH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] #61602 * GH-65056: Improve the IP address' is_global/is_private documentation (GH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…s ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…s ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…s ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…s ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…ges (GH-113179) (GH-113186) (GH-118177) (GH-118229) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] #61602 In 3.10 and below, is_private checks whether the network and broadcast address are both private. In later versions (where the test wss backported from), it checks whether they both are in the same private network. For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private, but one is in 0.0.0.0/8 ("This network") and the other in 255.255.255.255/32 ("Limited broadcast"). --------- Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
…es (GH-113179) (GH-113186) (GH-118177) (GH-118479) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] #61602 In 3.10 and below, is_private checks whether the network and broadcast address are both private. In later versions (where the test wss backported from), it checks whether they both are in the same private network. For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private, but one is in 0.0.0.0/8 ("This network") and the other in 255.255.255.255/32 ("Limited broadcast"). --------- Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
|
For visibility: I created GH-119812 to handle the Shared Address Space ( |
Sorry, something went wrong.
…113179) (pythonGH-113186) (pythonGH-118177) (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) pythongh-113171: pythongh-65056: Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) Add IPv6 addresses to suspignore.csv That's a lot of semicolons! (cherry picked from commit e366724) Add notable changes
…113179) (pythonGH-113186) (pythonGH-118177) * Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) pythongh-113171: pythongh-65056: Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) Add IPv6 addresses to suspignore.csv That's a lot of semicolons! (cherry picked from commit e366724)
…113179) (pythonGH-113186) (pythonGH-118177) * Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) pythongh-113171: pythongh-65056: Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) Add IPv6 addresses to suspignore.csv That's a lot of semicolons! (cherry picked from commit e366724)
…113179) (pythonGH-113186) (pythonGH-118177) * Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) pythongh-113171: pythongh-65056: Fix "private" (non-global) IP address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186) It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed). (cherry picked from commit 2a4cbf1) (cherry picked from commit 40d75c2) --------- (cherry picked from commit f86b17a) Co-authored-by: Jakub Stasiak <jakub@stasiak.at> (cherry picked from commit 05a1467) Add IPv6 addresses to suspignore.csv That's a lot of semicolons! (cherry picked from commit e366724)
… address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (pythonGH-118472) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 In 3.10 and below, is_private checks whether the network and broadcast address are both private. In later versions (where the test wss backported from), it checks whether they both are in the same private network. For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private, but one is in 0.0.0.0/8 ("This network") and the other in 255.255.255.255/32 ("Limited broadcast"). --------- Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
… address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (pythonGH-118472) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 In 3.10 and below, is_private checks whether the network and broadcast address are both private. In later versions (where the test wss backported from), it checks whether they both are in the same private network. For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private, but one is in 0.0.0.0/8 ("This network") and the other in 255.255.255.255/32 ("Limited broadcast"). --------- Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
… address ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177) (pythonGH-118472) The _private_networks variables, used by various is_private implementations, were missing some ranges and at the same time had overly strict ranges (where there are more specific ranges considered globally reachable by the IANA registries). This patch updates the ranges with what was missing or otherwise incorrect. 100.64.0.0/10 is left alone, for now, as it's been made special in [1]. The _address_exclude_many() call returns 8 networks for IPv4, 121 networks for IPv6. [1] python#61602 In 3.10 and below, is_private checks whether the network and broadcast address are both private. In later versions (where the test wss backported from), it checks whether they both are in the same private network. For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private, but one is in 0.0.0.0/8 ("This network") and the other in 255.255.255.255/32 ("Limited broadcast").
It wasn't clear what the semantics of is_global/is_private are and, when one gets to the bottom of it, it's not quite so simple (hence the exceptions listed).
I opted to fully replace the docstrings with the content from the documentation to save myself some work.
📚 Documentation preview 📚: https://cpython-previews--113186.org.readthedocs.build/