From b82a57d861dda30baabfbd9c6670ccc17cb86069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 19 Jan 2022 09:52:22 +0100 Subject: [PATCH] Clean up Launch Library consts (#64420) --- .../components/launch_library/const.py | 22 ------ .../components/launch_library/sensor.py | 70 +++++++------------ .../launch_library/test_config_flow.py | 5 +- 3 files changed, 29 insertions(+), 68 deletions(-) diff --git a/homeassistant/components/launch_library/const.py b/homeassistant/components/launch_library/const.py index e4f3a5199b6..7592bb033b0 100644 --- a/homeassistant/components/launch_library/const.py +++ b/homeassistant/components/launch_library/const.py @@ -1,25 +1,3 @@ """Constants for launch_library.""" DOMAIN = "launch_library" - -ATTR_DESCRIPTION = "description" -ATTR_LAUNCH_FACILITY = "facility" -ATTR_LAUNCH_PAD = "pad" -ATTR_LAUNCH_PAD_COUNTRY_CODE = "provider_country_code" -ATTR_LAUNCH_PROVIDER = "provider" -ATTR_ORBIT = "target_orbit" -ATTR_REASON = "reason" -ATTR_STREAM_LIVE = "stream_live" -ATTR_TYPE = "mission_type" -ATTR_WINDOW_END = "window_end" -ATTR_WINDOW_START = "window_start" - -ATTRIBUTION = "Data provided by Launch Library." - -DEFAULT_NAME = "Next launch" - -NEXT_LAUNCH = "next_launch" -LAUNCH_TIME = "launch_time" -LAUNCH_PROBABILITY = "launch_probability" -LAUNCH_STATUS = "launch_status" -LAUNCH_MISSION = "launch_mission" diff --git a/homeassistant/components/launch_library/sensor.py b/homeassistant/components/launch_library/sensor.py index 1557db6bc0d..0d4f1b653fa 100644 --- a/homeassistant/components/launch_library/sensor.py +++ b/homeassistant/components/launch_library/sensor.py @@ -17,7 +17,7 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry -from homeassistant.const import CONF_NAME, PERCENTAGE, STATE_UNKNOWN +from homeassistant.const import CONF_NAME, PERCENTAGE from homeassistant.core import HomeAssistant, callback import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -28,33 +28,15 @@ from homeassistant.helpers.update_coordinator import ( ) from homeassistant.util.dt import parse_datetime -from .const import ( - ATTR_DESCRIPTION, - ATTR_LAUNCH_FACILITY, - ATTR_LAUNCH_PAD, - ATTR_LAUNCH_PAD_COUNTRY_CODE, - ATTR_LAUNCH_PROVIDER, - ATTR_ORBIT, - ATTR_REASON, - ATTR_STREAM_LIVE, - ATTR_TYPE, - ATTR_WINDOW_END, - ATTR_WINDOW_START, - ATTRIBUTION, - DEFAULT_NAME, - DOMAIN, - LAUNCH_MISSION, - LAUNCH_PROBABILITY, - LAUNCH_STATUS, - LAUNCH_TIME, - NEXT_LAUNCH, -) +from .const import DOMAIN + +DEFAULT_NEXT_LAUNCH_NAME = "Next launch" _LOGGER = logging.getLogger(__name__) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( - {vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string} + {vol.Optional(CONF_NAME, default=DEFAULT_NEXT_LAUNCH_NAME): cv.string} ) @@ -75,59 +57,59 @@ class NextLaunchSensorEntityDescription( SENSOR_DESCRIPTIONS: tuple[NextLaunchSensorEntityDescription, ...] = ( NextLaunchSensorEntityDescription( - key=NEXT_LAUNCH, + key="next_launch", icon="mdi:rocket-launch", - name=DEFAULT_NAME, + name="Next launch", value_fn=lambda next_launch: next_launch.name, attributes_fn=lambda next_launch: { - ATTR_LAUNCH_PROVIDER: next_launch.launch_service_provider.name, - ATTR_LAUNCH_PAD: next_launch.pad.name, - ATTR_LAUNCH_FACILITY: next_launch.pad.location.name, - ATTR_LAUNCH_PAD_COUNTRY_CODE: next_launch.pad.location.country_code, + "provider": next_launch.launch_service_provider.name, + "pad": next_launch.pad.name, + "facility": next_launch.pad.location.name, + "provider_country_code": next_launch.pad.location.country_code, }, ), NextLaunchSensorEntityDescription( - key=LAUNCH_TIME, + key="launch_time", icon="mdi:clock-outline", name="Launch time", device_class=SensorDeviceClass.TIMESTAMP, value_fn=lambda next_launch: parse_datetime(next_launch.net), attributes_fn=lambda next_launch: { - ATTR_WINDOW_START: next_launch.window_start, - ATTR_WINDOW_END: next_launch.window_end, - ATTR_STREAM_LIVE: next_launch.webcast_live, + "window_start": next_launch.window_start, + "window_end": next_launch.window_end, + "stream_live": next_launch.webcast_live, }, ), NextLaunchSensorEntityDescription( - key=LAUNCH_PROBABILITY, + key="launch_probability", icon="mdi:dice-multiple", name="Launch Probability", native_unit_of_measurement=PERCENTAGE, value_fn=lambda next_launch: next_launch.probability if next_launch.probability != -1 - else STATE_UNKNOWN, + else None, attributes_fn=lambda next_launch: None, ), NextLaunchSensorEntityDescription( - key=LAUNCH_STATUS, + key="launch_status", icon="mdi:rocket-launch", name="Launch status", value_fn=lambda next_launch: next_launch.status.name, attributes_fn=lambda next_launch: { - ATTR_REASON: next_launch.holdreason, + "reason": next_launch.holdreason, } if next_launch.inhold else None, ), NextLaunchSensorEntityDescription( - key=LAUNCH_MISSION, + key="launch_mission", icon="mdi:orbit", name="Launch mission", value_fn=lambda next_launch: next_launch.mission.name, attributes_fn=lambda next_launch: { - ATTR_TYPE: next_launch.mission.type, - ATTR_ORBIT: next_launch.mission.orbit.name, - ATTR_DESCRIPTION: next_launch.mission.description, + "mission_type": next_launch.mission.type, + "target_orbit": next_launch.mission.orbit.name, + "description": next_launch.mission.description, }, ), ) @@ -161,7 +143,7 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Set up the sensor platform.""" - name = entry.data.get(CONF_NAME, DEFAULT_NAME) + name = entry.data.get(CONF_NAME, DEFAULT_NEXT_LAUNCH_NAME) coordinator = hass.data[DOMAIN] async_add_entities( @@ -169,7 +151,7 @@ async def async_setup_entry( coordinator=coordinator, entry_id=entry.entry_id, description=description, - name=name if description.key == NEXT_LAUNCH else None, + name=name if description.key == "next_launch" else None, ) for description in SENSOR_DESCRIPTIONS ) @@ -178,7 +160,7 @@ async def async_setup_entry( class NextLaunchSensor(CoordinatorEntity, SensorEntity): """Representation of the next launch sensors.""" - _attr_attribution = ATTRIBUTION + _attr_attribution = "Data provided by Launch Library." _next_launch: Launch | None = None entity_description: NextLaunchSensorEntityDescription diff --git a/tests/components/launch_library/test_config_flow.py b/tests/components/launch_library/test_config_flow.py index f60ee76d0f7..1b8f2bde453 100644 --- a/tests/components/launch_library/test_config_flow.py +++ b/tests/components/launch_library/test_config_flow.py @@ -2,7 +2,8 @@ from unittest.mock import patch from homeassistant import data_entry_flow -from homeassistant.components.launch_library.const import DEFAULT_NAME, DOMAIN +from homeassistant.components.launch_library.const import DOMAIN +from homeassistant.components.launch_library.sensor import DEFAULT_NEXT_LAUNCH_NAME from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_USER from homeassistant.const import CONF_NAME @@ -12,7 +13,7 @@ from tests.common import MockConfigEntry async def test_import(hass): """Test entry will be imported.""" - imported_config = {CONF_NAME: DEFAULT_NAME} + imported_config = {CONF_NAME: DEFAULT_NEXT_LAUNCH_NAME} with patch( "homeassistant.components.launch_library.async_setup_entry", return_value=True