BEst thing you can do is create an issue on bugs.python.org and attach a pull request that makes _BaseNetwork a subclass of Sequence. Then maybe the advantages will be clear -- or maybe in the process of writing the code you realize that the idea is not so good after all. (I'm not a user of this class so I don't have an opinion either way.)
On Tue, Oct 26, 2021 at 6:41 AM <nyuszik...@gmail.com> wrote: > Currently, ipaddress._BaseNetwork (and by extension, ipaddress.IPv4Network > and ipaddress.IPv6Network) does not have a __len__ method, it only has > num_addresses. > > This makes the following code not work: > > >>> random.choice(ipaddress.ip_network('6.0.0.0/8')) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/home/nyuszika7h/.pyenv/versions/3.10.0/lib/python3.10/random.py", > line 378, in choice > return seq[self._randbelow(len(seq))] > TypeError: object of type 'IPv4Network' has no len() > > The workaround is a bit ugly: > > >>> (network := ipaddress.ip_network(' > 6.0.0.0/8'))[random.randrange(network.num_addresses > <http://6.0.0.0/8'))%5Brandom.randrange(network.num_addresses>)] > IPv4Address('6.60.184.142') > > With a custom subclass, all works well: > > >>> class MyIPv4Network(ipaddress.IPv4Network): > ... def __len__(self): > ... return self.num_addresses > ... > >>> random.choice(MyIPv4Network('6.0.0.0/8')) > IPv4Address('6.40.110.63') > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/4OHZ6QZWDI3U2ADI5A36UU73OOXFOGJE/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/7SLNYEPBUJMZY2JL6YJCJZJKUKJCM2AK/ Code of Conduct: http://python.org/psf/codeofconduct/