[Python-Dev] PEP 3144 review.

R. David Murray rdmurray at bitdance.com
Tue Sep 15 21:09:08 CEST 2009


On Tue, 15 Sep 2009 at 18:43, Antoine Pitrou wrote:
> R. David Murray <rdmurray <at> bitdance.com> writes:
>>
>>      x = IPv4AddressWithMask('192.168.1.1/24')
>>      x.network == IPv4Network('192.168.1.0/24')
>>      x.network[1] == x
>
> I don't think we need an IPAddressWithMask which would just complicate the API
> without any obvious benefit.
> We just need a factory function which returns a tuple after parsing:
>
>    >>> addr, net = parse_address_with_mask('192.168.1.1/24')
>    >>> addr == IPv4Address('192.168.1.1')
>    True
>    >>> net == IPv4Network('192.168.1.0/24')
>    True

I would find that acceptable but sub-optimal.  Most of my use cases
(which involve manipulating router and firewall configuration files) would
then start by making a little class named AddressWithNetwork to hold the
tuple returned by your parse function, with attributes 'ip' and 'network'
and a representation that included the netmask.

Other people's use cases would look like addr, _ = parse_address...

An IPv4Address with 'network' and 'mask' attributes that could be
None would also not complicate the API, IMO, and would handle both
of these use cases.

--David


More information about the Python-Dev mailing list