def METHOD_NAME(
    self,
    input_data: Union[
        pd.DataFrame,
        List[Dict[str, float]],
        Dict[str, List[float]],
        Dict[str, float],
    ],
) -> pd.DataFrame:
    """
    Evaluate data using the evaluator and wait for results.
    Adds results to the internal dataframe.
    """
    # translate input data into pandas dataframes
    if not isinstance(input_data, DataFrame):
        try:
            input_data = DataFrame(input_data)
        except ValueError:
            input_data = DataFrame(input_data, index=[0])
    logger.debug(f"Evaluating {len(input_data)} inputs")
    self.vocs.validate_input_data(input_data)
    output_data = self.evaluator.METHOD_NAME(input_data)
    if self.strict:
        validate_outputs(output_data)
    new_data = pd.concat([input_data, output_data], axis=1)
    # explode any list like results if all of the output names exist
    new_data = explode_all_columns(new_data)
    self.add_data(new_data)
    # dump data to file if specified
    self.dump_state()
    return new_data