code: def test_deep_bases_win_over_dependents(abcde):
      r"""
      It's not clear who should run first, e or d
  
      1.  d is nicer because it exposes parallelism
      2.  e is nicer (hypothetically) because it will be sooner released
          (though in this case we need d to run first regardless)
  
      Regardless of e or d first, we should run b before c.
  
              a
            / | \   .
           b  c |
          / \ | /
         e    d
      """
      a, b, c, d, e = abcde
      dsk = {a: (f, b, c, d), b: (f, d, e), c: (f, d), d: 1, e: 2}
  
      o = order(dsk)
      assert_topological_sort(dsk, o)
      assert o[b] < o[c]
  
imports: from __future__ import annotations
  import inspect
  import pytest
  import dask
  from dask import delayed
  from dask.base import collections_to_dsk, key_split, visualize_dsk
  from dask.core import get_deps
  from dask.order import _connecting_to_roots, diagnostics, ndependencies, order
  from dask.utils_test import add, inc
label_desc: Use image node_id 9 for calling a global function with example usage: test_deep_bases_win_over_dependents(abcde) without return types