def __init__(
        self,
        low_quantile: Union[Sequence[float], float, None] = None,
        high_quantile: Union[Sequence[float], float, None] = None,
    ) -> None:
        """Quantile Detector

        Flags values that are either below or above the `low_quantile` and `high_quantile` quantiles
        of historical data, respectively.

        If a single value is provided for `low_quantile` or `high_quantile`, this same value will be
        used across all components of the series.

        If sequences of values are given for the parameters `low_quantile` and/or `high_quantile`,
        they must be of the same length, matching the dimensionality of the series passed
        to `fit()`, or have a length of 1. In the latter case, this single value will be used
        across all components of the series.

        If either `low_quantile` or `high_quantile` is None, the corresponding bound will not be used.
        However, at least one of the two must be set.

        Parameters
        ----------
        low_quantile
            (Sequence of) quantile of historical data below which a value is regarded as anomaly.
            Must be between 0 and 1. If a sequence, must match the dimensionality of the series
            this detector is applied to.
        high_quantile
            (Sequence of) quantile of historical data above which a value is regarded as anomaly.
            Must be between 0 and 1. If a sequence, must match the dimensionality of the series
            this detector is applied to.
        """

        super().__init__()
        low_quantile, high_quantile = self._prepare_boundaries(
            lower_bound=low_quantile,
            upper_bound=high_quantile,
            lower_bound_name="low_quantile",
            upper_bound_name="high_quantile",
        )
        for q in (low_quantile, high_quantile):
            if not all([x is None or 0 <= x <= 1 for x in q]):
                raise_log(
                    ValueError("All quantiles must be between 0 and 1, or None."),
                    logger=logger,
                )
        self.low_quantile = low_quantile
        self.high_quantile = high_quantile
        # We'll use an inner Threshold detector once the quantiles are fitted
        self.detector: Optional[ThresholdDetector] = None
Quantile Detector

        Flags values that are either below or above the `low_quantile` and `high_quantile` quantiles
        of historical data, respectively.

        If a single value is provided for `low_quantile` or `high_quantile`, this same value will be
        used across all components of the series.

        If sequences of values are given for the parameters `low_quantile` and/or `high_quantile`,
        they must be of the same length, matching the dimensionality of the series passed
        to `fit()`, or have a length of 1. In the latter case, this single value will be used
        across all components of the series.

        If either `low_quantile` or `high_quantile` is None, the corresponding bound will not be used.
        However, at least one of the two must be set.

        Parameters
        ----------
        low_quantile
            (Sequence of) quantile of historical data below which a value is regarded as anomaly.
            Must be between 0 and 1. If a sequence, must match the dimensionality of the series
            this detector is applied to.
        high_quantile
            (Sequence of) quantile of historical data above which a value is regarded as anomaly.
            Must be between 0 and 1. If a sequence, must match the dimensionality of the series
            this detector is applied to.
        
darts/ad/detectors/quantile_detector.py