j...@wxcvbn.org (Jérémie Courrèges-Anglas) writes:

> j...@wxcvbn.org (Jérémie Courrèges-Anglas) writes:
>
>> Daniel Jakots <vigdis+o...@chown.me> writes:
>>
>>> Hi,
>>>
>>> I wanted to add a py3 flavor to net/py-ripe.atlas.tools which depends
>>> on net/py-ripe.atlas.sagan wich itself depends on py-IP, hence this
>>> diff.
>>>
>>> I only tried py-ripe.atlas.tools so please test it, thanks.
>>
>> As I said the tests fail with python3.4 on i386:
>>
>>   https://pbot.rmdir.de/3I3_OxgyBOqIqgR3KtBWLw
>>
>> The reason is that IPy.IP() defines a __nonzero__() method, but python
>> 3 tries to use __bool__() instead, falling back to __len__().  Adding
>> a __bool__ method fixes the regress tests, but the len() method
>> remains broken on 32 bits, using python2.7 or python3.4.
>
> So here's a diff including the mentioned fix.  It should be reported
> upstream, mentioning the len() problem would be worth it too.

Just so that nobody wastes time on this, the problem about the len()
builtin function calling __len__() is normal and already known by
upstream:

    def __len__(self):
        """
        Return the length of a subnet.

        Called to implement the built-in function len().
        It will break with large IPv6 Networks.
        Use the object's len() instead.
        """
        return self.len()

It's just that it will also break with IPv4 networks 0.0.0.0/0,
0.0.0.0/1 and 128.0.0.0/1, which contain more than INT32_MAX addresses.

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to