diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index 91986f053fd..d33f66538f4 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -515,7 +515,7 @@ class ConfigEntry: if domain_is_integration: try: - await integration.async_get_platforms(("config_flow",)) + await integration.async_get_platform("config_flow") except ImportError as err: _LOGGER.error( ( @@ -2567,7 +2567,7 @@ async def _load_integration( # Make sure requirements and dependencies of component are resolved await async_process_deps_reqs(hass, hass_config, integration) try: - await integration.async_get_platforms(("config_flow",)) + await integration.async_get_platform("config_flow") except ImportError as err: _LOGGER.error( "Error occurred loading flow for integration %s: %s", diff --git a/homeassistant/loader.py b/homeassistant/loader.py index 74250a3a150..7c52787b34a 100644 --- a/homeassistant/loader.py +++ b/homeassistant/loader.py @@ -1065,7 +1065,11 @@ class Integration: async def async_get_platform(self, platform_name: str) -> ModuleType: """Return a platform for an integration.""" - platforms = await self.async_get_platforms([platform_name]) + # Fast path for a single platform when its already + # cached. This is the common case. + if platform := self._cache.get(f"{self.domain}.{platform_name}"): + return platform # type: ignore[return-value] + platforms = await self.async_get_platforms((platform_name,)) return platforms[platform_name] async def async_get_platforms(