class_docstr: Base class used for composite model structure definition
  
  Args:
      nodes: :obj:`PipelineNode` object(s)
      use_input_preprocessing: whether to do input preprocessing or not, ``True`` by default.
class_docstr_tok: ["Base","class","used","for","composite","model","structure","definition","Args",":","nodes",":",":","obj",":","`","PipelineNode","`","object","(","s",")","use_input_preprocessing",":","whether","to","do","input","preprocessing","or","not",",","``","True","``","by","default","."]
docstr: Removes fitted operations for chosen type of nodes.
  
  Args:
      mode: the name of mode
  
          .. details:: possible ``mode`` options:
  
                  - ``all`` -> (default) All models will be unfitted
                  - ``data_operations`` -> All data operations will be unfitted
  
      unfit_preprocessor: should we unfit preprocessor
docstr_tok: ["Removes","fitted","operations","for","chosen","type","of","nodes",".","Args",":","mode",":","the","name","of","mode","..","details",":",":","possible","``","mode","``","options",":","-","``","all","``","-",">","(","default",")","All","models","will","be","unfitted","-","``","data_operations","``","-",">","All","data","operations","will","be","unfitted","unfit_preprocessor",":","should","we","unfit","preprocessor"]
code: def unfit(self, mode="all", unfit_preprocessor: bool = True):
      """Removes fitted operations for chosen type of nodes.
  
      Args:
          mode: the name of mode
  
              .. details:: possible ``mode`` options:
  
                      - ``all`` -> (default) All models will be unfitted
                      - ``data_operations`` -> All data operations will be unfitted
  
          unfit_preprocessor: should we unfit preprocessor
      """
  
      for node in self.nodes:
          if mode == "all" or (
              mode == "data_operations"
              and isinstance(node.content["name"], DataOperation)
          ):
              node.unfit()
  
      if unfit_preprocessor:
          self.unfit_preprocessor()
  
imports: from copy import deepcopy
  from datetime import timedelta
  from os import PathLike
  from typing import Optional, Tuple, Union, Sequence, List, Dict
  import func_timeout
  from golem.core.dag.graph import Graph
  from golem.core.dag.graph_delegate import GraphDelegate
  from golem.core.dag.graph_node import GraphNode
  from golem.core.dag.graph_utils import distance_to_primary_level, graph_structure
  from golem.core.dag.linked_graph import LinkedGraph
  from golem.core.log import default_log
  from golem.core.optimisers.timer import Timer
  from golem.core.paths import copy_doc
  from golem.utilities.serializable import Serializable
  from golem.visualisation.graph_viz import NodeColorType
  from fedot.core.caching.pipelines_cache import OperationsCache
  from fedot.core.caching.preprocessing_cache import PreprocessingCache
  from fedot.core.data.data import InputData, OutputData
  from fedot.core.data.multi_modal import MultiModalData
  from fedot.core.operations.data_operation import DataOperation
  from fedot.core.operations.model import Model
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.template import PipelineTemplate
  from fedot.core.repository.tasks import TaskTypesEnum
  from fedot.core.visualisation.pipeline_specific_visuals import PipelineVisualizer
  from fedot.preprocessing.dummy_preprocessing import DummyPreprocessor
  from fedot.preprocessing.preprocessing import DataPreprocessor
label_desc: Use image node_id 9 for calling the Pipeline obj's underlying member method code with example usage: obj.unfit(mode, unfit_preprocessor) without return types