code: def get_offers(
      self, requirements: Optional[Requirements] = None
  ) -> List[InstanceOfferWithAvailability]:
      offers = get_catalog_offers(
          backend=BackendType.DATACRUNCH,
          locations=self.config.regions,
          requirements=requirements,
      )
      offers_with_availability = self._get_offers_with_availability(
          offers
      )
      return offers_with_availability
  
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 2 for calling the DataCrunchCompute obj's underlying member method code with example usage: obj.get_offers(requirements) and returns: offers_with_availability