def METHOD_NAME(self, inputs: List[Cube]) -> None:
    """
    Separates input CubeList into CAPE and precipitation rate objects with standard units
    and raises Exceptions if it can't, or finds excess data.
    Args:
        inputs:
            List of Cubes containing exactly one of CAPE and Precipitation rate.
    Raises:
        ValueError:
            If additional cubes are found
    """
    cubes = CubeList(inputs)
    try:
        (self.cape, self.precip) = cubes.extract(self.cube_names)
    except ValueError as e:
        raise ValueError(
            f"Expected to find cubes of {self.cube_names}, not {[c.name() for c in cubes]}"
        ) from e
    if len(cubes) > 2:
        extras = [c.name() for c in cubes if c.name() not in self.cube_names]
        raise ValueError(f"Unexpected Cube(s) found in inputs: {extras}")
    if not spatial_coords_match(inputs):
        raise ValueError(f"Spatial coords of input Cubes do not match: {cubes}")
    time_error_msg = self._input_times_error()
    if time_error_msg:
        raise ValueError(time_error_msg)
    self.cape.convert_units("J kg-1")
    self.precip.convert_units("mm h-1")
    if self.model_id_attr:
        if (
            self.cape.attributes[self.model_id_attr]
            != self.precip.attributes[self.model_id_attr]
        ):
            raise ValueError(
                f"Attribute {self.model_id_attr} does not match on input cubes. "
                f"{self.cape.attributes[self.model_id_attr]} != "
                f"{self.precip.attributes[self.model_id_attr]}"
            )