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: Magic * method, return concatenated ParamFitterPipeline, trafos on left.
  
  Overloaded multiplication operation for classifiers. Implemented for `other`
  being a transformer, otherwise returns `NotImplemented`.
  
  Parameters
  ----------
  other: `sktime` transformer, must inherit from BaseTransformer
      otherwise, `NotImplemented` is returned
  
  Returns
  -------
  BaseParamFitter object, concatenation of `other` (first) with `self` (last).
docstr_tok: ["Magic","*","method",",","return","concatenated","ParamFitterPipeline",",","trafos","on","left",".","Overloaded","multiplication","operation","for","classifiers",".","Implemented","for","`","other","`","being","a","transformer",",","otherwise","returns","`","NotImplemented","`",".","Parameters","--","--","--","--","--","other",":","`","sktime","`","transformer",",","must","inherit","from","BaseTransformer","otherwise",",","`","NotImplemented","`","is","returned","Returns","--","--","--","-","BaseParamFitter","object",",","concatenation","of","`","other","`","(","first",")","with","`","self","`","(","last",")","."]
code: def __rmul__(self, other):
      """Magic * method, return concatenated ParamFitterPipeline, trafos on left.
  
      Overloaded multiplication operation for classifiers. Implemented for `other`
      being a transformer, otherwise returns `NotImplemented`.
  
      Parameters
      ----------
      other: `sktime` transformer, must inherit from BaseTransformer
          otherwise, `NotImplemented` is returned
  
      Returns
      -------
      BaseParamFitter object, concatenation of `other` (first) with `self` (last).
      """
      from sktime.param_est.compose import ParamFitterPipeline
      from sktime.transformations.base import BaseTransformer
      from sktime.transformations.compose import TransformerPipeline
      from sktime.transformations.series.adapt import (
          TabularToSeriesAdaptor,
      )
  
      # behaviour is implemented only if other inherits from BaseTransformer
      #  in that case, distinctions arise from whether self or other is a pipeline
      #  todo: this can probably be simplified further with "zero length" pipelines
      if isinstance(other, BaseTransformer):
          # ClassifierPipeline already has the dunder method defined
          if isinstance(self, ParamFitterPipeline):
              return other * self
          # if other is a TransformerPipeline but self is not, first unwrap it
          elif isinstance(other, TransformerPipeline):
              return ParamFitterPipeline(
                  param_est=self, transformers=other.steps
              )
          # if neither self nor other are a pipeline, construct a ClassifierPipeline
          else:
              return ParamFitterPipeline(
                  param_est=self, transformers=[other]
              )
      elif is_sklearn_transformer(other):
          return TabularToSeriesAdaptor(other) * self
      else:
          return NotImplemented
  
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 2 for calling the BaseParamFitter obj's underlying member method code with example usage: obj.__rmul__(other) and returns: unknown, unknown, NotImplemented, ParamFitterPipeline, ParamFitterPipeline