code: def test_forecast_tcmf_without_id(self):
      # construct data
      input = dict({"y": self.data})
      self.model.fit(input, **self.fit_params)
      assert not self.model.is_xshards_distributed()
      with tempfile.TemporaryDirectory() as tempdirname:
          self.model.save(tempdirname)
          loaded_model = TCMFForecaster.load(
              tempdirname, is_xshards_distributed=False
          )
      yhat = self.model.predict(horizon=self.horizon)
      yhat_loaded = loaded_model.predict(horizon=self.horizon)
      assert "id" not in yhat_loaded
      yhat = yhat["prediction"]
      yhat_loaded = yhat_loaded["prediction"]
      assert yhat.shape == (self.num_samples, self.horizon)
      np.testing.assert_array_almost_equal(yhat, yhat_loaded, decimal=4)
  
      target_value = dict({"y": self.data_new})
      self.model.evaluate(target_value=target_value, metric=["mse"])
  
      self.model.fit_incremental({"y": self.data_new})  # 1st time
      yhat_incr = self.model.predict(horizon=self.horizon)
      yhat_incr = yhat_incr["prediction"]
      assert yhat_incr.shape == (self.num_samples, self.horizon)
      np.testing.assert_raises(
          AssertionError, np.testing.assert_array_equal, yhat, yhat_incr
      )
  
      data_new_id = {"id": self.id, "y": self.data_new}
      with self.assertRaises(ValueError) as context:
          self.model.fit_incremental(data_new_id)
      self.assertTrue(
          "Got valid id in fit_incremental and invalid id in fit."
          in str(context.exception)
      )
  
file_path: analytics-zoo/pyzoo/test/zoo/chronos/forecaster/test_tcmf_forecaster.py
imports: import pytest
  import numpy
  from zoo.chronos.forecaster.tcmf_forecaster import TCMFForecaster
  from unittest import TestCase
  import tempfile
  import pandas
label_desc: Use image node_id 5 for calling the TestChronosModelTCMFForecaster obj's underlying member method code with example usage: obj.test_forecast_tcmf_without_id() without return types