Read as many bytes as are required to extract struct then
        unpack and return a tuple of the values.

        Raises
        ------
        UnderflowDecodeError
            Raised when a read failed to extract enough bytes from the
            underlying stream to extract the bytes.

        Parameters
        ----------
        struct: struct.Struct

        Returns
        -------
        tuple
            Tuple of extracted values.

def unpack(self, struct):
        """Read as many bytes as are required to extract struct then
        unpack and return a tuple of the values.

        Raises
        ------
        UnderflowDecodeError
            Raised when a read failed to extract enough bytes from the
            underlying stream to extract the bytes.

        Parameters
        ----------
        struct: struct.Struct

        Returns
        -------
        tuple
            Tuple of extracted values.
        """
        v = struct.unpack(self.read(struct.size))
        return v