class_docstr: A very simple pipeline, assuming the last step is always a predictor.
class_docstr_tok: ["A","very","simple","pipeline",",","assuming","the","last","step","is","always","a","predictor","."]
code: def fit(self, X, y, **fit_params):
      self.steps_ = []
      params = process_routing(self, "fit", **fit_params)
      X_transformed = X
      for i, step in enumerate(self.steps[:-1]):
          transformer = clone(step).fit(
              X_transformed, y, **params.get(f"step_{i}").fit
          )
          self.steps_.append(transformer)
          X_transformed = transformer.transform(
              X_transformed, **params.get(f"step_{i}").transform
          )
  
      self.steps_.append(
          clone(self.steps[-1]).fit(
              X_transformed, y, **params.predictor.fit
          )
      )
      return self
  
imports: import re
  import numpy
  import pytest
  from sklearn import config_context
  from sklearn.base import BaseEstimator, clone
  from sklearn.linear_model import LinearRegression
  from sklearn.tests.metadata_routing_common import ConsumingClassifier, ConsumingRegressor, ConsumingTransformer, MetaRegressor, MetaTransformer, NonConsumingClassifier, WeightedMetaClassifier, WeightedMetaRegressor, _Registry, assert_request_equal, assert_request_is_empty, check_recorded_metadata
  from sklearn.utils import metadata_routing
  from sklearn.utils._metadata_requests import COMPOSITE_METHODS, METHODS, SIMPLE_METHODS, MethodMetadataRequest, MethodPair, _MetadataRequester, request_is_alias, request_is_valid
  from sklearn.utils.metadata_routing import MetadataRequest, MetadataRouter, MethodMapping, get_routing_for_object, process_routing
  from sklearn.utils.validation import check_is_fitted
label_desc: Use image node_id 2 for calling the SimplePipeline obj's underlying member method code with example usage: obj.fit(X, y) and returns: self