code: def _download_no_key_artifact(self):
      if self.is_mutable:
          self.logger.info(
              "Downloading mutable artifact: %s", self.name
          )
      if self.remote_path is None:
          msg: str = "CANNOT download artifact without remote path: {0}".format(
              self.name
          )
          util.report_fatal(msg, self.logger)
  
      key = self._generate_key()
      local_path = artifacts_tracker.get_blob_cache(key)
      local_path = self._get_target_local_path(
          local_path, self.remote_path
      )
      if os.path.exists(local_path):
          msg: str = (
              "Immutable artifact exists at local_path {0},"
              + " skipping the download"
          ).format(local_path)
          self.logger.debug(msg)
          self.local_path = local_path
          return local_path
  
      if (
          self.storage_handler.type == StorageType.storageDockerHub
          or self.storage_handler.type == StorageType.storageSHub
      ):
          msg: str = (
              "Qualified {0} points to a shub or dockerhub,"
              + " skipping the download"
          ).format(self.remote_path)
          self.logger.debug(msg)
          return self.remote_path
  
      self.storage_handler.download_remote_path(
          self.remote_path, local_path
      )
  
      self.logger.debug(
          "Downloaded file %s from external source %s",
          local_path,
          self.remote_path,
      )
      self.local_path = local_path
      # self.key = key
      return self.local_path
  
imports: import hashlib
  import os
  import re
  import tarfile
  from typing import Dict
  from studio.artifacts import artifacts_tracker
  from studio.util import util, logs
  from studio.credentials import credentials
  from studio.storage import storage_setup
  from studio.storage.storage_type import StorageType
  from studio.storage.storage_handler import StorageHandler
  from studio.storage.storage_handler_factory import StorageHandlerFactory
  from studio.storage.storage_util import tar_artifact, untar_artifact
label_desc: Use image node_id 4 for calling the Artifact obj's underlying member method code with example usage: obj._download_no_key_artifact() and returns: self, local_path, self