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: Saves the pipeline to JSON representation with pickled fitted operations
  
  Args:
      path: custom path to dir where to save JSON or name of json file where to save pipeline.
      If only file name is specified, than absolute path to this file will be created.
      create_subdir: if True -- create one more dir in the last dir
                     if False -- save to the last dir in specified path
      is_datetime_in_path: is it required to add the datetime timestamp to the path
  
  Returns:
      Tuple[str, dict]: :obj:`JSON representation of the pipeline structure`,
      :obj:`dict of paths to fitted models`
docstr_tok: ["Saves","the","pipeline","to","JSON","representation","with","pickled","fitted","operations","Args",":","path",":","custom","path","to","dir","where","to","save","JSON","or","name","of","json","file","where","to","save","pipeline",".","If","only","file","name","is","specified",",","than","absolute","path","to","this","file","will","be","created",".","create_subdir",":","if","True","--","create","one","more","dir","in","the","last","dir","if","False","--","save","to","the","last","dir","in","specified","path","is_datetime_in_path",":","is","it","required","to","add","the","datetime","timestamp","to","the","path","Returns",":","Tuple","[","str",",","dict","]",":",":","obj",":","`","JSON","representation","of","the","pipeline","structure","`",",",":","obj",":","`","dict","of","paths","to","fitted","models","`"]
code: def save(
      self,
      path: str = None,
      create_subdir: bool = True,
      is_datetime_in_path: bool = False,
  ) -> Tuple[str, dict]:
      """
      Saves the pipeline to JSON representation with pickled fitted operations
  
      Args:
          path: custom path to dir where to save JSON or name of json file where to save pipeline.
          If only file name is specified, than absolute path to this file will be created.
          create_subdir: if True -- create one more dir in the last dir
                         if False -- save to the last dir in specified path
          is_datetime_in_path: is it required to add the datetime timestamp to the path
  
      Returns:
          Tuple[str, dict]: :obj:`JSON representation of the pipeline structure`,
          :obj:`dict of paths to fitted models`
      """
  
      template = PipelineTemplate(self)
      json_object, dict_fitted_operations = template.export_pipeline(
          path,
          root_node=self.root_node,
          create_subdir=create_subdir,
          is_datetime_in_path=is_datetime_in_path,
      )
      return json_object, dict_fitted_operations
  
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 13 for calling the Pipeline obj's underlying member method code with example usage: obj.save(path, create_subdir, is_datetime_in_path) and returns: json_object,  dict_fitted_operations