def_parse_config(self,inst_name:str,instruction:dict):split_key='split_config'try:split_strategy=SplitType[instruction[split_key]["split_strategy"].upper()]training_percentage=float(instruction[split_key]["training_percentage"])ifsplit_strategy==SplitType.RANDOMelse-1assertinstruction[split_key]["split_count"]==1, \
"SplitDatasetParser: this instruction only supports splitting the dataset into two."assertsplit_strategyin[SplitType.RANDOM,SplitType.MANUAL], \
(f"SplitDatasetParser: this instruction only supports the following split strategies: [RANDOM, MANUAL],"f" got {split_strategy}.")ifsplit_strategy==SplitType.MANUAL:ParameterValidator.assert_keys(keys=instruction[split_key]["manual_config"].keys(),valid_keys=["train_metadata_path","test_metadata_path"],location=SplitDatasetParser.__name__,parameter_name="manual_config",exclusive=True)ParameterValidator.assert_valid_tabular_file(instruction[split_key]["manual_config"]["train_metadata_path"],location=SplitDatasetParser.__name__,parameter_name="train_metadata_path")ParameterValidator.assert_valid_tabular_file(instruction[split_key]["manual_config"]["test_metadata_path"],location=SplitDatasetParser.__name__,parameter_name="test_metadata_path")returnSplitConfig(split_strategy=split_strategy,split_count=int(instruction[split_key]["split_count"]),training_percentage=training_percentage,reports=None,manual_config=ManualSplitConfig(**instruction[split_key]["manual_config"])if"manual_config"ininstruction[split_key]elseNone,leave_one_out_config=None)exceptKeyErroraskey_error:raiseKeyError(f"{SplitDatasetParser.__name__}: parameter {key_error.args[0]} was not defined under {split_key} "f"in instruction {inst_name}.")fromkey_error