From 9a747bafa398185eb3d4fe041c52acfbb8264372 Mon Sep 17 00:00:00 2001
From: Raman Gupta <7243222+raman325@users.noreply.github.com>
Date: Sat, 5 Nov 2022 05:33:56 -0400
Subject: [PATCH] Use enums instead of deprecated constants (#81591)

---
 .../components/eight_sleep/sensor.py          |  6 +-
 homeassistant/components/tomorrowio/sensor.py | 38 +++++-----
 .../components/tomorrowio/weather.py          | 19 +++--
 homeassistant/components/zwave_js/climate.py  | 15 ++--
 .../zwave_js/discovery_data_template.py       | 71 ++++++++-----------
 5 files changed, 67 insertions(+), 82 deletions(-)

diff --git a/homeassistant/components/eight_sleep/sensor.py b/homeassistant/components/eight_sleep/sensor.py
index b07865d8591..7cce1293707 100644
--- a/homeassistant/components/eight_sleep/sensor.py
+++ b/homeassistant/components/eight_sleep/sensor.py
@@ -9,7 +9,7 @@ import voluptuous as vol
 
 from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
 from homeassistant.config_entries import ConfigEntry
-from homeassistant.const import PERCENTAGE, TEMP_CELSIUS
+from homeassistant.const import PERCENTAGE, UnitOfTemperature
 from homeassistant.core import HomeAssistant
 from homeassistant.helpers import entity_platform as ep
 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
@@ -175,7 +175,7 @@ class EightUserSensor(EightSleepBaseEntity, SensorEntity):
         if self._sensor == "bed_temperature":
             self._attr_icon = "mdi:thermometer"
             self._attr_device_class = SensorDeviceClass.TEMPERATURE
-            self._attr_native_unit_of_measurement = TEMP_CELSIUS
+            self._attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
         elif self._sensor in ("current_sleep", "last_sleep", "current_sleep_fitness"):
             self._attr_native_unit_of_measurement = "Score"
 
@@ -272,7 +272,7 @@ class EightRoomSensor(EightSleepBaseEntity, SensorEntity):
 
     _attr_icon = "mdi:thermometer"
     _attr_device_class = SensorDeviceClass.TEMPERATURE
-    _attr_native_unit_of_measurement = TEMP_CELSIUS
+    _attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
 
     def __init__(
         self,
diff --git a/homeassistant/components/tomorrowio/sensor.py b/homeassistant/components/tomorrowio/sensor.py
index 07b922e72ed..a174d983131 100644
--- a/homeassistant/components/tomorrowio/sensor.py
+++ b/homeassistant/components/tomorrowio/sensor.py
@@ -26,13 +26,11 @@ from homeassistant.const import (
     CONF_NAME,
     IRRADIATION_BTUS_PER_HOUR_SQUARE_FOOT,
     IRRADIATION_WATTS_PER_SQUARE_METER,
-    LENGTH_KILOMETERS,
-    LENGTH_MILES,
     PERCENTAGE,
-    PRESSURE_HPA,
-    SPEED_METERS_PER_SECOND,
-    SPEED_MILES_PER_HOUR,
-    TEMP_CELSIUS,
+    UnitOfLength,
+    UnitOfPressure,
+    UnitOfSpeed,
+    UnitOfTemperature,
 )
 from homeassistant.core import HomeAssistant
 from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -103,20 +101,20 @@ SENSOR_TYPES = (
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_FEELS_LIKE,
         name="Feels Like",
-        native_unit_of_measurement=TEMP_CELSIUS,
+        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
     ),
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_DEW_POINT,
         name="Dew Point",
-        native_unit_of_measurement=TEMP_CELSIUS,
+        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
     ),
     # Data comes in as hPa
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_PRESSURE_SURFACE_LEVEL,
         name="Pressure (Surface Level)",
-        native_unit_of_measurement=PRESSURE_HPA,
+        native_unit_of_measurement=UnitOfPressure.HPA,
         device_class=SensorDeviceClass.PRESSURE,
     ),
     # Data comes in as W/m^2, convert to BTUs/(hr * ft^2) for imperial
@@ -132,20 +130,24 @@ SENSOR_TYPES = (
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_CLOUD_BASE,
         name="Cloud Base",
-        unit_imperial=LENGTH_MILES,
-        unit_metric=LENGTH_KILOMETERS,
+        unit_imperial=UnitOfLength.MILES,
+        unit_metric=UnitOfLength.KILOMETERS,
         imperial_conversion=lambda val: DistanceConverter.convert(
-            val, LENGTH_KILOMETERS, LENGTH_MILES
+            val,
+            UnitOfLength.KILOMETERS,
+            UnitOfLength.MILES,
         ),
     ),
     # Data comes in as km, convert to miles for imperial
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_CLOUD_CEILING,
         name="Cloud Ceiling",
