def ip_interface(address):
try:<EOL><INDENT>return IPv4Interface(address)<EOL><DEDENT>except (AddressValueError, NetmaskValueError):<EOL><INDENT>pass<EOL><DEDENT>try:<EOL><INDENT>return IPv6Interface(address)<EOL><DEDENT>except (AddressValueError, NetmaskValueError):<EOL><INDENT>pass<EOL><DEDENT>raise ValueError('<STR_LIT>' %<EOL>address)<EOL>
Take an IP string/int and return an object of the correct type.

    Args:
        address: A string or integer, the IP address.  Either IPv4 or
          IPv6 addresses may be supplied; integers less than 2**32 will
          be considered to be IPv4 by default.

    Returns:
        An IPv4Interface or IPv6Interface object.

    Raises:
        ValueError: if the string passed isn't either a v4 or a v6
          address.

    Notes:
        The IPv?Interface classes describe an Address on a particular
        Network, so they're basically a combination of both the Address
        and Network classes.