def __init__(self, interface_names, protocol):
        if not interface_names:
            raise ValueError('interface_names must be a non-empty list of '
                             'network interface names to bind to.')
        self.protocol = protocol
        # A 3-tuple of (interface_name, socket, ifreq object)
        self.interfaces = [(name, self._get_socket(), ifreq())
                           for name in interface_names]
Asserts that `topic` is like (similar to) `expected`. Allows some leeway.
dataset/ETHPy150Open openstack/ironic-python-agent/ironic_python_agent/netutils.py/RawPromiscuousSockets.__init__--crossover with--dataset/ETHPy150Open heynemann/preggy/preggy/assertions/like.py/to_be_like