def METHOD_NAME(
    self, steps: Union[List[PipelineStep], Set[PipelineStep], Tuple[PipelineStep]]
) -> Set[PipelineStep]:
    """Validate that the provided steps are a set of  PipelineStep objects.
    Parameters
    ----------
    steps : list, set, or tuple of :class:`~verta.deployment.PipelineStep`
        List, set, or tuple of steps provided by a user.
    Returns
    -------
    set of :class:`~verta.deployment.PipelineStep`
        The same set of steps if validation is successful.
    Raises
    ------
    TypeError
        If steps is not a set of PipelineStep objects.
    """
    if not isinstance(steps, (list, set, tuple)):
        raise TypeError(
            f"steps must be type list, set, or tuple, not {type(steps)}"
        )
    for step in steps:
        if not isinstance(step, PipelineStep):
            raise TypeError(
                f"individual steps of a PipelineGraph must be type"
                f" PipelineStep, not {type(step)}."
            )
        # throw an exception if any step's predecessors attr has been inappropriately mutated.
        step._validate_predecessors(step.predecessors)
    if len([s.name for s in steps]) != len(set([s.name for s in steps])):
        raise ValueError("step names must be unique within a PipelineGraph")
    return steps