class_docstr: Handles parameter management for estimators composed of named estimators.
  
  Partly adapted from sklearn utils.metaestimator.py.
docstr: Check that estimators is a list of estimators or list of str/est tuples.
  
  Parameters
  ----------
  estimators : any object
      should be list of estimators or list of (str, estimator) tuples
      estimators should inherit from cls_type class
  attr_name : str, optional. Default = "steps"
      Name of checked attribute in error messages
  cls_type : class or tuple of class, optional. Default = BaseEstimator.
      class(es) that all estimators are checked to be an instance of
  allow_mix : boolean, optional. Default = True.
      whether mix of estimator and (str, estimator) is allowed in `estimators`
  clone_ests : boolean, optional. Default = True.
      whether estimators in return are cloned (True) or references (False).
  
  Returns
  -------
  est_tuples : list of (str, estimator) tuples
      if estimators was a list of (str, estimator) tuples, then identical/cloned
      if was a list of estimators, then str are generated via _get_estimator_names
  
  Raises
  ------
  TypeError, if estimators is not a list of estimators or (str, estimator) tuples
  TypeError, if estimators in the list are not instances of cls_type
docstr_tok: ["Check","that","estimators","is","a","list","of","estimators","or","list","of","str\/est","tuples",".","Parameters","--","--","--","--","--","estimators",":","any","object","should","be","list","of","estimators","or","list","of","(","str",",","estimator",")","tuples","estimators","should","inherit","from","cls_type","class","attr_name",":","str",",","optional",".","Default","=","``","steps","''","Name","of","checked","attribute","in","error","messages","cls_type",":","class","or","tuple","of","class",",","optional",".","Default","=","BaseEstimator",".","class","(","es",")","that","all","estimators","are","checked","to","be","an","instance","of","allow_mix",":","boolean",",","optional",".","Default","=","True",".","whether","mix","of","estimator","and","(","str",",","estimator",")","is","allowed","in","`","estimators","`","clone_ests",":","boolean",",","optional",".","Default","=","True",".","whether","estimators","in","return","are","cloned","(","True",")","or","references","(","False",")",".","Returns","--","--","--","-","est_tuples",":","list","of","(","str",",","estimator",")","tuples","if","estimators","was","a","list","of","(","str",",","estimator",")","tuples",",","then","identical\/cloned","if","was","a","list","of","estimators",",","then","str","are","generated","via","_get_estimator_names","Raises","--","--","--","TypeError",",","if","estimators","is","not","a","list","of","estimators","or","(","str",",","estimator",")","tuples","TypeError",",","if","estimators","in","the","list","are","not","instances","of","cls_type"]
code: def _check_estimators(
      self,
      estimators,
      attr_name="steps",
      cls_type=None,
      allow_mix=True,
      clone_ests=True,
  ):
      """Check that estimators is a list of estimators or list of str/est tuples.
  
      Parameters
      ----------
      estimators : any object
          should be list of estimators or list of (str, estimator) tuples
          estimators should inherit from cls_type class
      attr_name : str, optional. Default = "steps"
          Name of checked attribute in error messages
      cls_type : class or tuple of class, optional. Default = BaseEstimator.
          class(es) that all estimators are checked to be an instance of
      allow_mix : boolean, optional. Default = True.
          whether mix of estimator and (str, estimator) is allowed in `estimators`
      clone_ests : boolean, optional. Default = True.
          whether estimators in return are cloned (True) or references (False).
  
      Returns
      -------
      est_tuples : list of (str, estimator) tuples
          if estimators was a list of (str, estimator) tuples, then identical/cloned
          if was a list of estimators, then str are generated via _get_estimator_names
  
      Raises
      ------
      TypeError, if estimators is not a list of estimators or (str, estimator) tuples
      TypeError, if estimators in the list are not instances of cls_type
      """
      msg = (
          f"Invalid {attr_name!r} attribute, {attr_name!r} should be a list"
          " of estimators, or a list of (string, estimator) tuples. "
      )
      if cls_type is None:
          msg += f"All estimators in {attr_name!r} must be of type BaseEstimator."
          cls_type = BaseEstimator
      elif isclass(cls_type) or isinstance(cls_type, tuple):
          msg += (
              f"All estimators in {attr_name!r} must be of type "
              f"{cls_type.__name__}."
          )
      else:
          raise TypeError(
              "cls_type must be a class or tuple of classes"
          )
  
      if (
          estimators is None
          or len(estimators) == 0
          or not isinstance(estimators, list)
      ):
          raise TypeError(msg)
  
      def is_est_is_tuple(obj):
          """Check whether obj is estimator of right type, or (str, est) tuple."""
          is_est = isinstance(obj, cls_type)
          is_tuple = self._is_name_and_est(obj, cls_type)
  
          return is_est, is_tuple
  
      if not all(any(is_est_is_tuple(x)) for x in estimators):
          raise TypeError(msg)
  
      msg_no_mix = (
          f"elements of {attr_name} must either all be estimators, "
          f"or all (str, estimator) tuples, mix of the two is not allowed"
      )
  
      if not allow_mix and not all(
          is_est_is_tuple(x)[0] for x in estimators
      ):
          if not all(is_est_is_tuple(x)[1] for x in estimators):
              raise TypeError(msg_no_mix)
  
      return self._get_estimator_tuples(
          estimators, clone_ests=clone_ests
      )
  
imports: from inspect import isclass
  import numpy
  import pandas
  from sktime.base import BaseEstimator
label_desc: Use image node_id 11 for calling the _HeterogenousMetaEstimator obj's underlying member method code with example usage: obj._check_estimators(estimators, attr_name, cls_type, allow_mix, clone_ests) and returns: self, is_est,  is_tuple