@classmethod<EOL><INDENT>def parse(cls, fptr, offset, length):<DEDENT>
num_bytes = offset + length - fptr.tell()<EOL>read_buffer = fptr.read(num_bytes)<EOL>mask_length, = struct.unpack_from('<STR_LIT>', read_buffer, offset=<NUM_LIT:0>)<EOL>fuam = dcm = standard_flag = standard_mask = []<EOL>vendor_feature = vendor_mask = []<EOL>try:<EOL><INDENT>mask_format = {<NUM_LIT:1>: '<STR_LIT:B>', <NUM_LIT:2>: '<STR_LIT:H>', <NUM_LIT:4>: '<STR_LIT:I>', <NUM_LIT:8>: '<STR_LIT>'}[mask_length]<EOL>fuam, dcm = struct.unpack_from('<STR_LIT:>>' + mask_format * <NUM_LIT:2>, read_buffer,<EOL>offset=<NUM_LIT:1>)<EOL>std_flg_offset = <NUM_LIT:1> + <NUM_LIT:2> * mask_length<EOL>data = _parse_standard_flag(read_buffer[std_flg_offset:],<EOL>mask_length)<EOL>standard_flag, standard_mask = data<EOL>nflags = len(standard_flag)<EOL>vndr_offset = <NUM_LIT:1> + <NUM_LIT:2> * mask_length + <NUM_LIT:2> + (<NUM_LIT:2> + mask_length) * nflags<EOL>data = _parse_vendor_features(read_buffer[vndr_offset:],<EOL>mask_length)<EOL>vendor_feature, vendor_mask = data<EOL><DEDENT>except KeyError:<EOL><INDENT>msg = ('<STR_LIT>'<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL>warnings.warn(msg.format(length=mask_length), UserWarning)<EOL><DEDENT>return cls(fuam, dcm, standard_flag, standard_mask,<EOL>vendor_feature, vendor_mask,<EOL>length=length, offset=offset)<EOL>
Parse reader requirements box.

        Parameters
        ----------
        fptr : file
            Open file object.
        offset : int
            Start position of box in bytes.
        length : int
            Length of the box in bytes.

        Returns
        -------
        ReaderRequirementsBox
            Instance of the current reader requirements box.