class_docstr: A simple pipeline, which acts as an estimator. A Pipeline consists
  of a sequence of stages, each of which is either an
  :py:class:`Estimator` or a :py:class:`Transformer`. When
  :py:meth:`Pipeline.fit` is called, the stages are executed in
  order. If a stage is an :py:class:`Estimator`, its
  :py:meth:`Estimator.fit` method will be called on the input
  dataset to fit a model. Then the model, which is a transformer,
  will be used to transform the dataset as the input to the next
  stage. If a stage is a :py:class:`Transformer`, its
  :py:meth:`Transformer.transform` method will be called to produce
  the dataset for the next stage. The fitted model from a
  :py:class:`Pipeline` is a :py:class:`PipelineModel`, which
  consists of fitted models and transformers, corresponding to the
  pipeline stages. If stages is an empty list, the pipeline acts as an
  identity transformer.
  
  .. versionadded:: 1.3.0
class_docstr_tok: ["A","simple","pipeline",",","which","acts","as","an","estimator",".","A","Pipeline","consists","of","a","sequence","of","stages",",","each","of","which","is","either","an",":","py",":","class",":","`","Estimator","`","or","a",":","py",":","class",":","`","Transformer","`",".","When",":","py",":","meth",":","`","Pipeline.fit","`","is","called",",","the","stages","are","executed","in","order",".","If","a","stage","is","an",":","py",":","class",":","`","Estimator","`",",","its",":","py",":","meth",":","`","Estimator.fit","`","method","will","be","called","on","the","input","dataset","to","fit","a","model",".","Then","the","model",",","which","is","a","transformer",",","will","be","used","to","transform","the","dataset","as","the","input","to","the","next","stage",".","If","a","stage","is","a",":","py",":","class",":","`","Transformer","`",",","its",":","py",":","meth",":","`","Transformer.transform","`","method","will","be","called","to","produce","the","dataset","for","the","next","stage",".","The","fitted","model","from","a",":","py",":","class",":","`","Pipeline","`","is","a",":","py",":","class",":","`","PipelineModel","`",",","which","consists","of","fitted","models","and","transformers",",","corresponding","to","the","pipeline","stages",".","If","stages","is","an","empty","list",",","the","pipeline","acts","as","an","identity","transformer",".","..","versionadded",":",":","1.3.0"]
docstr: Returns an MLReader instance for this class.
code: def read(cls) -> "PipelineReader":
      """Returns an MLReader instance for this class."""
      return PipelineReader(cls)
  
imports: import os
  from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast, TYPE_CHECKING
  from pyspark import keyword_only, since, SparkContext
  from pyspark.ml.base import Estimator, Model, Transformer
  from pyspark.ml.param import Param, Params
  from pyspark.ml.util import MLReadable, MLWritable, JavaMLWriter, JavaMLReader, DefaultParamsReader, DefaultParamsWriter, MLWriter, MLReader, JavaMLReadable, JavaMLWritable
  from pyspark.ml.wrapper import JavaParams
  from pyspark.ml.common import inherit_doc
  from pyspark.sql.dataframe import DataFrame
label_desc: Use image node_id 8 for calling the Pipeline obj's underlying member method code with example usage: obj.read(cls) and returns: PipelineReader