Filters phases. If no arguments are passed all phases are returned. Arguments must be key value pairs, with
        phase, data or pipeline as the key.

        Parameters
        ----------
        kwargs
            Filters, e.g. pipeline=pipeline1

def phases_with(self, **kwargs) -> [PhaseOutput]:
        """
        Filters phases. If no arguments are passed all phases are returned. Arguments must be key value pairs, with
        phase, data or pipeline as the key.

        Parameters
        ----------
        kwargs
            Filters, e.g. pipeline=pipeline1
        """
        return [phase for phase in self.phases if
                all([getattr(phase, key) == value for key, value in kwargs.items()])]