code: def collections_with_node_counters():
      cnt = NodeCounter()
      df = pd.DataFrame({"x": list(range(10))})
  
      # Test two samples of all collections where applicable, one with multiple chunks
      # and one with a single chunk
      colls = [
          # dask.delayed
          delayed(cnt.f)("Hello 1"),  # 1 chunk
          # dask.array
          da.ones((10, 10), chunks=5).map_blocks(cnt.f),  # 4 chunks
          da.ones((1,), chunks=-1).map_blocks(cnt.f),  # 1 chunk
          # dask.bag
          db.from_sequence([1, 2], npartitions=2).map(
              cnt.f
          ),  # 2 chunks
          db.from_sequence([1], npartitions=1).map(cnt.f),  # 1 chunk
          db.Item.from_delayed(delayed(cnt.f)("Hello 2")),  # 1 chunk
          # dask.dataframe
          dd.from_pandas(df, npartitions=2).map_partitions(
              cnt.f
          ),  # 2 chunks
          dd.from_pandas(df, npartitions=1).map_partitions(
              cnt.f
          ),  # 1 chunk
          dd.from_pandas(df["x"], npartitions=2).map_partitions(
              cnt.f
          ),  # 2 chunks
          dd.from_pandas(df["x"], npartitions=1).map_partitions(
              cnt.f
          ),  # 1 chunk
      ]
      cnt.n = 0
      return colls, cnt
  
imports: from __future__ import annotations
  import random
  import time
  from operator import add
  import pytest
  import dask
  import dask.bag
  from dask import delayed
  from dask.base import clone_key
  from dask.blockwise import Blockwise
  from dask.graph_manipulation import bind, checkpoint, chunks, clone, wait_on
  from dask.highlevelgraph import HighLevelGraph
  from dask.tests.test_base import Tuple
  from dask.utils_test import import_or_none
label_desc: Use image node_id 3 for calling a global function with example usage: collections_with_node_counters() and returns: colls,  cnt