class_docstr: SimpleDataSource
  
  Get data from user defined function.
code: def _generate_order(self, generation):
      for s in self._orders:
          if s.generation == generation:
              return
  
      class Snapshot:
          pass
  
      snapshot = Snapshot()
      snapshot.order = (
          self._rng.permutation(self._size)
          if self._shuffle
          else numpy.arange(self._size)
      )
      snapshot.generation = generation
      self._orders.append(snapshot)
  
imports: import atexit
  import csv
  import os
  import threading
  from collections import OrderedDict, deque
  from time import sleep
  import numpy
  from nnabla.config import nnabla_config
  from nnabla.logger import logger
  from nnabla.utils.communicator_util import current_communicator
  from six.moves import queue
  from .data_source import DataSource
  from .data_source_loader import FileReader, load
label_desc: Use image node_id 4 for calling the SimpleDataSource obj's underlying member method code with example usage: obj._generate_order(generation) without return types