code: def test_complete_shuffle_multiple_shard():
      """Test that complete shuffle works with multiple shards."""
      X = np.random.rand(100, 10)
      dataset = dc.data.DiskDataset.from_numpy(X)
      dataset.reshard(shard_size=10)
      shuffled = dataset.complete_shuffle()
      assert len(shuffled) == len(dataset)
      assert not np.array_equal(shuffled.ids, dataset.ids)
      assert sorted(shuffled.ids) == sorted(dataset.ids)
      assert shuffled.X.shape == dataset.X.shape
      assert shuffled.y.shape == dataset.y.shape
      assert shuffled.w.shape == dataset.w.shape
      original_indices = dict(
          (id, i) for i, id in enumerate(dataset.ids)
      )
      shuffled_indices = dict(
          (id, i) for i, id in enumerate(shuffled.ids)
      )
      for id in dataset.ids:
          i = original_indices[id]
          j = shuffled_indices[id]
          assert np.array_equal(dataset.X[i], shuffled.X[j])
          assert np.array_equal(dataset.y[i], shuffled.y[j])
          assert np.array_equal(dataset.w[i], shuffled.w[j])
  
file_path: deepchem/deepchem/data/tests/test_shuffle.py
imports: import os
  import deepchem
  import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: test_complete_shuffle_multiple_shard() without return types