code: def _skipped_node_ids(
      node_states_dict: Dict[task_lib.NodeUid, pstate.NodeState]
  ) -> Set[str]:
      """Returns the nodes that are marked as skipped in partial run or by user."""
      skipped_node_ids = set()
      for node_uid, node_state in node_states_dict.items():
          if node_state.state in (
              pstate.NodeState.SKIPPED,
              pstate.NodeState.SKIPPED_PARTIAL_RUN,
          ):
              skipped_node_ids.add(node_uid.node_id)
      return skipped_node_ids
  
imports: import collections
  import textwrap
  from typing import Callable, Dict, List, Mapping, Optional, Set
  from absl import logging
  from tfx.orchestration import node_proto_view
  from tfx.orchestration.experimental.core import mlmd_state
  from tfx.orchestration.experimental.core import pipeline_state
  from tfx.orchestration.experimental.core import service_jobs
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.experimental.core import task_gen
  from tfx.orchestration.experimental.core import task_gen_utils
  from tfx.orchestration import mlmd_connection_manager
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.orchestration.portable.mlmd import execution_lib
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import status
  from tfx.utils import topsort
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 1 for calling a global function with example usage: _skipped_node_ids(node_states_dict) and returns: skipped_node_ids