class_docstr: Data provider for managing experiment lifecycle.
class_docstr_tok: ["Data","provider","for","managing","experiment","lifecycle","."]
code: def __init__(
      self, db_config, handler: StorageHandler, compression=None
  ):
      self.logger = logs.get_logger(self.__class__.__name__)
      self.logger.setLevel(get_storage_verbose_level())
  
      self.compression = compression
      if self.compression is None:
          self.compression = db_config.get("compression", None)
  
      self.auth = None
  
      self.storage_handler = handler
  
      self.max_keys = db_config.get("max_keys", 100)
  
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 1 to create a new KeyValueProvider object  with example: obj = KeyValueProvider(db_config, handler, compression)