docstr: This function contains a bunch of assertions to make sure strict rules(the invariants)
  for the internal dataframe(self.df) must stands. If not, clear and user-friendly error
  or warning message should be provided to the users.
  This function will be called after each method(e.g. impute, deduplicate ...).
docstr_tok: ["This","function","contains","a","bunch","of","assertions","to","make","sure","strict","rules","(","the","invariants",")","for","the","internal","dataframe","(","self.df",")","must","stands",".","If","not",",","clear","and","user-friendly","error","or","warning","message","should","be","provided","to","the","users",".","This","function","will","be","called","after","each","method","(","e.g",".","impute",",","deduplicate","...",")","."]
code: def _check_basic_invariants(self, strict_check=False):
      """
      This function contains a bunch of assertions to make sure strict rules(the invariants)
      for the internal dataframe(self.df) must stands. If not, clear and user-friendly error
      or warning message should be provided to the users.
      This function will be called after each method(e.g. impute, deduplicate ...).
      """
      # check type
      _check_type(self.df, "df", pd.DataFrame)
      _check_type(self.id_col, "id_col", str)
      _check_type(self.dt_col, "dt_col", str)
      _check_type(self.target_col, "target_col", list)
      _check_type(self.feature_col, "feature_col", list)
  
      # check valid name
      _check_col_within(self.df, self.id_col)
      _check_col_within(self.df, self.dt_col)
      for target_col_name in self.target_col:
          _check_col_within(self.df, target_col_name)
      for feature_col_name in self.feature_col:
          if (
              self.roll_additional_feature
              and feature_col_name in self.roll_additional_feature
          ):
              continue
          _check_col_within(self.df, feature_col_name)
  
      # check no n/a in critical col
      _check_col_no_na(self.df, self.dt_col)
      _check_col_no_na(self.df, self.id_col)
  
      # check dt sorted
      if strict_check:
          _check_dt_is_sorted(self.df, self.dt_col)
  
imports: import pandas
  import numpy
  import functools
  from zoo.chronos.data.utils.feature import generate_dt_features, generate_global_features
  from zoo.chronos.data.utils.impute import impute_timeseries_dataframe
  from zoo.chronos.data.utils.deduplicate import deduplicate_timeseries_dataframe
  from zoo.chronos.data.utils.roll import roll_timeseries_dataframe
  from zoo.chronos.data.utils.scale import unscale_timeseries_numpy
  from zoo.chronos.data.utils.resample import resample_timeseries_dataframe
  from zoo.chronos.data.utils.split import split_timeseries_dataframe
  from zoo.chronos.data.utils.utils import _to_list, _check_type, _check_col_within, _check_col_no_na, _check_is_aligned, _check_dt_is_sorted
  from tsfresh.utilities.dataframe_functions import roll_time_series
  from tsfresh.utilities.dataframe_functions import impute
  from tsfresh import extract_features
  from tsfresh.feature_extraction import ComprehensiveFCParameters, MinimalFCParameters, EfficientFCParameters
label_desc: Use image node_id 17 for calling the TSDataset obj's underlying member method code with example usage: obj._check_basic_invariants(strict_check) without return types