On Sat, 26 Sep 2009 11:23:14 pm Barry Scott wrote: > I've seen user interfaces accept 192.168.1.1/24 as a short cut > to set the ipaddr and netmask on an interface. > > For that use being able to parse that string into an IP Address and > a Net Mask is what they want.
I think you're at least the second person who has requested this functionality, or something similar. > If this is a common idiom having a utility function that returned > an IPv4Address('192.168.1.1') and IPv4Network('192.168.0.0') > would be useful. > > If someone really thinks that '192.168.1.1/16' is a network any > good UI should detect it is invalid report that to the user. Currently the ipaddr module accepts that without complaint: >>> ipaddr.IPv4Network('192.168.1.1/16') IPv4Network('192.168.1.1/16') 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 False >>> list(netw1) == list(netw2) True Two networks, containing exactly the same range of addresses, but they don't compare equal. I'm not convinced that netw1 should even be allowed, but if it is, surely it should be turned into canonical form netw2? E.g. I would expect this: >>> ipaddr.IPv4Network('192.168.1.1/24') IPv4Network('192.168.1.0/24') but that's not what it does. -- Steven D'Aprano _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com