class_docstr: Base parameter fitting estimator class.
  
  The base parameter fitter specifies the methods and method signatures that all
  parameter fitter have to implement.
  
  Specific implementations of these methods is deferred to concrete instances.
docstr: Check and coerce X for fit/update functions.
  
  Parameters
  ----------
  X : time series in sktime compatible data container format
          Time series to which to fit the forecaster in the update.
      y can be in one of the following formats, must be same scitype as in fit:
      Series scitype: pd.Series, pd.DataFrame, or np.ndarray (1D or 2D)
      Panel scitype: pd.DataFrame with 2-level row MultiIndex,
          3D np.ndarray, list of Series pd.DataFrame, or nested pd.DataFrame
      Hierarchical scitype: pd.DataFrame with 3 or more level row MultiIndex
      For further details:
          on usage, see forecasting tutorial examples/01_forecasting.ipynb
          on specification of formats, examples/AA_datatypes_and_datasets.ipynb
  
  Returns
  -------
  X_inner : Series, Panel, or Hierarchical object
          compatible with self.get_tag("X_inner_mtype") format
      Case 1: self.get_tag("X_inner_mtype") supports scitype of X, then
          converted/coerced version of X, mtype determined by "X_inner_mtype" tag
      Case 2: None if X was None
  
  Raises
  ------
  TypeError if X is not one of the permissible Series mtypes
  TypeError if X is of a different scitype as self.get_tag("scitype:X")
docstr_tok: ["Check","and","coerce","X","for","fit\/update","functions",".","Parameters","--","--","--","--","--","X",":","time","series","in","sktime","compatible","data","container","format","Time","series","to","which","to","fit","the","forecaster","in","the","update",".","y","can","be","in","one","of","the","following","formats",",","must","be","same","scitype","as","in","fit",":","Series","scitype",":","pd.Series",",","pd.DataFrame",",","or","np.ndarray","(","1D","or","2D",")","Panel","scitype",":","pd.DataFrame","with","2-level","row","MultiIndex",",","3D","np.ndarray",",","list","of","Series","pd.DataFrame",",","or","nested","pd.DataFrame","Hierarchical","scitype",":","pd.DataFrame","with","3","or","more","level","row","MultiIndex","For","further","details",":","on","usage",",","see","forecasting","tutorial","examples\/01_forecasting.ipynb","on","specification","of","formats",",","examples\/AA_datatypes_and_datasets.ipynb","Returns","--","--","--","-","X_inner",":","Series",",","Panel",",","or","Hierarchical","object","compatible","with","self.get_tag","(","``","X_inner_mtype","''",")","format","Case","1",":","self.get_tag","(","``","X_inner_mtype","''",")","supports","scitype","of","X",",","then","converted\/coerced","version","of","X",",","mtype","determined","by","``","X_inner_mtype","''","tag","Case","2",":","None","if","X","was","None","Raises","--","--","--","TypeError","if","X","is","not","one","of","the","permissible","Series","mtypes","TypeError","if","X","is","of","a","different","scitype","as","self.get_tag","(","``","scitype",":","X","''",")"]
code: def _check_X(self, X=None):
      """Check and coerce X for fit/update functions.
  
      Parameters
      ----------
      X : time series in sktime compatible data container format
              Time series to which to fit the forecaster in the update.
          y can be in one of the following formats, must be same scitype as in fit:
          Series scitype: pd.Series, pd.DataFrame, or np.ndarray (1D or 2D)
          Panel scitype: pd.DataFrame with 2-level row MultiIndex,
              3D np.ndarray, list of Series pd.DataFrame, or nested pd.DataFrame
          Hierarchical scitype: pd.DataFrame with 3 or more level row MultiIndex
          For further details:
              on usage, see forecasting tutorial examples/01_forecasting.ipynb
              on specification of formats, examples/AA_datatypes_and_datasets.ipynb
  
      Returns
      -------
      X_inner : Series, Panel, or Hierarchical object
              compatible with self.get_tag("X_inner_mtype") format
          Case 1: self.get_tag("X_inner_mtype") supports scitype of X, then
              converted/coerced version of X, mtype determined by "X_inner_mtype" tag
          Case 2: None if X was None
  
      Raises
      ------
      TypeError if X is not one of the permissible Series mtypes
      TypeError if X is of a different scitype as self.get_tag("scitype:X")
      """
      if X is None:
          return None
  
      X_inner_mtype = _coerce_to_list(self.get_tag("X_inner_mtype"))
      # X_inner_scitype = mtype_to_scitype(X_inner_mtype, return_unique=True)
  
      ALLOWED_SCITYPES = _coerce_to_list(self.get_tag("scitype:X"))
      FORBIDDEN_MTYPES = ["numpyflat", "pd-wide"]
  
      for scitype in ALLOWED_SCITYPES:
          mtypes = set(scitype_to_mtype(scitype))
          mtypes = list(mtypes.difference(FORBIDDEN_MTYPES))
          mtypes_msg = f'"For {scitype} scitype: {mtypes}. '
  
      # checking X
      X_valid, _, X_metadata = check_is_scitype(
          X, scitype=ALLOWED_SCITYPES, return_metadata=[], var_name="X"
      )
      msg = (
          "X must be in an sktime compatible format, "
          f"of scitypes {ALLOWED_SCITYPES}, "
          "for instance a pandas.DataFrame with sktime compatible time indices, "
          "or with MultiIndex and last(-1) level an sktime compatible time index."
          " See data format tutorial examples/AA_datatypes_and_datasets.ipynb,"
          "If you think X is already in an sktime supported input format, "
          "run sktime.datatypes.check_raise(X, mtype) to diagnose the error, "
          "where mtype is the string of the type specification you want for y. "
          "Possible mtype specification strings are as follows. "
      )
      if not X_valid:
          raise TypeError(msg + mtypes_msg)
      X_scitype = X_metadata["scitype"]
      X_mtype = X_metadata["mtype"]
      # end checking X
  
      # converts X, converts None to None if X is None
      X_inner = convert(
          X,
          from_type=X_mtype,
          to_type=X_inner_mtype,
          as_scitype=X_scitype,
      )
  
      return X_inner
  
file_path: sktime/sktime/param_est/base.py
imports: from sktime.base import BaseEstimator
  from sktime.datatypes import VectorizedDF, check_is_scitype, convert, scitype_to_mtype, update_data
  from sktime.utils.sklearn import is_sklearn_transformer
  from sktime.utils.validation._dependencies import _check_estimator_deps
  from sktime.utils.warnings import warn
label_desc: Use image node_id 5 for calling the BaseParamFitter obj's underlying member method code with example usage: obj._check_X(X) and returns: X_inner, None