text: """Library for extracting device specific information common to entities."""
  
  from google_nest_sdm.device import Device
  from google_nest_sdm.device_traits import InfoTrait
  
  from .const import DOMAIN
  
  DEVICE_TYPE_MAP = {
      "sdm.devices.types.CAMERA": "Camera",
      "sdm.devices.types.DISPLAY": "Display",
      "sdm.devices.types.DOORBELL": "Doorbell",
      "sdm.devices.types.THERMOSTAT": "Thermostat",
  }
  
  
  class DeviceInfo:
      """Provide device info from the SDM device, shared across platforms."""
  
      device_brand = "Google Nest"
  
      def __init__(self, device: Device) -> None:
          """Initialize the DeviceInfo."""
          self._device = device
  
      @property
      def device_info(self):
          """Return device specific attributes."""
          return {
              # The API "name" field is a unique device identifier.
              "identifiers": {(DOMAIN, self._device.name)},
              "name": self.device_name,
              "manufacturer": self.device_brand,
              "model": self.device_model,
          }
  
      @property
      def device_name(self):
          """Return the name of the physical device that includes the sensor."""
          if InfoTrait.NAME in self._device.traits:
              trait = self._device.traits[InfoTrait.NAME]
              if trait.custom_name:
                  return trait.custom_name
          # Build a name from the room/structure.  Note: This room/structure name
          # is not associated with a home assistant Area.
          parent_relations = self._device.parent_relations
          if parent_relations:
              items = sorted(parent_relations.items())
              names = [name for id, name in items]
              return " ".join(names)
          return self.device_model
  
      @property
      def device_model(self):
          """Return device model information."""
          # The API intentionally returns minimal information about specific
          # devices, instead relying on traits, but we can infer a generic model
          # name based on the type
          return DEVICE_TYPE_MAP.get(self._device.type)
  