code: def test_drop_incomplete_agg(params, hourly_data_with_reg):
      model = MultistageForecastEstimator(**params)
      model.time_col_ = cst.TIME_COL
      model.value_col_ = cst.VALUE_COL
      model._initialize()
      df = model._add_agg_freq_cols(df=hourly_data_with_reg)
      df = df.iloc[
          :-1
      ]  # removes the last row so the last period becomes incomplete.
      df_new = model._drop_incomplete_agg(
          df=df,
          agg_freq="D",
          location=-1,
          num_points_per_agg_freq=24,
          index=0,
      )
      assert (
          len(df_new) == len(hourly_data_with_reg) - 24
      )  # minus 1 day.
      assert df_new.reset_index(drop=True).equals(df.iloc[:-23])
  
imports: import datetime
  import numpy
  import pandas
  import pytest
  from testfixtures import LogCapture
  import greykite.common.constants
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.sklearn.estimator.lag_based_estimator import LagBasedEstimator
  from greykite.sklearn.estimator.multistage_forecast_estimator import MultistageForecastEstimator
  from greykite.sklearn.estimator.multistage_forecast_estimator import MultistageForecastModelConfig
  from greykite.sklearn.estimator.simple_silverkite_estimator import SimpleSilverkiteEstimator
  from greykite.sklearn.uncertainty.uncertainty_methods import UncertaintyMethodEnum
label_desc: Use image node_id 14 for calling a global function with example usage: test_drop_incomplete_agg(params, hourly_data_with_reg) without return types