Parameters
        ----------
        data: 
            it is an object which has keys 'parameter_id', 'value', 'trial_job_id', 'type', 'sequence'.
        
        Raises
        ------
        ValueError
            Data type not supported

def handle_report_metric_data(self, data):
        """
        Parameters
        ----------
        data: 
            it is an object which has keys 'parameter_id', 'value', 'trial_job_id', 'type', 'sequence'.
        
        Raises
        ------
        ValueError
            Data type not supported
        """
        value = extract_scalar_reward(data['value'])
        bracket_id, i, _ = data['parameter_id'].split('_')
        bracket_id = int(bracket_id)
        if data['type'] == 'FINAL':
            # sys.maxsize indicates this value is from FINAL metric data, because data['sequence'] from FINAL metric
            # and PERIODICAL metric are independent, thus, not comparable.
            self.brackets[bracket_id].set_config_perf(int(i), data['parameter_id'], sys.maxsize, value)
            self.completed_hyper_configs.append(data)
        elif data['type'] == 'PERIODICAL':
            self.brackets[bracket_id].set_config_perf(int(i), data['parameter_id'], data['sequence'], value)
        else:
            raise ValueError('Data type not supported: {}'.format(data['type']))