code: def test_subs_multiple():
      data = {"x": 1, "y": 2}
      assert subs_multiple((sum, [0, "x", "y", "z"]), data) == (
          sum,
          [0, 1, 2, "z"],
      )
      assert subs_multiple((sum, [0, ["x", "y", "z"]]), data) == (
          sum,
          [0, [1, 2, "z"]],
      )
  
      dsk = {"a": (sum, ["x", "y"])}
      assert subs_multiple(dsk, data) == {"a": (sum, [1, 2])}
  
      # Tuple key
      data = {"x": 1, ("y", 0): 2}
      dsk = {"a": (sum, ["x", ("y", 0)])}
      assert subs_multiple(dsk, data) == {"a": (sum, [1, 2])}
  
imports: from __future__ import annotations
  import asyncio
  import random
  from unittest import mock
  import pytest
  from dask.optimization import SubgraphCallable
  from distributed import wait
  from distributed.compatibility import asyncio_run
  from distributed.config import get_loop_factory
  from distributed.core import ConnectionPool, Status
  from distributed.utils_comm import WrappedKey, gather_from_workers, pack_data, retry, subs_multiple, unpack_remotedata
  from distributed.utils_test import BarrierGetData, BrokenComm, gen_cluster, inc
label_desc: Use image node_id 2 for calling a global function with example usage: test_subs_multiple() without return types