class_docstr: Base Pipeline class to be used to create custom pipelines
class_docstr_tok: ["Base","Pipeline","class","to","be","used","to","create","custom","pipelines"]
docstr: Adds new logics in the pipeline
  Args:
      logic (BaseLogicUnit): execution unit of logic
docstr_tok: ["Adds","new","logics","in","the","pipeline","Args",":","logic","(","BaseLogicUnit",")",":","execution","unit","of","logic"]
code: def add_step(self, logic: BaseLogicUnit):
      """
      Adds new logics in the pipeline
      Args:
          logic (BaseLogicUnit): execution unit of logic
      """
      if not isinstance(logic, BaseLogicUnit):
          raise UnSupportedLogicUnit(
              "Logic unit must be inherited from BaseLogicUnit and "
              "must implement execute method"
          )
  
      self._steps.append(logic)
  
file_path: pandas-ai/pandasai/pipelines/pipeline.py
imports: import logging
  from pandasai.config import load_config
  from pandasai.exceptions import UnSupportedLogicUnit
  from pandasai.helpers.df_info import DataFrameType
  from pandasai.helpers.logger import Logger
  from pandasai.pipelines.pipeline_context import PipelineContext
  from pandasai.pipelines.base_logic_unit import BaseLogicUnit
  from ..schemas.df_config import Config
  from typing import Any, Optional, List, Union
  from .abstract_pipeline import AbstractPipeline
label_desc: Use image node_id 2 for calling the Pipeline obj's underlying member method code with example usage: obj.add_step(logic) without return types