code: def get_artifacts(
      self,
      ds_type,
      ds_root,
      data_metadata,
      flow_name,
      run_id,
      step_name,
      task_id,
      names,
  ):
      ds = self._get_flow_datastore(ds_type, ds_root, flow_name)
  
      # We get the task datastore for this task
      task_ds = ds.get_task_datastore(
          run_id, step_name, task_id, data_metadata=data_metadata
      )
      # note that load_artifacts uses flow_datastore.castore which goes
      # through one of the self._blob_cache
      return task_ds.load_artifacts(names)
  
imports: from __future__ import print_function
  from collections import OrderedDict
  import os
  import sys
  import time
  from tempfile import NamedTemporaryFile
  from hashlib import sha1
  from metaflow.datastore import FlowDataStore
  from metaflow.datastore.content_addressed_store import BlobCache
  from metaflow.exception import MetaflowException
  from metaflow.metaflow_config import CLIENT_CACHE_PATH, CLIENT_CACHE_MAX_SIZE, CLIENT_CACHE_MAX_FLOWDATASTORE_COUNT, CLIENT_CACHE_MAX_TASKDATASTORE_COUNT
  from metaflow.plugins import DATASTORES
label_desc: Use image node_id 13 for calling the FileCache obj's underlying member method code with example usage: obj.get_artifacts(ds_type, ds_root, data_metadata, flow_name, run_id, step_name, task_id, names) and returns: task_ds