[issue28577] ipaddress.ip_network(...).hosts() returns nothing for an IPv4 /32

era report at bugs.python.org
Tue Nov 1 04:16:05 EDT 2016


era added the comment:

@xiang.zhang thanks for the quick reply.

I find this behavior surprising.  If I process a list of addresses, like

    ips = (
     '10.9.8.7/32'
     '10.11.12.8/28'
    )

    for test in ['10.9.8.7', '10.11.12.10']:
      if test in [str(y) for x in ips for y in ipaddress.ip_network(x).hosts()]:
        print('{0} found'.format(test))
      else:
        print('{0} not found'.format(test))

I would expect both addresses to print "found", but that's not how the current implementation works.

I agree that the /28 should not include the gateway and broadcast addresses, but I would not expect the explicitly listed /32 address to completely disappear from the output.

Are my expectations incorrect?  For code like this, what should I use instead, if not hosts()?

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue28577>
_______________________________________


More information about the Python-bugs-list mailing list