1 """The openweathermap component."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
8 from pyopenweathermap
import create_owm_client
21 from .const
import CONFIG_FLOW_VERSION, OWM_MODE_V25, PLATFORMS
22 from .coordinator
import WeatherUpdateCoordinator
23 from .repairs
import async_create_issue, async_delete_issue
24 from .utils
import build_data_and_options
26 _LOGGER = logging.getLogger(__name__)
28 type OpenweathermapConfigEntry = ConfigEntry[OpenweathermapData]
33 """Runtime data definition."""
37 coordinator: WeatherUpdateCoordinator
41 hass: HomeAssistant, entry: OpenweathermapConfigEntry
43 """Set up OpenWeatherMap as config entry."""
44 name = entry.data[CONF_NAME]
45 api_key = entry.data[CONF_API_KEY]
46 latitude = entry.data.get(CONF_LATITUDE, hass.config.latitude)
47 longitude = entry.data.get(CONF_LONGITUDE, hass.config.longitude)
48 language = entry.options[CONF_LANGUAGE]
49 mode = entry.options[CONF_MODE]
51 if mode == OWM_MODE_V25:
56 owm_client = create_owm_client(api_key, mode, lang=language)
58 owm_client, latitude, longitude, hass
61 await weather_coordinator.async_config_entry_first_refresh()
63 entry.async_on_unload(entry.add_update_listener(async_update_options))
67 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
73 """Migrate old entry."""
74 config_entries = hass.config_entries
76 options = entry.options
77 version = entry.version
79 _LOGGER.debug(
"Migrating OpenWeatherMap entry from version %s", version)
82 combined_data = {**data, **options, CONF_MODE: OWM_MODE_V25}
84 config_entries.async_update_entry(
88 version=CONFIG_FLOW_VERSION,
91 _LOGGER.debug(
"Migration to version %s successful", CONFIG_FLOW_VERSION)
98 await hass.config_entries.async_reload(entry.entry_id)
102 hass: HomeAssistant, entry: OpenweathermapConfigEntry
104 """Unload a config entry."""
105 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
None async_create_issue(HomeAssistant hass, str entry_id)
None async_delete_issue(HomeAssistant hass, str entry_id)
tuple[dict[str, Any], dict[str, Any]] build_data_and_options(dict[str, Any] combined_data)
bool async_unload_entry(HomeAssistant hass, OpenweathermapConfigEntry entry)
bool async_migrate_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, OpenweathermapConfigEntry entry)
None async_update_options(HomeAssistant hass, ConfigEntry entry)