- Python Home
- About
- News
- Documentation
- Downloads
- Community
- Foundation
- Developer's Guide
- Issue Tracker
- Issues
- Summaries
- User
- Administration
- Help
Issue42861
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2021-01-08 00:30 by fasial.mahmood94, last changed 2022-04-11 14:59 by admin.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 24180 | open | fasial.mahmood94, 2021-01-09 19:36 | |
| Messages (4) | |||
|---|---|---|---|
| msg384623 - (view) | Author: Faisal Mahmood (fasial.mahmood94) * | Date: 2021-01-08 00:30 | |
The ipaddress module in Python is an excellent tool, but I noticed it is missing a feature that I needed several months ago, which is the ability to find the next closest subnet with a specific prefix length.
For example, imagine I had a IPv4Network("10.10.0.72/30"), how would I find the next possible /25 address? It is not the most straightforward thing to do, so think it would be a great enhancement to the ipaddress library.
I think this can be achieved by adding in a new method to the BaseNetwork class, the method could be defined like "next_prefix(next_prefix=None)". Calling this method would return an IPv4/v6 address that is the closest possible match with the new prefix (defined as next_prefix).
Example calls:
v4 = IPv4Network("10.10.0.72/30")
next_network = v4.next_subnet(next_prefix=25)
# Output: next_network = IPv4Network("10.10.0.128/25")
v4 = IPv4Network("10.10.0.72/30")
next_network = v4.next_subnet(next_prefix=30)
# Output: next_network = IPv4Network("10.10.0.76/30")
v4 = IPv4Network("10.10.0.72/30")
next_network = v4.next_subnet() # if next_prefix is not defined it will use the existing prefix of /30, so this call is exactly the same as the previous
# Output: next_network = IPv4Network("10.10.0.76/30")
v6 = IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaaa:0000/112")
next_network = v6.next_subnet()
# Output: next_network = IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaab:0/112")
v6 = IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaaa:0000/112")
next_network = v6.next_subnet(next_prefix=64)
# Output: next_network = IPv6Network("2001:db8:aaaa:aaab::/64")
I am going to be working on this and plan to raise a PR soon. This is my first time contributing to Python, so I appreciate your help / comments / suggestions / guidance as I go along.
|
|||
| msg384624 - (view) | Author: Faisal Mahmood (fasial.mahmood94) * | Date: 2021-01-08 00:33 | |
Not sure how to edit an issue, but I made a mistake, where I said: "...Calling this method would return an IPv4/v6 address that is the closest possible match..." I meant to say: "...Calling this method would return an IPv4/v6 -NETWORK- that is the closest possible match..." |
|||
| msg384732 - (view) | Author: Faisal Mahmood (fasial.mahmood94) * | Date: 2021-01-09 16:19 | |
Updated the title and method naming, I previously mentioned the "next subnet" and called the method "next_subnet", but technically this is wrong. What this method should be doing is finding the next closest network of prefix size n. So I guess the method definition should be: `next_network(self, next_network=None)` |
|||
| msg386648 - (view) | Author: Faisal Mahmood (fasial.mahmood94) * | Date: 2021-02-08 19:52 | |
Bump :) |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:40 | admin | set | github: 87027 |
| 2021-07-17 22:04:30 | eric.smith | set | nosy:
+ eric.smith |
| 2021-02-15 16:48:33 | eric.araujo | set | nosy:
+ pmoody title: ipaddress - add ability to get next closet network of any prefix size -> ipaddress - add ability to get next closest network of any prefix size |
| 2021-02-08 19:52:34 | fasial.mahmood94 | set | messages: + msg386648 |
| 2021-01-09 19:36:24 | fasial.mahmood94 | set | keywords:
+ patch stage: patch review pull_requests: + pull_request23006 |
| 2021-01-09 16:19:40 | fasial.mahmood94 | set | messages:
+ msg384732 title: ipaddress - add ability to get next closet subnet of any prefix size -> ipaddress - add ability to get next closet network of any prefix size |
| 2021-01-08 00:33:20 | fasial.mahmood94 | set | messages: + msg384624 |
| 2021-01-08 00:30:51 | fasial.mahmood94 | create | |

