code: def __init__(self, config: DataCrunchConfig):
      self.config = config
      self.api_client = DataCrunchAPIClient(
          config.creds.client_id, config.creds.client_secret
      )
  
file_path: dstack/src/dstack/_internal/core/backends/datacrunch/compute.py
imports: from typing import Dict, List, Optional
  from dstack._internal.core.backends.base import Compute
  from dstack._internal.core.backends.base.compute import get_shim_commands
  from dstack._internal.core.backends.base.offers import get_catalog_offers
  from dstack._internal.core.backends.datacrunch.api_client import DataCrunchAPIClient
  from dstack._internal.core.backends.datacrunch.config import DataCrunchConfig
  from dstack._internal.core.errors import BackendError
  from dstack._internal.core.models.backends.base import BackendType
  from dstack._internal.core.models.instances import InstanceAvailability, InstanceOffer, InstanceOfferWithAvailability, InstanceState, LaunchedInstanceInfo
  from dstack._internal.core.models.runs import Job, Requirements, Run
label_desc: Use image node_id 1 to create a new DataCrunchCompute object from inherited base classes: Compute with example: obj = DataCrunchCompute(config)