class_docstr: Data provider for managing experiment lifecycle.
class_docstr_tok: ["Data","provider","for","managing","experiment","lifecycle","."]
code: def get_artifacts(self, key):
      if isinstance(key, str):
          experiment = self.get_experiment(key, getinfo=False)
      else:
          experiment = key
  
      retval = {}
      for tag, art in experiment.artifacts.items():
          url = art.get_url()
          if url is not None:
              retval[tag] = url
  
      return retval
  
imports: import time
  from concurrent.futures import ThreadPoolExecutor, wait
  from studio.util import util, logs
  from studio.storage.storage_handler import StorageHandler
  from studio.artifacts.artifact import Artifact
  from studio.experiments.experiment import Experiment, experiment_from_dict
  from studio.storage.storage_setup import get_storage_verbose_level
  from studio.util.util import retry, report_fatal, compression_to_extension, check_for_kb_interrupt
label_desc: Use image node_id 23 for calling the KeyValueProvider obj's underlying member method code with example usage: obj.get_artifacts(key) and returns: retval