def __init__(
        self,
        nb_samples: int,
        clip_values: tuple[float, float],
        angles: float | tuple[float, float] | list[float] = 45.0,
        label_type: str = "classification",
        apply_fit: bool = False,
        apply_predict: bool = True,
    ) -> None:
        """
        Create an instance of EoTImageRotationPyTorch.

        :param nb_samples: Number of random samples per input sample.
        :param clip_values: Tuple of the form `(min, max)` representing the minimum and maximum values allowed
                            for features.
        :param angles: In degrees and counter-clockwise. If a positive scalar it defines the uniform sampling range from
                       negative to positive value. If a tuple of two scalar angles it defines the uniform sampling
                       range from minimum to maximum angles. If a list of scalar values it defines the discrete angles
                       that will be sampled. For `label_type="object_detection"` only a list of multiples of 90 degrees
                       is supported.
        :param label_type: String defining the type of labels. Currently supported: `classification`, `object_detection`
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        """
        super().__init__(
            apply_fit=apply_fit, apply_predict=apply_predict, nb_samples=nb_samples, clip_values=clip_values
        )

        self.angles = angles
        self.angles_range = (-angles, angles) if isinstance(angles, (int, float)) else angles
        self.label_type = label_type
        self._check_params()

        Create an instance of EoTImageRotationPyTorch.

        :param nb_samples: Number of random samples per input sample.
        :param clip_values: Tuple of the form `(min, max)` representing the minimum and maximum values allowed
                            for features.
        :param angles: In degrees and counter-clockwise. If a positive scalar it defines the uniform sampling range from
                       negative to positive value. If a tuple of two scalar angles it defines the uniform sampling
                       range from minimum to maximum angles. If a list of scalar values it defines the discrete angles
                       that will be sampled. For `label_type="object_detection"` only a list of multiples of 90 degrees
                       is supported.
        :param label_type: String defining the type of labels. Currently supported: `classification`, `object_detection`
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        
art/preprocessing/expectation_over_transformation/image_rotation/pytorch.py