def __post_init__()

in jobs/kpi-forecasting/kpi_forecasting/models/base_forecast.py [0:0]


    def __post_init__(self) -> None:
        # fetch observed observed data
        self.collected_at = datetime.now(timezone.utc).replace(tzinfo=None)
        self._get_observed_data()

        # raise an error is predict_historical_dates is True and start_date is set
        if self.start_date and self.predict_historical_dates:
            raise ValueError(
                "forecast start_date set while predict_historical_dates is True"
            )
        # use default start/end dates if the user doesn't specify them
        self.start_date = pd.to_datetime(self.start_date or self._default_start_date)
        self.end_date = pd.to_datetime(self.end_date or self._default_end_date)
        self.dates_to_predict = pd.DataFrame(
            {"submission_date": pd.date_range(self.start_date, self.end_date).date}
        )

        # initialize unset attributes
        self.model = None
        self.forecast_df = None
        self.summary_df = None

        # metadata
        self.metadata_params = json.dumps(
            {
                "model_type": self.model_type.lower(),
                "model_params": self.parameters,
                "use_all_us_holidays": self.use_all_us_holidays,
            }
        )