-        unit_imperial=LENGTH_MILES,
-        unit_metric=LENGTH_KILOMETERS,
+        unit_imperial=UnitOfLength.MILES,
+        unit_metric=UnitOfLength.KILOMETERS,
         imperial_conversion=lambda val: DistanceConverter.convert(
-            val, LENGTH_KILOMETERS, LENGTH_MILES
+            val,
+            UnitOfLength.KILOMETERS,
+            UnitOfLength.MILES,
         ),
     ),
     TomorrowioSensorEntityDescription(
@@ -157,10 +159,10 @@ SENSOR_TYPES = (
     TomorrowioSensorEntityDescription(
         key=TMRW_ATTR_WIND_GUST,
         name="Wind Gust",
-        unit_imperial=SPEED_MILES_PER_HOUR,
-        unit_metric=SPEED_METERS_PER_SECOND,
+        unit_imperial=UnitOfSpeed.MILES_PER_HOUR,
+        unit_metric=UnitOfSpeed.METERS_PER_SECOND,
         imperial_conversion=lambda val: SpeedConverter.convert(
-            val, SPEED_METERS_PER_SECOND, SPEED_MILES_PER_HOUR
+            val, UnitOfSpeed.METERS_PER_SECOND, UnitOfSpeed.MILES_PER_HOUR
         ),
     ),
     TomorrowioSensorEntityDescription(
diff --git a/homeassistant/components/tomorrowio/weather.py b/homeassistant/components/tomorrowio/weather.py
index 07ea079b1ce..1acc42e900b 100644
--- a/homeassistant/components/tomorrowio/weather.py
+++ b/homeassistant/components/tomorrowio/weather.py
@@ -21,11 +21,10 @@ from homeassistant.config_entries import ConfigEntry
 from homeassistant.const import (
     CONF_API_KEY,
     CONF_NAME,
-    LENGTH_KILOMETERS,
-    LENGTH_MILLIMETERS,
-    PRESSURE_HPA,
-    SPEED_METERS_PER_SECOND,
-    TEMP_CELSIUS,
+    UnitOfLength,
+    UnitOfPressure,
+    UnitOfSpeed,
+    UnitOfTemperature,
 )
 from homeassistant.core import HomeAssistant
 from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -74,11 +73,11 @@ async def async_setup_entry(
 class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
     """Entity that talks to Tomorrow.io v4 API to retrieve weather data."""
 
-    _attr_native_precipitation_unit = LENGTH_MILLIMETERS
-    _attr_native_pressure_unit = PRESSURE_HPA
-    _attr_native_temperature_unit = TEMP_CELSIUS
-    _attr_native_visibility_unit = LENGTH_KILOMETERS
-    _attr_native_wind_speed_unit = SPEED_METERS_PER_SECOND
+    _attr_native_precipitation_unit = UnitOfLength.MILLIMETERS
+    _attr_native_pressure_unit = UnitOfPressure.HPA
+    _attr_native_temperature_unit = UnitOfTemperature.CELSIUS
+    _attr_native_visibility_unit = UnitOfLength.KILOMETERS
+    _attr_native_wind_speed_unit = UnitOfSpeed.METERS_PER_SECOND
 
     def __init__(
         self,
diff --git a/homeassistant/components/zwave_js/climate.py b/homeassistant/components/zwave_js/climate.py
index 6cbb1ea3016..06f2d225742 100644
--- a/homeassistant/components/zwave_js/climate.py
+++ b/homeassistant/components/zwave_js/climate.py
@@ -34,12 +34,7 @@ from homeassistant.components.climate import (
     HVACMode,
 )
 from homeassistant.config_entries import ConfigEntry
-from homeassistant.const import (
-    ATTR_TEMPERATURE,
-    PRECISION_TENTHS,
-    TEMP_CELSIUS,
-    TEMP_FAHRENHEIT,
-)
+from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS, UnitOfTemperature
 from homeassistant.core import HomeAssistant, callback
 from homeassistant.helpers.dispatcher import async_dispatcher_connect
 from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -260,8 +255,8 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
             and self._unit_value.metadata.unit
             and "f" in self._unit_value.metadata.unit.lower()
         ):
-            return TEMP_FAHRENHEIT
-        return TEMP_CELSIUS
+            return UnitOfTemperature.FAHRENHEIT
+        return UnitOfTemperature.CELSIUS
 
     @property
     def hvac_mode(self) -> HVACMode:
@@ -398,7 +393,7 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
     def min_temp(self) -> float:
         """Return the minimum temperature."""
         min_temp = DEFAULT_MIN_TEMP
-        base_unit = TEMP_CELSIUS
+        base_unit: str = UnitOfTemperature.CELSIUS
         try:
             temp = self._setpoint_value_or_raise(self._current_mode_setpoint_enums[0])
             if temp.metadata.min:
@@ -414,7 +409,7 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
     def max_temp(self) -> float:
         """Return the maximum temperature."""
         max_temp = DEFAULT_MAX_TEMP
-        base_unit = TEMP_CELSIUS
+        base_unit: str = UnitOfTemperature.CELSIUS
         try:
             temp = self._setpoint_value_or_raise(self._current_mode_setpoint_enums[0])
             if temp.metadata.max:
diff --git a/homeassistant/components/zwave_js/discovery_data_template.py b/homeassistant/components/zwave_js/discovery_data_template.py
index 5b20572c2d8..0ee7c3d758e 100644
--- a/homeassistant/components/zwave_js/discovery_data_template.py
+++ b/homeassistant/components/zwave_js/discovery_data_template.py
@@ -96,35 +96,24 @@ from homeassistant.const import (
     ELECTRIC_CURRENT_MILLIAMPERE,
     ELECTRIC_POTENTIAL_MILLIVOLT,
     ELECTRIC_POTENTIAL_VOLT,
-    ENERGY_KILO_WATT_HOUR,
     FREQUENCY_HERTZ,
     FREQUENCY_KILOHERTZ,
     IRRADIATION_WATTS_PER_SQUARE_METER,
-    LENGTH_CENTIMETERS,
-    LENGTH_FEET,
-    LENGTH_METERS,
     LIGHT_LUX,
-    MASS_KILOGRAMS,
-    MASS_POUNDS,
     PERCENTAGE,
-    POWER_BTU_PER_HOUR,
-    POWER_WATT,
-    PRESSURE_INHG,
-    PRESSURE_MMHG,
-    PRESSURE_PSI,
     SIGNAL_STRENGTH_DECIBELS,
     SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
-    SPEED_METERS_PER_SECOND,
-    SPEED_MILES_PER_HOUR,
-    TEMP_CELSIUS,
-    TEMP_FAHRENHEIT,
     TIME_SECONDS,
-    VOLUME_CUBIC_FEET,
-    VOLUME_CUBIC_METERS,
     VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE,
     VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
-    VOLUME_GALLONS,
-    VOLUME_LITERS,
+    UnitOfEnergy,
+    UnitOfLength,
+    UnitOfMass,
+    UnitOfPower,
+    UnitOfPressure,
+    UnitOfSpeed,
+    UnitOfTemperature,
+    UnitOfVolume,
     UnitOfVolumetricFlux,
 )
 
@@ -173,21 +162,21 @@ MULTILEVEL_SENSOR_DEVICE_CLASS_MAP: dict[str, set[MultilevelSensorType]] = {
 
 METER_UNIT_MAP: dict[str, set[MeterScaleType]] = {
     ELECTRIC_CURRENT_AMPERE: METER_UNIT_AMPERE,
-    VOLUME_CUBIC_FEET: UNIT_CUBIC_FEET,
-    VOLUME_CUBIC_METERS: METER_UNIT_CUBIC_METER,
-    VOLUME_GALLONS: UNIT_US_GALLON,
-    ENERGY_KILO_WATT_HOUR: UNIT_KILOWATT_HOUR,
+    UnitOfVolume.CUBIC_FEET: UNIT_CUBIC_FEET,
+    UnitOfVolume.CUBIC_METERS: METER_UNIT_CUBIC_METER,
+    UnitOfVolume.GALLONS: UNIT_US_GALLON,
+    UnitOfEnergy.KILO_WATT_HOUR: UNIT_KILOWATT_HOUR,
     ELECTRIC_POTENTIAL_VOLT: METER_UNIT_VOLT,
-    POWER_WATT: METER_UNIT_WATT,
+    UnitOfPower.WATT: METER_UNIT_WATT,
 }
 
 MULTILEVEL_SENSOR_UNIT_MAP: dict[str, set[MultilevelSensorScaleType]] = {
     ELECTRIC_CURRENT_AMPERE: SENSOR_UNIT_AMPERE,
-    POWER_BTU_PER_HOUR: UNIT_BTU_H,
-    TEMP_CELSIUS: UNIT_CELSIUS,
-    LENGTH_CENTIMETERS: UNIT_CENTIMETER,
+    UnitOfPower.BTU_PER_HOUR: UNIT_BTU_H,
+    UnitOfTemperature.CELSIUS: UNIT_CELSIUS,
+    UnitOfLength.CENTIMETERS: UNIT_CENTIMETER,
     VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE: UNIT_CUBIC_FEET_PER_MINUTE,
-    VOLUME_CUBIC_METERS: SENSOR_UNIT_CUBIC_METER,
+    UnitOfVolume.CUBIC_METERS: SENSOR_UNIT_CUBIC_METER,
     VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR: UNIT_CUBIC_METER_PER_HOUR,
     SIGNAL_STRENGTH_DECIBELS: UNIT_DECIBEL,
     DEGREE: UNIT_DEGREES,
@@ -195,31 +184,31 @@ MULTILEVEL_SENSOR_UNIT_MAP: dict[str, set[MultilevelSensorScaleType]] = {
         *UNIT_DENSITY,
         *UNIT_MICROGRAM_PER_CUBIC_METER,
     },
-    TEMP_FAHRENHEIT: UNIT_FAHRENHEIT,
-    LENGTH_FEET: UNIT_FEET,
-    VOLUME_GALLONS: UNIT_GALLONS,
+    UnitOfTemperature.FAHRENHEIT: UNIT_FAHRENHEIT,
+    UnitOfLength.FEET: UNIT_FEET,
+    UnitOfVolume.GALLONS: UNIT_GALLONS,
     FREQUENCY_HERTZ: UNIT_HERTZ,
-    PRESSURE_INHG: UNIT_INCHES_OF_MERCURY,
+    UnitOfPressure.INHG: UNIT_INCHES_OF_MERCURY,
     UnitOfVolumetricFlux.INCHES_PER_HOUR: UNIT_INCHES_PER_HOUR,
-    MASS_KILOGRAMS: UNIT_KILOGRAM,
+    UnitOfMass.KILOGRAMS: UNIT_KILOGRAM,
     FREQUENCY_KILOHERTZ: UNIT_KILOHERTZ,
-    VOLUME_LITERS: UNIT_LITER,
+    UnitOfVolume.LITERS: UNIT_LITER,
     LIGHT_LUX: UNIT_LUX,
-    LENGTH_METERS: UNIT_METER,
+    UnitOfLength.METERS: UNIT_METER,
     ELECTRIC_CURRENT_MILLIAMPERE: UNIT_MILLIAMPERE,
     UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR: UNIT_MILLIMETER_HOUR,
     ELECTRIC_POTENTIAL_MILLIVOLT: UNIT_MILLIVOLT,
-    SPEED_MILES_PER_HOUR: UNIT_MPH,
-    SPEED_METERS_PER_SECOND: UNIT_M_S,
+    UnitOfSpeed.MILES_PER_HOUR: UNIT_MPH,
+    UnitOfSpeed.METERS_PER_SECOND: UNIT_M_S,
     CONCENTRATION_PARTS_PER_MILLION: UNIT_PARTS_MILLION,
     PERCENTAGE: {*UNIT_PERCENTAGE_VALUE, *UNIT_RSSI},
-    MASS_POUNDS: UNIT_POUNDS,
-    PRESSURE_PSI: UNIT_POUND_PER_SQUARE_INCH,
+    UnitOfMass.POUNDS: UNIT_POUNDS,
+    UnitOfPressure.PSI: UNIT_POUND_PER_SQUARE_INCH,
     SIGNAL_STRENGTH_DECIBELS_MILLIWATT: UNIT_POWER_LEVEL,
     TIME_SECONDS: UNIT_SECOND,
-    PRESSURE_MMHG: UNIT_SYSTOLIC,
+    UnitOfPressure.MMHG: UNIT_SYSTOLIC,
     ELECTRIC_POTENTIAL_VOLT: SENSOR_UNIT_VOLT,
-    POWER_WATT: SENSOR_UNIT_WATT,
+    UnitOfPower.WATT: SENSOR_UNIT_WATT,
     IRRADIATION_WATTS_PER_SQUARE_METER: UNIT_WATT_PER_SQUARE_METER,
 }
 
-- 
GitLab