Last Fall, Guido opened a ticket to include Google's ipaddr.py in the standard lib: http://bugs.python.org/issue3959
There has been some recent discussion on that ticket, enough so that it might benefit everyone if it was moved on to the dev list. I do recommend reading that ticket, though -- lots of good perspectives are represented. The two libraries that are being discussed the most for possible inclusion are the following: * http://code.google.com/p/ipaddr-py/wiki/IPAddrExmples * http://code.google.com/p/netaddr/wiki/NetAddrExamples The most immediately obvious differences between the two are: * ipaddr supports subnet/supernet/net exclusions * netaddr supports EUI/MAC address manipulations * the netaddr API differentiates between an IP and a CIDR block * netaddr supports wildcard notation * netaddr supports binary representations of addresses * ipaddr is one module whereas netaddr consists of several (as well as IANA data for such things as vendor lookups on MAC addresses) * ipaddr benchmarks as faster than netaddr * netaddr is currently PEP-8 compliant That's a quick proto-assessment based on looking at examples and unit tests and didn't include a thorough evaluation of the code itself. Martin provided some very nice guidelines in a comment on the ticket: "I think Guido's original message summarizes [what we need]: a module that fills a gap for address manipulations... In addition, it should have all the organisational qualities (happy user base, determined maintainers, copyright forms, documentation, tests). As to what precisely its API should be - that is for the experts (i.e. you) to determine. I personally think performance is important, in addition to a well-designed, useful API. Conformance to PEP 8 is also desirable." I'm planning to chat with both David Moss (netaddr) and Peter Moody (ipaddr) on the mail lists about API details, and I encourage others to do this as well. As for this list, it's probably important to define the limits of the desired feature set for an ip address manipulation library: * do we want to limit it to IP (i.e. no EUI/MAC support)? * do we want a single module or is a package acceptable? * what features would folks consider essential or highly desirable (details on this will be discussed on the project mail lists) * other thoughts? d _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com