On Apr 4, 2020, at 12:45, Pete Wicken firstname.lastname@example.org wrote:
Agreed that this could be achieved by a third party library; and probably already is - but the ipaddress module in Python could also have been one.
Well, it was. Go read PEP 3144 that added it, and the discussion threads behind it. For years, there were attempts to propose an IP address library to Python that didn’t even make it as far as the PEP stage. Finally someone proposed adopting Google’s ipaddr—which wasn’t quite a category killer, but was very popular, and had a stable API, and the authors were willing to donate it. And it was rejected. Peter Moody took all the issues that came of during that discussion and forked ipaddr and came up with a new design that answered all of people’s concerns. He published a reference implementation and for months took feedback on it and improved it. Then he was ready to propose that for provisional acceptance into the stdlib (and to convert the external package into a backport for older versions of Python if it was accepted). And, after another round of bikeshedding, it got in.
The existence of ipaddress should make the process for macaddress easier. (For one thing, a lot of design questions where two options seem good can be answered quickly by saying “ipaddress has the same question, see this thread, and they decided on A, so netaddress should also decide on A, both for the same reasons and for compatibility with ipaddress”.) But it still has to be done.
If there already is a good library on PyPI today, it would make more sense to adopt it, or to use it as a starting point, than to start from scratch. The same way ipaddress happened—but hopefully less work.
If there isn’t a good existing candidate, so it has to be designed from scratch, very few things go directly into the stdlib. Even things that are designed from the start to land there, like tulip (designed to become asyncio, which it did) and regex (designed to replace re, which it still hasn’t after 8 years or work) are almost always shared and used in the field before they’re proposed for inclusion (and then converted into a backport after inclusion). Although again, the process should be a lot easier with macaddress than with something as complicated as regex or as unprecedented as tulip.