code: def test_dont_merge_before_reductions():
      x = da.ones(10, chunks=(5,))
      y = da.blockwise(inc, "i", x, "i", dtype=x.dtype)
      z = da.blockwise(sum, "", y, "i", dtype=y.dtype)
      w = da.blockwise(sum, "", z, "", dtype=y.dtype)
  
      dsk = optimize_blockwise(w.dask)
  
      assert (
          len(
              [
                  d
                  for d in dsk.layers.values()
                  if isinstance(d, Blockwise)
              ]
          )
          == 2
      )
  
      z.compute()
  
imports: from __future__ import annotations
  import collections
  from operator import add
  import numpy
  import pytest
  import dask
  import dask.array
  from dask.array.utils import assert_eq
  from dask.blockwise import _BLOCKWISE_DEFAULT_PREFIX, Blockwise, _unique_dep, index_subs, optimize_blockwise, rewrite_blockwise
  from dask.highlevelgraph import HighLevelGraph
  from dask.utils_test import dec, hlg_layer_topological, inc
label_desc: Use image node_id 29 for calling a global function with example usage: test_dont_merge_before_reductions() without return types