[Python-Dev] PEP 3144 review. (original) (raw)

Andrew McNamara andrewm at object-craft.com.au
Tue Sep 15 04:11:30 CEST 2009


I believe PEP 3144 is ready for your review. When you get a chance, can you take a look/make a pronouncement?

In my experience it is common to leave out the masked octets when referring to an IPv4 network (the octets are assumed to be zero), so I don't agree with this behaviour from the reference implementation:

>>> ipaddr.IPv4Network('10/8')
IPv4Network('0.0.0.10/8')
>>> ipaddr.IPv4Network('192.168/16')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/src/py/ipaddr/ipaddr.py", line 1246, in __init__
    raise IPv4IpValidationError(addr[0])
ipaddr.IPv4IpValidationError: '192.168' is not a valid IPv4 address

I also couldn't see an easy way to get from a network address to the containing network. For example:

>>> ipaddr.IPv4Network('192.168.1.1/16')
IPv4Network('192.168.1.1/16')

This is close:

>>> ipaddr.IPv4Network('192.168.1.1/16').network
IPv4Address('192.168.0.0')

What I want is a method that returns:

IPv4Network('192.168.0.0/16')

I appreciate these requests are somewhat contradictory (one calls for masked octets to be insignificant, the other calls for them to be significant), but they are both valid use cases in my experience.

Apologies if these have already been covered in prior discussion - I've tried to keep up, but I haven't been able to give it the attention it deserves.

I also note that many methods in the reference implementation are not discussed in the PEP. While I don't consider this a problem for the PEP, anyone reviewing the module for inclusion in the standard lib needs to consider them.

-- Andrew McNamara, Senior Developer, Object Craft http://www.object-craft.com.au/



More information about the Python-Dev mailing list