code: def reset(self):
      if self._shuffle:
          logger.debug("Shuffle start.")
          self._order = list(
              self._rng.permutation(list(range(self._size)))
          )
          logger.debug("Shuffle end.")
      self._generation += 1
      super(CsvDataSource, self).reset()
  
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 7 for calling the CsvDataSource obj's underlying member method code with example usage: obj.reset() without return types