def METHOD_NAME(self, mode, **kwargs):
    """Downloads dataset."""
    default_root = os.path.join(DATA_HOME, self.__class__.__name__)
    filename, data_hash, url, zipfile_hash = self.SPLITS[mode]
    fullname = os.path.join(default_root, filename)
    if mode == "train":
        if not os.path.exists(fullname):
            get_path_from_url(url, default_root, zipfile_hash)
        unique_endpoints = _get_unique_endpoints(ParallelEnv().trainer_endpoints[:])
        if ParallelEnv().current_endpoint in unique_endpoints:
            file_num = len(os.listdir(fullname))
            if file_num != len(ALL_LANGUAGES):
                logger.warning(
                    "Number of train files is %d != %d, decompress again." % (file_num, len(ALL_LANGUAGES))
                )
                shutil.rmtree(fullname)
                _decompress(os.path.join(default_root, os.path.basename(url)))
    else:
        if not os.path.exists(fullname) or (data_hash and not md5file(fullname) == data_hash):
            get_path_from_url(url, default_root, zipfile_hash)
    return fullname