[Python-Dev] PEP 3144 review.

Antoine Pitrou solipsis at pitrou.net
Wed Sep 16 02:20:41 CEST 2009


Peter Moody <peter <at> hda3.com> writes:
> 
> >>>> However, I do not think
> >>>> that the proposed API should accept, eg, IPv4Network('192.168.1.1/24')
> >>>> as valid.  That's just too confusing and error prone.
> >>>
> >>> Indeed, it should throw some kind of ValueError instead.
> >>
> >> Peter, what do you think?
> 
> I disagree. It seems overly pedantic to throw a valueerror on this.
> IPy does (used to do?) this and it's one of the primary reasons I
> wrote ipaddr.

Python is not PHP and does not try to be overly "smart" or tolerant when faced
with bizarrely-formatted input.

I don't see any valid reason for entering a network as "192.168.1.1/24" rather
than the canonical "192.168.1.0/24". The former might indicate a typing error or
a mental slip, so let's be helpful and signal it to the user.

> for addr in ipaddr.IPv4Network('1.1.1.0/24').iterwithnetmask():
>   # 1.1.1.0/24, 1.1.1.1/24, 1.1.1.2/24...

I don't have any strong feelings about it, although I don't really think it is
needed, and a plethoric API is not a good thing (neither clarity-wise nor
maintenance-wise).

> this can be done much more cleanly/easily than adding two new
> (redundant in my eyes) classes and much less pedantically than raising
> exceptions w/ IPv?Network() constructor received something other than
> base network address.

I don't think anybody suggested adding two classes. As for the "pedantry" of
thoroughly validating inputs, see above.

Regards

Antoine.




More information about the Python-Dev mailing list