class_docstr: Base Self Supervised Learning Dataset Class.
  
  The GenericSSLDataset class is defined to support reading data
  from multiple data sources. For example: data = [dataset1, dataset2]
  and the minibatches generated will have the corresponding data
  from each dataset.
  
  For this reason, we also support labels from multiple sources. For example
  targets = [dataset1 targets, dataset2 targets].
  
  In order to support multiple data sources, the dataset configuration
  always has list inputs.
      - DATA_SOURCES, LABEL_SOURCES, DATASET_NAMES, DATA_PATHS, LABEL_PATHS
  
  For several data sources, we also support specifying on what dataset the
  transforms should be applied. By default, apply the transforms
  on data from all datasets.
  
  Args:
      cfg (AttrDict): configuration defined by user
      split (str): the dataset split for which we are constructing the Dataset object
      dataset_source_map (Dict[str, Callable]): The dictionary that maps
                  what data sources are supported and what object to use to read
                  data from those sources. For example:
                  DATASET_SOURCE_MAP = {
                      "disk_filelist": DiskImageDataset,
                      "disk_folder": DiskImageDataset,
                      "synthetic": SyntheticImageDataset,
                  }
      data_sources_with_subset (Set[str]): the set of datasets for which the subset
                  operation is supported inside GenericSSLDataset
class_docstr_tok: ["Base","Self","Supervised","Learning","Dataset","Class",".","The","GenericSSLDataset","class","is","defined","to","support","reading","data","from","multiple","data","sources",".","For","example",":","data","=","[","dataset1",",","dataset2","]","and","the","minibatches","generated","will","have","the","corresponding","data","from","each","dataset",".","For","this","reason",",","we","also","support","labels","from","multiple","sources",".","For","example","targets","=","[","dataset1","targets",",","dataset2","targets","]",".","In","order","to","support","multiple","data","sources",",","the","dataset","configuration","always","has","list","inputs",".","-","DATA_SOURCES",",","LABEL_SOURCES",",","DATASET_NAMES",",","DATA_PATHS",",","LABEL_PATHS","For","several","data","sources",",","we","also","support","specifying","on","what","dataset","the","transforms","should","be","applied",".","By","default",",","apply","the","transforms","on","data","from","all","datasets",".","Args",":","cfg","(","AttrDict",")",":","configuration","defined","by","user","split","(","str",")",":","the","dataset","split","for","which","we","are","constructing","the","Dataset","object","dataset_source_map","(","Dict","[","str",",","Callable","]",")",":","The","dictionary","that","maps","what","data","sources","are","supported","and","what","object","to","use","to","read","data","from","those","sources",".","For","example",":","DATASET_SOURCE_MAP","=","{","``","disk_filelist","''",":","DiskImageDataset",",","``","disk_folder","''",":","DiskImageDataset",",","``","synthetic","''",":","SyntheticImageDataset",",","}","data_sources_with_subset","(","Set","[","str","]",")",":","the","set","of","datasets","for","which","the","subset","operation","is","supported","inside","GenericSSLDataset"]
docstr: Get the given dataset split (train or test), get the path to the dataset
  (images and labels).
  1. If the user has explicitly specified the data_sources, we simply
     use those and don't do lookup in the datasets registered with VISSL
     from the dataset catalog.
  2. If the user hasn't specified the path, look for the dataset in
     the datasets catalog registered with VISSL. For a given list of datasets
     and a given partition (train/test), we first verify that we have the
     dataset and the correct source as specified by the user.
     Then for each dataset in the list, we get the data path (make sure it
     exists, sources match). For the label file, the file is optional.
docstr_tok: ["Get","the","given","dataset","split","(","train","or","test",")",",","get","the","path","to","the","dataset","(","images","and","labels",")",".","1",".","If","the","user","has","explicitly","specified","the","data_sources",",","we","simply","use","those","and","do","n't","do","lookup","in","the","datasets","registered","with","VISSL","from","the","dataset","catalog",".","2",".","If","the","user","has","n't","specified","the","path",",","look","for","the","dataset","in","the","datasets","catalog","registered","with","VISSL",".","For","a","given","list","of","datasets","and","a","given","partition","(","train\/test",")",",","we","first","verify","that","we","have","the","dataset","and","the","correct","source","as","specified","by","the","user",".","Then","for","each","dataset","in","the","list",",","we","get","the","data","path","(","make","sure","it","exists",",","sources","match",")",".","For","the","label","file",",","the","file","is","optional","."]
code: def _get_data_files(self, split):
      """
      Get the given dataset split (train or test), get the path to the dataset
      (images and labels).
      1. If the user has explicitly specified the data_sources, we simply
         use those and don't do lookup in the datasets registered with VISSL
         from the dataset catalog.
      2. If the user hasn't specified the path, look for the dataset in
         the datasets catalog registered with VISSL. For a given list of datasets
         and a given partition (train/test), we first verify that we have the
         dataset and the correct source as specified by the user.
         Then for each dataset in the list, we get the data path (make sure it
         exists, sources match). For the label file, the file is optional.
      """
      local_rank, _ = get_machine_local_and_dist_rank()
      (
          self.data_paths,
          self.label_paths,
      ) = dataset_catalog.get_data_files(
          split, dataset_config=self.cfg["DATA"]
      )
  
      logging.info(
          f"Rank: {local_rank} split: {split} Data files:\n{self.data_paths}"
      )
      logging.info(
          f"Rank: {local_rank} split: {split} Label files:\n{self.label_paths}"
      )
  
imports: import logging
  from typing import Any, Callable, Dict, Set
  import numpy
  from classy_vision.generic.distributed_util import get_world_size
  from iopath.common.file_io import g_pathmgr
  from vissl.config import AttrDict
  from vissl.data import dataset_catalog
  from vissl.data.data_helper import balanced_sub_sampling, unbalanced_sub_sampling
  from vissl.data.ssl_transforms import get_transform
  from vissl.data.vissl_dataset_base import VisslDatasetBase
  from vissl.utils.checkpoint import get_checkpoint_folder
  from vissl.utils.env import get_machine_local_and_dist_rank
  from vissl.utils.io import save_file
label_desc: Use image node_id 4 for calling the GenericSSLDataset obj's underlying member method code with example usage: obj._get_data_files(split) without return types