code: def shuffle_data_sources(
      self, generator: np.random.Generator
  ) -> "SparkExamplesIterable":
      partition_order = list(range(self.df.rdd.getNumPartitions()))
      generator.shuffle(partition_order)
      return SparkExamplesIterable(
          self.df, partition_order=partition_order
      )
  
imports: import os
  import posixpath
  import uuid
  from dataclasses import dataclass
  from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple, Union
  import numpy
  import pyarrow
  import datasets
  from datasets.arrow_writer import ArrowWriter, ParquetWriter
  from datasets.config import MAX_SHARD_SIZE
  from datasets.filesystems import is_remote_filesystem, rename
  from datasets.iterable_dataset import _BaseExamplesIterable
  from datasets.utils.py_utils import convert_file_size_to_int
label_desc: Use image node_id 3 for calling the SparkExamplesIterable obj's underlying member method code with example usage: obj.shuffle_data_sources(generator) and returns: SparkExamplesIterable