Commit graph

294 commits

Author SHA1 Message Date
Erik Montnemery
9020dbb093
Remove context_recent_time property from entity base class () 2023-12-14 08:33:31 +01:00
Erik Montnemery
dd5a48996a
Keep capabilities up to date in the entity registry ()
* Keep capabilities up to date in the entity registry

* Warn if entities update their capabilities very often

* Fix updating of device class

* Stop tracking capability updates once flooding is logged

* Only sync registry if state changed

* Improve test

* Revert "Only sync registry if state changed"

This reverts commit 1c52571596c06444df234d4b088242b494b630f2.

* Avoid calculating device class twice

* Address review comments

* Revert using dataclass

* Fix unintended revert

* Add helper method
2023-12-13 17:27:26 +01:00
Erik Montnemery
d4cf049016
Remove unneeded class _EntityDescriptionBase () 2023-12-11 23:10:11 +01:00
Erik Montnemery
dd338799d4
Make it possible to inherit EntityDescription in frozen and mutable dataclasses () 2023-12-11 20:00:55 +01:00
Erik Montnemery
d913508607
Allow removing an entity more than once () 2023-11-08 12:50:40 +01:00
Erik Montnemery
0ea0a1ed06
Prevent accidentally reusing an entity object ()
* Prevent accidentally reusing an entity object

* Fix group reload service

* Revert "Fix group reload service"

* Improve test

* Add tests aserting entity can't be reused
2023-11-03 21:01:38 +01:00
Erik Montnemery
a63c420890
Quote entity ids in entity excpetions () 2023-11-03 06:04:07 +01:00
J. Nick Koston
e5ebdf7ad4
Remove implict name check from Entity base class () 2023-10-15 23:40:43 +02:00
Marc Mueller
0b2b486754
Update mypy to 1.6.0 () 2023-10-11 13:25:11 +02:00
Nicolas van de Walle
1b11062b27
Improved debugging for "Failed to set state" () 2023-10-08 19:40:42 +02:00
Erik Montnemery
17779c5f0c
Add loader.async_suggest_report_issue and loader.async_get_issue_tracker ()
* Add loader.async_suggest_report_issue and loader.async_get_issue_tracker

* Update tests

* Add tests

* Address review comments

* Address review comments
2023-10-04 13:40:33 +02:00
Erik Montnemery
fbcc5318c5
Move attributes to be excluded from recording to entity classes ()
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-09-20 18:09:12 +02:00
Erik Montnemery
d1afcd773f
Revert "Cache entity properties that are never expected to change in the base class" ()
Revert "Cache entity properties that are never expected to change in the base class ()"

This reverts commit 042776ebb8.
2023-09-15 11:25:24 +02:00
J. Nick Koston
042776ebb8
Cache entity properties that are never expected to change in the base class () 2023-09-14 17:48:48 -05:00
Erik Montnemery
bbcbb2e322
Improve Entity._suggest_report_issue () 2023-09-12 21:07:32 +02:00
Erik Montnemery
51576b7214
Improve typing of entity.entity_sources ()
* Improve typing of entity.entity_sources

* Calculate entity info source when generating WS response

* Adjust typing

* Update tests
2023-09-12 20:41:26 +02:00
J. Nick Koston
034fabe188
Use loop time to set context ()
* Use loop time to set context

loop time is faster than utcnow, and since its only used internally it can
be switched without a breaking change

* fix mocking
2023-09-06 11:04:49 +02:00
Erik Montnemery
709ce7e0af
Set state of entity with invalid state to unknown ()
* Set state of entity with invalid state to unknown

* Add test

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* Update test_entity.py

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2023-09-04 14:09:51 +02:00
Erik Montnemery
b885dfa5a8
Add preview to sensor group config and option flows () 2023-08-22 10:29:16 +02:00
Erik Montnemery
045c327928
Move DeviceInfo from entity to device registry ()
* Move DeviceInfo from entity to device registry

* Update integrations
2023-08-10 22:04:26 -04:00
Franck Nijhof
737ac8c600
Fix DeviceInfo configuration_url validation () 2023-07-27 18:57:01 +02:00
Marc Mueller
c0da6b822e
Fix ruff () 2023-07-24 10:34:16 +02:00
Marc Mueller
3371c41bda
Improve async_track_device_registry_updated_event callback typing () 2023-07-24 09:42:01 +02:00
Marc Mueller
0624345322
Improve async_track_entity_registry_updated_event callback typing () 2023-07-24 09:14:10 +02:00
J. Nick Koston
039a3bb6e9
Only load the device entry when it changes in the base entity () 2023-07-10 15:17:35 +02:00
Jan Bouwhuis
b9c7e7c15e
Fix not including device_name in friendly name if it is None ()
* Omit device_name in friendly name if it is None

