class_docstr: Tests `_get_feature_times` function defined in `darts.utils.data.tabularization`. There
  are broadly two 'groups' of tests defined in this module:
      1. 'Generated Test Cases': these test that `_get_feature_times` produces the same outputs
      as a simplified implementation of this same function. For these tests, the 'correct answer' is not
      directly specified; instead, it is generated from a set of input parameters using the set of simplified
      functions. The rationale behind this approach is that it allows for many different combinations of input
      values to be effortlessly tested. The drawback of this, however, is that the correctness of these tests
      assumes that the simplified functions have been implemented correctly - if this isn't the case, then these
      tests are not to be trusted. In saying this, these simplified functions are significantly easier to
      understand and debug than the `create_lagged_prediction_data` function they're helping to test.
      2. 'Specified Test Cases': these test that `_get_feature_times` returns an exactly specified output; these
      specified outputs are *not* 'generated' by another function. Although these 'specified' test cases tend to
      be simpler and less extensive than the 'generated' test cases, their correctness does not assume the correct
      implementation of any other function.
docstr: Tests that `_get_feature_times` produces the same `times` output as
  that generated by using the various `get_feature_times_*` helper
  functions defined in this module when `is_training = True`. Consistency
  is checked over all of the combinations of parameter values specified by
  `self.target_lag_combos`, `self.lags_past_combos`, `self.lags_future_combos`
  and `self.max_samples_per_ts_combos`. This particular test uses timeseries
  with datetime time indices.
docstr_tok: ["Tests","that","`","_get_feature_times","`","produces","the","same","`","times","`","output","as","that","generated","by","using","the","various","`","get_feature_times_","*","`","helper","functions","defined","in","this","module","when","`","is_training","=","True","`",".","Consistency","is","checked","over","all","of","the","combinations","of","parameter","values","specified","by","`","self.target_lag_combos","`",",","`","self.lags_past_combos","`",",","`","self.lags_future_combos","`","and","`","self.max_samples_per_ts_combos","`",".","This","particular","test","uses","timeseries","with","datetime","time","indices","."]
code: def test_feature_times_training_datetime_idx(self):
      """
      Tests that `_get_feature_times` produces the same `times` output as
      that generated by using the various `get_feature_times_*` helper
      functions defined in this module when `is_training = True`. Consistency
      is checked over all of the combinations of parameter values specified by
      `self.target_lag_combos`, `self.lags_past_combos`, `self.lags_future_combos`
      and `self.max_samples_per_ts_combos`. This particular test uses timeseries
      with datetime time indices.
      """
      # Define timeseries with different starting points, lengths, and frequencies:
      target = linear_timeseries(
          start=pd.Timestamp("1/1/2000"), length=20, freq="1d"
      )
      past = linear_timeseries(
          start=pd.Timestamp("1/2/2000"), length=25, freq="2d"
      )
      future = linear_timeseries(
          start=pd.Timestamp("1/3/2000"), length=30, freq="3d"
      )
      for lags, lags_past, lags_future, ocl in product(
          self.target_lag_combos,
          self.lags_past_combos,
          self.lags_future_combos,
          self.ocl_combos,
      ):
          feature_times = _get_feature_times(
              target_series=target,
              past_covariates=past,
              future_covariates=future,
              lags=lags,
              lags_past_covariates=lags_past,
              lags_future_covariates=lags_future,
              output_chunk_length=ocl,
              is_training=True,
          )
          target_expected = self.get_feature_times_target_training(
              target, lags, ocl
          )
          past_expected = self.get_feature_times_past(past, lags_past)
          future_expected = self.get_feature_times_future(
              future, lags_future
          )
          assert target_expected.equals(feature_times[0])
          assert past_expected.equals(feature_times[1])
          assert future_expected.equals(feature_times[2])
  
imports: import warnings
  from itertools import product
  from typing import Sequence
  import pandas
  import pytest
  from darts import TimeSeries
  from darts.logging import get_logger, raise_log
  from darts.utils.data.tabularization import _get_feature_times
  from darts.utils.timeseries_generation import linear_timeseries
label_desc: Use image node_id 6 for calling the TestGetFeatureTimes obj's underlying member method code with example usage: obj.test_feature_times_training_datetime_idx() without return types