code: def _datasets(proto, prepare_data_iterator=True):
      datasets = OrderedDict()
      for i, d in enumerate(proto.dataset):
          datasets[d.name] = _create_dataset(
              d.uri,
              d.batch_size,
              d.shuffle,
              d.no_image_normalization,
              d.cache_dir,
              d.overwrite_cache,
              d.create_cache_explicitly,
              prepare_data_iterator,
              i,
          )
      return datasets
  
imports: import itertools
  import os
  import re
  from collections import OrderedDict
  import nnabla
  import nnabla.functions
  import nnabla.solver
  import numpy
  from nnabla.core.graph_optimizer import IdentityRemover
  from nnabla.initializer import NormalInitializer, UniformInitializer, ConstantInitializer, RangeInitializer
  from nnabla.logger import logger
  from nnabla.utils import nnabla_pb2
  from nnabla.utils.communicator_util import current_communicator, single_or_rankzero
  from nnabla.utils.create_cache import CreateCache
  from nnabla.utils.data_iterator import data_iterator_csv_dataset, data_iterator_cache
  from nnabla.utils.get_file_handle import get_initial_file_loader, load_files
  from nnabla.utils.learning_rate_scheduler import PolynomialScheduler, CosineScheduler, ExponentialScheduler, StepScheduler, LinearWarmupScheduler
label_desc: Use image node_id 10 for calling a global function with example usage: _datasets(proto, prepare_data_iterator) and returns: datasets