* Cache serialize of manifest for loaded integrations
The manifest/list and manifest/get websocket apis
are called frequently when moving around in the UI.
Since the manifest does not change we can make
the the serialized version a cached property
* reduce
* reduce
* Fix turbojpeg init doing blocking I/O in the event loop
fixes
```
Detected blocking call to open inside the event loop by integration camera at homeassistant/components/camera/img_util.py, line 100: TurboJPEGSingleton.__instance = TurboJPEG() (offender: /usr/local/lib/python3.12/ctypes/util.py, line 276: with open(filepath, rb) as fh:), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+camera%22
```
* Update homeassistant/components/camera/img_util.py
* Fix turbojpeg init doing blocking I/O in the event loop
fixes
```
Detected blocking call to open inside the event loop by integration camera at homeassistant/components/camera/img_util.py, line 100: TurboJPEGSingleton.__instance = TurboJPEG() (offender: /usr/local/lib/python3.12/ctypes/util.py, line 276: with open(filepath, rb) as fh:), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+camera%22
```
* already suppressed and logged
* Refactor state_reported listener setup to avoid merge in async_fire_internal
Instead of merging the listeners in async_fire_internal, setup the listener for
state_changed at the same time so async_fire_internal can avoid having to copy
another list
* Refactor state_reported listener setup to avoid merge in async_fire_internal
Instead of merging the listeners in async_fire_internal, setup the listener for
state_changed at the same time so async_fire_internal can avoid having to copy
another list
* tweak
* tweak
* tweak
* tweak
* tweak
* Migrate issue registry to use singleton helper
The other registries were already migrated, but since this
one had a read only flag, it required a slightly different
solution since it uses the same hass.data key
* refactor
* Delay firmware probing until after the user picks the firmware type
* Remove confirmation step
* Fix unit tests
* Simplify unit test patching logic
Further simplify unit tests
* Bump Zigbee firmware up to the first choice
* Reuse `async_step_pick_firmware` during options flow
* Proactively validate all ZHA entries, not just the first
There can only be one (for now) so this changes nothing functionally
* Add unit test for bad firmware when configuring Thread
* Use defaultdict for registry indices
defaultdict is faster and does not have to create an empty
dict that gets throw away when the key is already present
* Use defaultdict for registry indices
defaultdict is faster and does not have to create an empty
dict that gets throw away when the key is already present
* Adopt new runtime entity data model for AlarmDecoder
Transition the AlarmDecoder integration to the new runtime entity model.
* Apply change suggestions by epenet
Tested & applied the suggestions from epenet.
* Add MAC cleanup to samsungtv
* Simplify
* Adjust
* leftover
* Appl
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update diagnostics tests
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Reduce overhead to validate mqtt topics
valid_topic would iterate all the chars 4x, refactor to only
do it 1x
valid_subscribe_topic would enumerate all the chars when there was
no + in the string
* check if adding a cache helps
* tweak lrus based on testing stats
* note to future maintainers
* note to future maintainers
* keep standard lru_cache size as increasing makes no material difference