docstr: Contains (past_target, past_covariates, future_covariates, future_past_covariates, static_covariates) tuples.
  "future_past_covariates" are past covariates that happen to be also known in the future - those
  are needed for forecasting with n > output_chunk_length by any model relying on past covariates.
  
  Parameters
  ----------
  target_series
      The target series that are to be predicted into the future.
  past_covariates
      Optionally, some past-observed covariates that are used for predictions. This argument is required
      if the model was trained with past-observed covariates.
  future_covariates
      Optionally, some future-known covariates that are used for predictions. This argument is required
      if the model was trained with future-known covariates.
  n
      Forecast horizon: The number of time steps to predict after the end of the target series.
  stride
      Optionally, the number of time steps between two consecutive predictions. Can only be used together
      with `bounds`.
  bounds
      Optionally, an array of shape `(n series, 2)`, with the left and right prediction start point boundaries
      per series. The boundaries must represent the positional index of the series (0, len(series)).
      If provided, `stride` must be `>=1`.
  input_chunk_length
      The length of the target series the model takes as input.
  output_chunk_length
      The length of the target series the model emits in output.
  use_static_covariates
      Whether to use/include static covariate data from input series.
docstr_tok: ["Contains","(","past_target",",","past_covariates",",","future_covariates",",","future_past_covariates",",","static_covariates",")","tuples",".","``","future_past_covariates","''","are","past","covariates","that","happen","to","be","also","known","in","the","future","-","those","are","needed","for","forecasting","with","n",">","output_chunk_length","by","any","model","relying","on","past","covariates",".","Parameters","--","--","--","--","--","target_series","The","target","series","that","are","to","be","predicted","into","the","future",".","past_covariates","Optionally",",","some","past-observed","covariates","that","are","used","for","predictions",".","This","argument","is","required","if","the","model","was","trained","with","past-observed","covariates",".","future_covariates","Optionally",",","some","future-known","covariates","that","are","used","for","predictions",".","This","argument","is","required","if","the","model","was","trained","with","future-known","covariates",".","n","Forecast","horizon",":","The","number","of","time","steps","to","predict","after","the","end","of","the","target","series",".","stride","Optionally",",","the","number","of","time","steps","between","two","consecutive","predictions",".","Can","only","be","used","together","with","`","bounds","`",".","bounds","Optionally",",","an","array","of","shape","`","(","n","series",",","2",")","`",",","with","the","left","and","right","prediction","start","point","boundaries","per","series",".","The","boundaries","must","represent","the","positional","index","of","the","series","(","0",",","len","(","series",")",")",".","If","provided",",","`","stride","`","must","be","`",">","=1","`",".","input_chunk_length","The","length","of","the","target","series","the","model","takes","as","input",".","output_chunk_length","The","length","of","the","target","series","the","model","emits","in","output",".","use_static_covariates","Whether","to","use\/include","static","covariate","data","from","input","series","."]
code: def __init__(
      self,
      target_series: Union[TimeSeries, Sequence[TimeSeries]],
      past_covariates: Optional[
          Union[TimeSeries, Sequence[TimeSeries]]
      ] = None,
      future_covariates: Optional[
          Union[TimeSeries, Sequence[TimeSeries]]
      ] = None,
      n: int = 1,
      stride: int = 0,
      bounds: Optional[np.ndarray] = None,
      input_chunk_length: int = 12,
      output_chunk_length: int = 1,
      use_static_covariates: bool = True,
  ):
      """
      Contains (past_target, past_covariates, future_covariates, future_past_covariates, static_covariates) tuples.
      "future_past_covariates" are past covariates that happen to be also known in the future - those
      are needed for forecasting with n > output_chunk_length by any model relying on past covariates.
  
      Parameters
      ----------
      target_series
          The target series that are to be predicted into the future.
      past_covariates
          Optionally, some past-observed covariates that are used for predictions. This argument is required
          if the model was trained with past-observed covariates.
      future_covariates
          Optionally, some future-known covariates that are used for predictions. This argument is required
          if the model was trained with future-known covariates.
      n
          Forecast horizon: The number of time steps to predict after the end of the target series.
      stride
          Optionally, the number of time steps between two consecutive predictions. Can only be used together
          with `bounds`.
      bounds
          Optionally, an array of shape `(n series, 2)`, with the left and right prediction start point boundaries
          per series. The boundaries must represent the positional index of the series (0, len(series)).
          If provided, `stride` must be `>=1`.
      input_chunk_length
          The length of the target series the model takes as input.
      output_chunk_length
          The length of the target series the model emits in output.
      use_static_covariates
          Whether to use/include static covariate data from input series.
      """
      super().__init__()
  
      # This dataset is in charge of serving past covariates
      self.ds_past = PastCovariatesInferenceDataset(
          target_series=target_series,
          covariates=past_covariates,
          n=n,
          stride=stride,
          bounds=bounds,
          input_chunk_length=input_chunk_length,
          output_chunk_length=output_chunk_length,
          covariate_type=CovariateType.PAST,
          use_static_covariates=use_static_covariates,
      )
  
      # This dataset is in charge of serving future covariates
      self.ds_future = FutureCovariatesInferenceDataset(
          target_series=target_series,
          covariates=future_covariates,
          n=n,
          stride=stride,
          bounds=bounds,
          input_chunk_length=input_chunk_length,
          covariate_type=CovariateType.FUTURE,
          use_static_covariates=use_static_covariates,
      )
  
imports: import bisect
  from abc import ABC, abstractmethod
  from typing import Optional, Sequence, Tuple, Union
  import numpy
  import pandas
  from torch.utils.data import Dataset
  from darts import TimeSeries
  from darts.logging import get_logger, raise_log
  from darts.utils.historical_forecasts.utils import _process_predict_start_points_bounds
  from .utils import CovariateType
label_desc: Use image node_id 1 to create a new SplitCovariatesInferenceDataset object from inherited base classes: InferenceDataset with example: obj = SplitCovariatesInferenceDataset(target_series, past_covariates, future_covariates, n, stride, bounds, input_chunk_length, output_chunk_length, use_static_covariates)