* Fix test
2023-07-06 11:14:09 -04:00
Erik Montnemery
071d3a474f
Base entity ids on English for languages not using Latin script () 2023-06-27 14:37:50 +02:00
J. Nick Koston
c4288e7b1f
Use cached_property in entity.py instead of manual cache () 2023-06-26 19:18:46 -05:00
J. Nick Koston
9051750add
Cache entity translation lookups and keys () 2023-06-25 08:50:48 -05:00
J. Nick Koston
9354df975c
Reduce overhead to set up and write entity state () 2023-06-24 14:16:28 -05:00
Allen Porter
b9b5fe6be8
Add service response data for listing calendar events ()
* Add service response data for listing calendar events

Add the capability of response data for for the entity component.

* Rename input arguments and add service description

* Improve list events to be more user friendly

Allow the end date to be determined based on a relative time duration. Make the start time optional and set to "now". Add additional test coverage. Update demo calendar to actually perform date range checks.

* Wrap docstrings properly.

* Increase test coverage

* Update to use new API calls

* Readability improvements

* Wrap docstrings

* Require at least one of end or duration

* Check for multiple entity matches earlier in the request

* Update documentation strings
2023-06-23 23:34:34 -04:00
Franck Nijhof
e2f5a707ce
Fix use_device_name in case device device class translations are used ()
Co-authored-by: Erik <erik@montnemery.com>
2023-06-22 11:30:19 +02:00
Erik Montnemery
950b25bf42
Remove unnecessary assert from Entity () 2023-06-16 14:07:25 +02:00
Erik Montnemery
334dacc322
Change Entity.name default to UNDEFINED ()
* Change Entity.name default to UNDEFINED

* Update typing

* Update Pylint plugin

* Update TTS test
2023-06-15 11:09:53 +02:00
Erik Montnemery
2406b235b4
Name unnamed binary sensors by their device class ()
* Name unnamed binary sensors by their device class

* Update type annotations

* Fix loading of entity component translations

* Add test

* Update integrations

* Set abode and rfxtrx binary_sensor name to None

* Revert changes in homekit_controller
2023-06-13 19:48:54 +02:00
Erik Montnemery
59f5b8f2d6
Remove unneeded checks for Entity.platform ()
* Remove unneeded checks for Entity.platform

* Update tests

* Prevent breaking integrations without an EntityComponent

* Warn when entity has no platform
2023-06-09 15:17:41 +02:00
Erik Montnemery
4085c4f6d8
Tweak typing of Entity.platform ()
* Tweak typing of Entity.platform

* Fix mypy errors

* Fix update test

* Improve comments
2023-06-09 10:56:04 +02:00
Erik Montnemery
59c6220b7c
Subscribe to device registry changes from entities ()
* Subscribe to device registry changes from entities

* Use async_track_device_registry_updated_event

* Fix unsubscribe

* Fix logic, add tests
2023-05-31 11:01:55 +02:00
J. Nick Koston
3a1389c3b4
Switch some frequently called call_laters to call_at ()
* Switch some frequently called call_laters to call_at

call_at is a bit faster than call_later since call_later
is a wrapper around call_at.

We call at lot of these at startup so it helps a bit when
we are resource constrained

* update test

* update test
2023-05-27 19:45:35 -04:00
Erik Montnemery
a71c097aeb
Revert "Allow setting an entity's name by its device class" () 2023-05-25 17:20:54 +02:00
Erik Montnemery
67c1051305
Allow setting an entity's name by its device class ()
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-05-09 18:55:55 +02:00
J. Nick Koston
4c3e98b77c
Fix parallel_updates being acquired too late for entity executor jobs ()
* Fix parallel_updates being acquired too late for entity executor jobs

* tweak
2023-05-06 16:46:00 +02:00
Franck Nijhof
32344a8488
Fix incorrect warn of async_update_ha_state use () 2023-04-13 22:39:03 +02:00
Franck Nijhof
22a1a6846d
Warn for unneeded use of async_update_ha_state () 2023-04-13 13:49:56 -04:00
Franck Nijhof
445b823232
Avoid task creation when calling schedule_update_ha_state without force update () 2023-04-13 18:39:03 +02:00
rlippmann
3a72054f93
Make dataclasses in HA core slotted () 2023-04-11 07:58:28 -10:00
J. Nick Koston
3d1556a4a2
Switch back to using call_later for the slow entity update warning ()
* Switch back to using call_later for the slow entity update warning

I had originally changed this to create a task and wait
in  but that does not make sense anymore with newer
cpython as the profile now shows the original method is cheaper
(or I did it wrong the first time)

* fix missing block till done since there is no longer a task being created which would run the event loop once
2023-04-08 22:22:56 -04:00
J. Nick Koston
5eb0c35a97
Add names to common helper tasks () 2023-04-05 08:41:15 +02:00
Erik Montnemery
149e610bca
Drop __eq__ dunder method from Entity () 2023-03-31 17:03:02 +02:00
J. Nick Koston
30e7ab247d
Small cleanups to writing entity state ()
* Small cleanups to writing entity state

* reduce one prop access

* small cleanups

* small cleanups

* name conflict
2023-03-17 20:32:24 -04:00