Paulus Schoutsen
145657dc21
Only load services.yaml for integrations that have it ( #112732 )
...
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-03-11 19:05:32 +01:00
J. Nick Koston
b7d9f26cee
Cache the job type for entity service calls ( #112793 )
2024-03-08 22:49:08 -10:00
J. Nick Koston
a50883d975
Run service call tasks eagerly ( #112791 )
2024-03-08 20:37:21 -10:00
Marc Mueller
19ab3d6daf
Add empty line after module docstring [helpers + other] ( #112707 )
2024-03-08 10:36:11 -05:00
Marc Mueller
daf8d1939b
Fix generic HassJob typing ( #111973 )
2024-03-01 20:51:45 +01:00
J. Nick Koston
913ee90e1a
Use eager tasks when updating entity state after service calls ( #111702 )
...
In a multi-entity update case the state update may not need
to suspend and can get executed without scheduling a task
on the event loop
2024-02-28 12:46:32 +01:00
J. Nick Koston
9689cb448d
Avoid linear search of entity registry in async_extract_referenced_entity_ids ( #109667 )
...
* Index area_ids in the entity registry
I missed that these are used in _resolve_area in search.
Eventually we can make async_extract_referenced_entity_ids
a bit faster with this as well
* Avoid linear search of entity registry in async_extract_referenced_entity_ids
needs https://github.com/home-assistant/core/pull/109660
2024-02-09 09:42:30 -05:00
J. Nick Koston
40166ed51e
Avoid linear search of device registry when no areas are referenced in service calls ( #109669 )
2024-02-05 12:26:08 +01:00
J. Nick Koston
2f724b042b
Avoid looking up services to check if they support responses ( #109588 )
...
We already have the Service object as its the value in the
services_map so there is not need to look it up again
2024-02-04 15:15:51 +01:00
J. Nick Koston
ed726db974
Fix race in loading service descriptions ( #109316 )
2024-02-01 12:34:23 -06:00
J. Nick Koston
7c86ab14c3
Refactor service enumeration methods to better match existing use cases ( #108671 )
2024-01-22 14:21:17 -10:00
J. Nick Koston
e9a7870080
Small cleanups to async_get_all_descriptions ( #108633 )
2024-01-21 18:09:33 -10:00
J. Nick Koston
573de95f21
Speed up run time of admin services by using HassJob ( #108623 )
2024-01-21 22:41:41 -05:00
Marc Mueller
78752264b3
Fully type homeassistant integration ( #107380 )
2024-01-08 10:07:30 +01:00
J. Nick Koston
d260ed938a
Reduce overhead to call entity services ( #106908 )
2024-01-08 09:30:52 +01:00
J. Nick Koston
0695bf8988
Move group helpers into their own module ( #106924 )
...
This gets rid of the legacy need to use bind_hass, and
the expand function no longer looses typing.
2024-01-04 17:34:56 +01:00
J. Nick Koston
09b65f14b9
Index entities by domain for entity services ( #106759 )
2024-01-02 15:28:58 +01:00
Bram Kragten
7ba1736637
Filter by supported features for todo services ( #106241 )
2023-12-22 21:22:16 +01:00
Ville Skyttä
24b1e01d71
Update Ruff to 0.1.8, avoid linter/formatter conflicts ( #106080 )
...
* Disable Ruff rules that may conflict with the formatter
* Upgrade Ruff to 0.1.8
- https://github.com/astral-sh/ruff/releases/tag/v0.1.7
- https://github.com/astral-sh/ruff/releases/tag/v0.1.8
* Format with Ruff 0.1.8
2023-12-20 23:55:09 +01:00
Erik Montnemery
5b55c7da5f
Remove logic converting empty or falsy YAML to empty dict ( #103912 )
...
* Correct logic converting empty YAML to empty dict
* Modify according to github comments
* Add load_yaml_dict helper
* Update check_config script
* Update tests
2023-12-05 18:08:11 +01:00
Ruslan Sayfutdinov
adcd4e59cf
More useful message on services.yaml parse error ( #103847 )
2023-11-12 16:18:12 +00:00
Marc Mueller
c35f56ea77
Handle BaseException from asyncio gather ( #103814 )
2023-11-11 22:26:37 +01:00
Kevin Stillhammer
06c9719cd6
Support multiple responses for service calls ( #96370 )
...
* add supports_response to platform entity services
* support multiple entities in entity_service_call
* support legacy response format for service calls
* revert changes to script/shell_command
* add back test for multiple responses for legacy service
* remove SupportsResponse.ONLY_LEGACY
* Apply suggestion
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* test for entity_id remove None
* revert Apply suggestion
* return EntityServiceResponse from _handle_entity_call
* Use asyncio.gather
* EntityServiceResponse not Optional
* styling
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2023-11-02 18:37:35 -07:00
Erik Montnemery
09ad1a9a36
Remove unnecessary block use of pylint disable in components p-z ( #100192 )
2023-09-12 20:47:48 +02:00
J. Nick Koston
3d403c9b60
Refactor entity service calls to reduce complexity ( #99783 )
...
* Refactor entity service calls to reduce complexity
gets rid of the noqa C901
* Refactor entity service calls to reduce complexity
gets rid of the noqa C901
* short
2023-09-08 13:04:53 -04:00
Ville Skyttä
3094991236
Upgrade ruff to 0.0.285 ( #98647 )
2023-08-19 08:17:17 -04:00
Franck Nijhof
b655b9d530
Allow for translating service examples ( #97141 )
2023-07-24 15:57:02 +02:00
J. Nick Koston
3a06659120
Speed up single entity/response service calls ( #96729 )
...
* Significantly speed up single entity/response service calls
Since the majority of service calls are single entity, we can
avoid creating tasks in this case. Since the multi-entity
service calls always check the result and raise, we can switch
the asyncio.wait to asyncio.gather
* Significantly speed up single entity/response service calls
Since the majority of service calls are single entity, we can
avoid creating tasks in this case. Since the multi-entity
service calls always check the result and raise, we can switch
the asyncio.wait to asyncio.gather
* revert
* cannot be inside pytest.raises
* one more
* Update homeassistant/helpers/service.py
2023-07-17 09:33:13 +02:00
J. Nick Koston
08af42b00e
Fix mixed case service schema registration ( #96448 )
2023-07-12 14:39:51 -10:00
Franck Nijhof
594d240a96
Migrate & fix logger services to support translations ( #96393 )
...
* Migrate logger services to support translations
* Fix tests and schema validation
* Apply suggestions from code review
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
2023-07-12 10:37:18 -04:00
Franck Nijhof
f25d5a157a
Fix service schema to allow for services without any fields/properties ( #96346 )
2023-07-11 19:33:07 +02:00
Franck Nijhof
f054de0ad5
Add support for service translations ( #95984 )
2023-07-11 15:52:12 +02:00
J. Nick Koston
b7b8afffd0
Handle integrations with empty services or failing to load during service description enumeration ( #95911 )
...
* wip
* tweaks
* tweaks
* add coverage
* complain loudly as we never execpt this to happen
* ensure not None
* comment it
2023-07-06 11:19:06 -04:00
Bram Kragten
342d07cb92
Set correct `response` value in service description when `async_set_service_schema` is used ( #95985 )
...
* Mark scripts as response optional, make it always return a response if return_response is set
* Update test_init.py
* Revert "Update test_init.py"
This reverts commit 8e113e54db
.
* Split + add test
2023-07-06 10:24:34 -04:00
Paulus Schoutsen
e4f617e92e
Update log message when referenced entity not found ( #95577 )
...
* Update log message when referenced entity not found
* Update homeassistant/helpers/service.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update test
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-07-02 00:04:03 +02:00
Paulus Schoutsen
d95c241a1a
Add service response values to service descriptions ( #95262 )
2023-06-26 12:57:43 -04:00
Allen Porter
b9b5fe6be8
Add service response data for listing calendar events ( #94759 )
...
* 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
J. Nick Koston
68cf796be8
Speed up entity service calls ( #94731 )
...
* Speed up entity service calls
- Avoid permissions check if the caller is an admin
- Use set intersection instead of linear search of entity platforms to find entities
* tweak
* fix light test to not use an admin user
2023-06-16 21:07:57 -04:00
J. Nick Koston
b993fe1c9d
Cache generation of the service descriptions ( #93131 )
2023-05-16 21:42:37 -05:00
rlippmann
3a72054f93
Make dataclasses in HA core slotted ( #91208 )
2023-04-11 07:58:28 -10:00
Erik Montnemery
9384ec18f8
Add filters to climate and light service descriptions ( #86162 )
...
* Add filters to climate and light service descriptions
* Allow specifying enums directly
* Update service descriptions
* Adjust test
* Cache entity features
* Lint
* Improve error handling, add list of known base components
* Don't allow specifying an entity feature as int
2023-03-16 15:59:51 +01:00
J. Nick Koston
bea81d3f63
Fix lock services not removing entity fields ( #88805 )
2023-02-26 18:59:28 -05:00
Franck Nijhof
5e81d28116
Update black to 23.1.0 ( #87188 )
2023-02-02 18:35:24 +01:00
Marc Mueller
4f87c1f30f
Update pre-commit-config [Py310] ( #86415 )
2023-01-23 09:59:44 +01:00
Franck Nijhof
06a35fb7db
Code styling tweaks to core helpers ( #85441 )
2023-01-08 13:44:09 -10:00
Franck Nijhof
d4f69a3652
String formatting and max line length - Part 7 ( #84532 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-27 11:18:56 +01:00
Marc Mueller
63d519c1a8
Spelling updates ( #82867 )
2022-11-28 16:51:43 +01:00
Aarni Koskela
8038485ca4
Use partition instead of split where possible in core ( #81806 )
2022-11-15 21:45:48 +01:00
Erik Montnemery
18033532ca
Fix search throwing on templated services ( #79637 )
2022-10-05 10:59:18 +03:00
epenet
8300f8234c
Make async_extract_entities generic ( #78490 )
2022-09-16 00:20:47 +02:00
J. Nick Koston
61cc9f5288
Consolidate executor jobs when loading integration manifests ( #75176 )
2022-07-14 13:06:08 -07:00
Paulus Schoutsen
d59258bd25
Revert "Add service entity context ( #71558 )" ( #72610 )
2022-05-27 10:30:40 -07:00
Franck Nijhof
69cc6ab5f1
Clean up accessing entity_registry.async_get_registry helper via hass ( #72005 )
2022-05-17 16:40:45 +02:00
Paulus Schoutsen
64636a4310
Add service entity context ( #71558 )
...
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-05-09 14:45:53 -07:00
Joakim Plate
2dbe910e31
Adjust warning for missing entites ( #71343 )
2022-05-09 12:37:24 +02:00
Erik Montnemery
eb068bc850
Fix targeting all or none entities in service calls ( #68513 )
...
* Fix targeting all or none entities in service calls
* Add test
2022-03-22 19:45:27 +02:00
Paulus Schoutsen
8bbbd1947d
Raise if referenced entity does not support service ( #68394 )
2022-03-20 16:01:58 -07:00
Erik Montnemery
34eb4aa2d0
Exclude hidden entities from targets ( #68149 )
2022-03-15 08:42:22 -07:00
Erik Montnemery
cd25769667
Rename async_resolve_entity_ids to async_validate_entity_ids ( #67603 )
2022-03-04 09:51:53 +01:00
Marc Mueller
bfb1abd3a2
Add type ignore error codes [helpers] ( #66776 )
2022-02-18 11:31:37 +01:00
epenet
3a09090a4b
Drop use of deprecated ENTITY_CATEGORIES ( #64607 )
...
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-01-24 13:36:42 +01:00
Erik Montnemery
fc2025509e
Teach call service script action about entity registry ids ( #61172 )
2022-01-07 08:42:47 -08:00
epenet
9971831b51
Improve typing in core service registration ( #63005 )
...
Co-authored-by: epenet <epenet@users.noreply.github.com>
2021-12-30 21:18:10 +01:00
Tobias Sauerwein
2c904c0974
Bump mypy to 0.930 ( #62642 )
...
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2021-12-27 17:55:17 +01:00
Ruslan Sayfutdinov
55f4962c06
Fix pylint plugin which checks relative imports ( #62693 )
2021-12-23 11:14:47 -08:00
Erik Montnemery
a0a8b9db26
Add entity category 'system' ( #58595 )
...
* Add entity category 'hidden'
* Update cloud
* Update Google assistant
* Update Alexa
* Fix tests
* Add ENTITY_CATEGORIES constant
* Rename ENTITY_CATEGORY_HIDDEN to ENTITY_CATEGORY_SYSTEM
* Correct import in motioneye
2021-10-28 14:36:41 +02:00
Chris Browet
e961d92b5e
Allow service data template to return a dict ( #57105 )
2021-10-23 21:10:30 +02:00
Marc Mueller
238b488642
Use assignment expressions 03 ( #57710 )
2021-10-17 20:08:11 +02:00
Erik Montnemery
2b37943355
Don't add indirectly referenced config entities to service calls ( #57671 )
2021-10-15 08:46:43 -07:00
Marc Mueller
77ee72cbb9
Import Callable from collections.abc (1) ( #56775 )
2021-09-29 16:32:11 +02:00
Marc Mueller
f6b162bc39
Add pylint CodeStyle extension ( #53147 )
2021-07-19 06:57:06 -07:00
Erik Montnemery
abd6f739e8
Pylint fix ( #51083 )
2021-05-25 10:53:18 -07:00
Erik Montnemery
7b5e63132c
Prevent parallel reload of automations ( #50008 )
2021-05-25 08:50:50 -07:00
Ruslan Sayfutdinov
391b2f8ccd
Add missing return type in Core constructors ( #50884 )
2021-05-20 18:53:29 +03:00
Marc Mueller
c07646db5d
Update typing syntax ( #49480 )
...
* Update typing syntax
* Replace typing imports with ones from collections where possible
* Changes after review
2021-04-20 17:40:41 +02:00
Tobias Sauerwein
9d4ad1821e
Fix logic of entity id extraction ( #49164 )
...
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-14 14:12:26 +02:00
Franck Nijhof
4e3c12883e
Allow templatable service target to support scripts ( #48600 )
2021-04-01 13:10:01 -07:00
Franck Nijhof
38d14702fa
Remove HomeAssistantType alias from helpers ( #48400 )
2021-03-27 12:55:24 +01:00
Marc Mueller
4cb7718192
Update typing 16 ( #48087 )
2021-03-18 22:58:19 +01:00
J. Nick Koston
08db262972
Add a service to reload config entries that can easily be called though automations ( #46762 )
2021-03-17 21:27:21 -07:00
Marc Mueller
6fb2e63e49
Update typing 02 ( #48014 )
2021-03-17 18:34:19 +01:00
Ville Skyttä
dc880118a4
Lint suppression cleanups ( #47248 )
...
* Unused pylint suppression cleanups
* Remove outdated pylint bug references
* Add flake8-noqa config and note to run it every now and then
* Add codes to noqa's
* Unused noqa cleanups
2021-03-02 09:02:04 +01:00
Franck Nijhof
42fd3be0e8
Add template support to service targets ( #46977 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-23 22:46:00 -08:00
Bram Kragten
afa91e886b
Add description to tts and notify services ( #46764 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-23 14:29:57 +01:00
Franck Nijhof
c8ffac20b9
Add name to services ( #46905 )
2021-02-22 16:26:46 +01:00
Anders Melchiorsen
9f4874bb81
Explicitly create_task for asyncio.wait ( #46325 )
2021-02-20 19:57:46 +01:00
Bram Kragten
6986fa4eb6
Add target to services.yaml ( #46410 )
...
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-16 09:35:27 +01:00
Franck Nijhof
9b7c39d20b
Postponed evaluation of annotations in core ( #46434 )
...
* Postponed evaluation of annotations in core
* Remove unneeded future
2021-02-12 10:58:20 +01:00
Ville Skyttä
a6358430b4
Fix deprecated asyncio.wait use with coroutines ( #44981 )
...
https://docs.python.org/3/library/asyncio-task.html#asyncio-example-wait-coroutine
2021-02-10 14:16:58 +01:00
Bram Kragten
4b493c5ab9
Add target to service call API ( #45898 )
...
* Add target to service call API
* Fix _async_call_service_step
* CONF_SERVICE_ENTITY_ID overrules target
* Move merging up before processing schema
* Restore services.yaml
* Add test
2021-02-10 12:42:28 +01:00
tkdrob
c2302784c2
Use core constants for helpers ( #46240 )
2021-02-08 22:53:17 +01:00
Ville Skyttä
82607977ef
Various type hint improvements ( #46144 )
2021-02-08 11:59:46 +01:00
Ville Skyttä
1c8fbc7e6a
Upgrade codespell to 2.0.0 ( #44695 )
...
* Upgrade codespell to 2.0.0
* Fix newly found spelling errors
2020-12-31 19:14:07 +01:00
Paulus Schoutsen
cf5be049b3
Warn when referencing missing devices/areas ( #43787 )
2020-12-01 08:01:27 +01:00
Paulus Schoutsen
0de9e8e952
Allow specifying device_id as target ( #43767 )
2020-11-30 14:27:02 +01:00
Paulus Schoutsen
dd513147a5
Add a service target ( #43725 )
2020-11-28 23:33:32 +01:00
Paulus Schoutsen
d34753473d
Use run_job for service helper ( #43696 )
2020-11-27 16:12:39 +01:00
Erik Montnemery
a5e5c5c7e6
Exclude disabled entities from async_entries_for_device ( #43665 )
2020-11-27 09:03:44 +01:00
Paulus Schoutsen
edf70e9f06
Make input_datetime better handle timezones ( #43396 )
...
* Make input_datetime better handle timezones
* Improve test coverage
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Revert change to time format
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-11-26 20:20:10 +01:00
J. Nick Koston
94bf55e29b
Limit concurrency of async_get_integration to avoid creating extra threads ( #43085 )
...
* Limit concurrency of async_get_integration to avoid creating extra threads
Since async_get_integration is waiting on the disk most of the time
it would end up creating many new threads because the disk could
not deliver the data in time.
* pylint
2020-11-10 21:34:54 -10:00