class_docstr: Main class from which all Flows should inherit.
  
  Attributes
  ----------
  index
  input
docstr: Construct a FlowSpec
  
  Parameters
  ----------
  use_cli : bool, default: True
      Set to True if the flow is invoked from __main__ or the command line
code: def __init__(self, use_cli=True):
      """
      Construct a FlowSpec
  
      Parameters
      ----------
      use_cli : bool, default: True
          Set to True if the flow is invoked from __main__ or the command line
      """
  
      self.name = self.__class__.__name__
  
      self._datastore = None
      self._transition = None
      self._cached_input = {}
  
      self._graph = FlowGraph(self.__class__)
      self._steps = [getattr(self, node.name) for node in self._graph]
  
      if use_cli:
          # we import cli here to make sure custom parameters in
          # args.py get fully evaluated before cli.py is imported.
          from . import cli
  
          cli.main(self)
  
imports: import inspect
  import os
  import sys
  import traceback
  from itertools import islice
  from types import FunctionType, MethodType
  from typing import Any, Callable, List, Optional, Tuple
  from .None import cmd_with_io
  from .parameters import DelayedEvaluationParameter, Parameter
  from .exception import MetaflowException, MissingInMergeArtifactsException, UnhandledInMergeArtifactsException
  from .graph import FlowGraph
  from .unbounded_foreach import UnboundedForeachInput
  from .datastore.inputs import Inputs
label_desc: Use image node_id 1 to create a new FlowSpec object from inherited base classes: object with example: obj = FlowSpec(use_cli)