def __init__(
        self,
        dataset: Dataset,
        transforms: Callable = None,
        transform_left: Callable = None,
        transform_right: Callable = None,
        transform_original: Callable = None,
        is_target: bool = True,
    ) -> None:
        """
        Args:
            dataset: original dataset for augmentation
            transforms: transforms which will be applied to original batch to get both
            left and right output batch.
            transform_left: transform only for left batch
            transform_right: transform only for right batch
            transform_original: transforms which will be applied
                to save original in batch
            is_target: the flag for selection does dataset return (sample, target)
                or only sample

        Raises:
            ValueError: should be specified transform_left
                and transform_right simultaneously
                or only transforms
        """
        super().__init__()

        if transform_right is not None and transform_left is not None:
            self.transform_right = transform_right
            self.transform_left = transform_left
        elif transforms is not None:
            self.transform_right = transforms
            self.transform_left = transforms
        else:
            raise ValueError(
                "Specify `transform_left` and `transform_right` simultaneously "
                "or only `transforms`."
            )
        self.transform_original = transform_original
        self.dataset = dataset
        self.is_target = is_target

        Args:
            dataset: original dataset for augmentation
            transforms: transforms which will be applied to original batch to get both
            left and right output batch.
            transform_left: transform only for left batch
            transform_right: transform only for right batch
            transform_original: transforms which will be applied
                to save original in batch
            is_target: the flag for selection does dataset return (sample, target)
                or only sample

        Raises:
            ValueError: should be specified transform_left
                and transform_right simultaneously
                or only transforms
        
catalyst/data/dataset.py