Clean up Launch Library consts (#64420)
parent
f1435b1385
commit
b82a57d861
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue