code: def unpack(self, buff, offset=0):
          
          super().unpack(buff, offset)
          if not self.is_valid():
              raise UnpackException("Unsupported protocols in ARP packet")
docs: Unpack a binary struct into this object's attributes.
  
          Return the values instead of the lib's basic types.
          Check if the protocols involved are Ethernet and IPv4. Other protocols
          are currently not supported.
  
          Args:
              buff (bytes): Binary buffer.
              offset (int): Where to begin unpacking.
  
          Raises:
              :exc:`~.exceptions.UnpackException`: If unpack fails.