code: def list_eq(aa, bb):
      if isinstance(aa, dd.DataFrame):
          a = aa.compute(scheduler="sync")
      else:
          a = aa
      if isinstance(bb, dd.DataFrame):
          b = bb.compute(scheduler="sync")
      else:
          b = bb
      tm.assert_index_equal(a.columns, b.columns)
  
      if isinstance(a, pd.DataFrame):
          av = a.sort_values(list(a.columns)).values
          bv = b.sort_values(list(b.columns)).values
      else:
          av = a.sort_values().values
          bv = b.sort_values().values
  
      dd._compat.assert_numpy_array_equal(av, bv)
  
imports: from __future__ import annotations
  import asyncio
  import contextlib
  from typing import Any
  from unittest import mock
  import pytest
  from dask.typing import Key
  from distributed import Worker
  from distributed.shuffle._core import ShuffleId, ShuffleSpec, id_from_key
  from distributed.shuffle._merge import hash_join
  from distributed.shuffle._worker_plugin import ShuffleRun, _ShuffleRunManager
  from distributed.utils_test import gen_cluster
  import pandas
  import dask
  from dask.dataframe._compat import PANDAS_GE_200, tm
  from dask.dataframe.utils import assert_eq
  from dask.utils_test import hlg_layer_topological
label_desc: Use image node_id 1 for calling a global function with example usage: list_eq(aa, bb) without return types