[Python-Dev] PEP 3144 review.
peter at hda3.com
Sun Sep 27 07:54:21 CEST 2009
On Sat, Sep 26, 2009 at 10:38 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> Peter Moody wrote:
>> I again invite interested parties to continue this discussion on
>> ipaddr-py-dev at googlegroups.com. we're pushing 250 messages on PEP
>> 3144 at this point; well beyond what most folks would call a "long
>> open-ended discussion".
>>> The current behaviour is confusing to me. For example:
>>>>>> netw1 = ipaddr.IPv4Network('192.168.1.1/24')
>>>>>> netw2 = ipaddr.IPv4Network('192.168.1.0/24')
>>>>>> netw1 == netw2
>>>>>> list(netw1) == list(netw2)
>> I think you're intentionally confusing yourself here. 192.168.1.1
>> clearly doesn't equal 192.168.1.0, so I don't know why you'd expect
>> 192.168.1.1/24 to equal 192.168.1.0/24.
> No, this is exactly the "dual purpose" nature of IPNetwork that people
> have been complaining about: 192.168.1.1 & 255.255.255.0 == 192.168.1.0
> & 255.255.255.0, so the two objects describe the exact same network, but
> the network objects don't currently respect their own netmask, instead
> remembering which particular host happened to be used to derive the
> network ID.
> "Arbitrary network host with associated netmask" and "IP Network" are
> different concepts, but the library currently uses a single class
> interface (IPNetwork) for both of them.
> What we're asking for is for the "ip" attribute to be removed from IP
> Network, with the constructor either forgetting the host IP that was
> used to derive the network address, or else only accepting the correct
> network address in the constructor and providing a separate helper
> function or class method to create an IPNetwork object from an arbitrary
what you want is strict=True, just checked in. I've been meaning to
send an update to the PEP explaining why this choice was made. I'm
hoping this will ameliorate your confusion.
> Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-Dev