Commit Graph

249 Commits (7433d2eca998a20a1d79b84ece81fdda76a4da48)

Author SHA1 Message Date
Erik Montnemery 15e5851383
Extend deprecation period for hass.components by 6 months (#125659) 2024-09-10 20:38:45 +02:00
Erik Montnemery debebcfd25
Improve language in loader error messages (#122387) 2024-07-22 15:32:36 +02:00
Franck Nijhof 42dcd693d5
Block variable <=3.4.4 custom integration from breaking the recorder (#121670) 2024-07-10 11:30:16 +02:00
Franck Nijhof e9b7cc1eba
Block places <=2.7.0 custom integration from breaking the recorder (#121662) 2024-07-10 10:24:44 +02:00
Franck Nijhof 65e03f952a
Block icloud3 custom integration from breaking the recorder (#121658) 2024-07-10 09:47:15 +02:00
Erik Montnemery 904b89df80
Allow importing typing helper in core files (#119377)
* Allow importing typing helper in core files

* Really fix the circular import

* Update test
2024-06-11 13:48:12 +02:00
Erik Montnemery f896c7505b
Improve async_get_issue_tracker for custom integrations (#118016) 2024-05-24 09:55:05 +02:00
J. Nick Koston c5cc9801a6
Cache serialize of manifest for loaded integrations (#117965)
* 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
2024-05-23 10:52:05 -04:00
J. Nick Koston d11003ef12
Block older versions of custom integration mydolphin_plus since they cause crashes (#117751) 2024-05-20 09:45:52 +02:00
Marc Mueller 4cf0a3f154
Use PEP 695 for function annotations (3) (#117660) 2024-05-18 11:43:32 +02:00
Marc Mueller 15618a8a97
Use HassKey for loader (#116999) 2024-05-07 18:37:01 +02:00
Sid 2cc916db6d
Replace pylint broad-except with Ruff BLE001 (#116250) 2024-05-07 14:00:27 +02:00
J. Nick Koston f3b08e89a5
Small speed ups to async_get_integration (#116900) 2024-05-06 19:08:33 +02:00
J. Nick Koston ee7f818fcd
Block dreame_vacuum versions older than 1.0.4 (#116673) 2024-05-03 12:17:01 +02:00
J. Nick Koston fb5fc136e8
Avoid falling back to event loop import on ModuleNotFound (#115404) 2024-04-11 16:32:47 -10:00
Marc Mueller 816ce116bf
Remove unnecessary functools.cached_property backport (#114239) 2024-04-04 11:24:26 +02:00
J. Nick Koston b12c69accb
Fix memory leak when importing a platform fails (#114602)
* Fix memory leak when importing a platform fails

re-raising ImportError would trigger a memory leak

* fixes, coverage

* Apply suggestions from code review
2024-04-01 21:36:48 -04:00
Jan-Philipp Benecke d5da0a053b
Deprecate `hass.helpers` (#114484)
* Deprecate hass.helpers

* Patch

* Patch _REPORTED_INTEGRATIONS set in test

* Fix test

* Update version
2024-03-31 11:44:11 +02:00
Joost Lekkerkerker 6bb4e7d62c
Bump ruff to 0.3.4 (#112690)
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-03-26 00:02:16 +01:00
J. Nick Koston d0708b5b32
Fix grammar in async_get_platform comment (#113948)
https://github.com/home-assistant/core/pull/113917#pullrequestreview-1951203739
2024-03-21 15:10:47 -04:00
J. Nick Koston 3b66328591
Add a fast path for async_get_platform (#113917) 2024-03-21 09:34:33 +01:00
J. Nick Koston c615b52840
Refactor integration startup time to show wall clock time (#113707)
* Refactor setup time tracking to exclude time waiting on other operations

We now exclude the import time and th time waiting on
base platforms to setup from the setup times

* tweak

* tweak

* tweak

* tweak

* adjust

* fixes

* fixes

* preen

* preen

* tweak

* tweak

* adjust

* tweak

* reduce

* do not count integrtion platforms against their parent integration

* handle legacy tts platforms

* stt as well

* one more wait

* use the same pattern in all the legacy

* fix tts and stt legacy

* fix

* fix

* reduce

* preen

* entity comp does not wait for platforms

* scene blocks as well

* fix test

* test fixes

* coverage

* coverage

* coverage

* fix test

* Update tests/test_setup.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update tests/test_setup.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/setup.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* strip

* strip WAIT_PLATFORM_INTEGRATION

* strip WAIT_PLATFORM_INTEGRATION

* strip WAIT_PLATFORM_INTEGRATION

* strip WAIT_PLATFORM_INTEGRATION

* remove complexity

* Apply suggestions from code review

* no longer works that way

* fixes

* fixes

* fixes

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-18 21:45:34 -04:00
Sid 6ee273a548
Clean up unneeded ruff noqa directives (#113616) 2024-03-16 09:48:37 -10:00
G Johansson e8de1a7031
Revert "Avoid pre-importing config_flows if the integration does not … (#113553)
Revert "Avoid pre-importing config_flows if the integration does not support …"

This reverts commit 9940f51b95.
2024-03-15 23:15:36 +01:00
J. Nick Koston 9940f51b95
Avoid pre-importing config_flows if the integration does not support migration (#113369)
* Avoid pre-importing config_flows if the integration does support migration

Currently we pre-import the config flow module if it exists since
setting up the config entry required comparing the versions found
in the config_flow.py. We can avoid the pre-import if the integration
does not support async_migrate_entry which means we avoid loading
many config flows in memory at startup.

* cover

* fix missing block

* do not call directly

* its too fast now, the test gets more along

* Update homeassistant/loader.py
2024-03-14 00:13:40 -04:00
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 afa69cca38
Import custom components in the executor by default (#112177)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-03-10 08:41:33 -10:00
J. Nick Koston 08416974c9
Avoid trying to load translations for integrations that have none (#112683) 2024-03-08 14:21:44 -10:00
Marc Mueller 19ab3d6daf
Add empty line after module docstring [helpers + other] (#112707) 2024-03-08 10:36:11 -05:00
Erik Montnemery ffcb06beb9
Allow start_time >= 1.1.7 (#112500) 2024-03-06 14:56:50 +01:00
Erik Montnemery 807c3ca76b
Add custom integration block list (#112481)
* Add custom integration block list

* Fix typo

* Add version condition

* Add block reason, simplify blocked versions, add tests

* Change logic for OK versions

* Add link to custom integration's issue tracker

* Add missing file

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-06 13:56:47 +01:00
J. Nick Koston e568f867d2
Adjust MAX_LOAD_CONCURRENTLY constant to allow 6 storage loaders (#112468) 2024-03-05 16:31:10 -10:00
J. Nick Koston 946572e382
Simplify loader preload logic for config_flows (#112290)
We previously checked Integration.config_flow to see if we should
pre-import the config flow, but this is now always set for some
integration like `homeassistant_green`, `hassio`, etc. Instead
we can add it to the rest of the platforms since we already know
which files exist. This simplifies the logic and ensures the pre-import
still happens if the file is there even if its not listed in the
manifest

`2024-03-04 22:54:31.906 DEBUG (MainThread) [homeassistant.loader] Importing platforms for homeassistant_green executor=[config_flow] loop=[] took 2.74s`
2024-03-05 10:02:23 -05:00
J. Nick Koston 7cb8a8bbc9
Migrate remaining calls in config modules to async_get_component (#112293)
* Migrate remaining calls in config modules to async_get_component

There were a few cases that were still using get_component that
could have done blocking I/O in the event loop, although it
was unlikely.

The caching check in async_get_component has been moved
up to avoid creating the future if the module is already in
the cache

* fix one more
2024-03-05 09:59:52 -05:00
J. Nick Koston 8b017016b0
Refactor integration platforms to import in the executor (#112168)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-03-04 19:21:18 -10:00
J. Nick Koston 1e173e82d0
Add support for preloading platforms in the loader (#112282)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-03-04 16:33:12 -10:00
J. Nick Koston 917f0f849d
Import in the executor by default for core integrations (#112127)
* Import in the executor by default for core integration

* merge correct branch in

* Group loading of platforms in the import executor

* adjust test

* remove other pr

* Fix async_prepare_setup_platform test

The message changed because the order changed but was not caught before
merge because it required the combination of PRs to change
the error message

* fix

* tweak

* fix

* self review

* review

* fix hue mocking

* Update homeassistant/loader.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* lint

* Fix async_get_component loading in the executor when the module is already loaded

The sys.modules check was incorrect (only on dev)

* fix

* Avoid multiple executor jobs with concurrent calls to async_get_component

Return a future that can be awaited if the component is
curently being loaded

* adjust

* coverage

* coverage

* concurrent platforms load test

* doc strings

* coverage

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-03-04 06:29:32 -05:00
J. Nick Koston 5227976aa2
Group loading of platforms in the import executor (#112141)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-03-03 21:32:19 -10:00
J. Nick Koston 943996b60b
Avoid multiple executor jobs with concurrent calls to async_get_component (#112155) 2024-03-03 20:22:31 -10:00
J. Nick Koston f4b2c9b569
Fix async_get_component loading in the executor when the module is already loaded (#112153) 2024-03-03 17:56:50 -10:00
J. Nick Koston f1eab3f11f
Preload config flow if it exists when loading a component (#112145)
Since config_entries always requires the config_flow to be loaded
to check for migrations, load it if we know it exists when loading
the underlying integration
2024-03-03 21:16:50 -05:00
J. Nick Koston ba9733e90b
Try to preload the config platform when loading a component (#112104) 2024-03-03 10:23:08 -10:00
J. Nick Koston c8cb0ff61d
Avoid trying to import platforms that do not exist (#112028)
* Avoid trying to import platforms that do not exist

* adjust

* fixes

* cleanup

* cleanup

* cleanup

* Apply suggestions from code review

* docs

* fixes

* fixes

* comment

* coverage

* coverage

* coverage

* Switch config to use async_get_component

This was another path where integrations that were marked to load in the executor
would be loaded in the loop

* Switch config to use async_get_component/async_get_platform

This was another path where integrations that were marked to load in the executor
would be loaded in the loop

* merge

* refactor

* refactor

* coverage

* preen

* preen
2024-03-02 22:14:28 -05:00
J. Nick Koston 567d4d5926
Simplify load_executor check in loader (#112029) 2024-03-02 09:01:11 -10:00
Jan-Philipp Benecke 914abcec32
Change `hass.components` removal version in log to 2024.9 (#111903) 2024-02-29 21:05:33 -05:00
J. Nick Koston 25510fc13c
Limit executor imports to a single thread (#111898)
* Limit executor imports to a single thread

* test for import executor

* test for import executor

* test for import executor

* fixes

* better fix
2024-02-29 21:02:13 -05:00
J. Nick Koston ba4120d779
Fallback to event loop import on deadlock (#111868) 2024-02-29 09:01:03 -10:00
Jan-Philipp Benecke bc6b4d01c8
Deprecate `hass.components` and log warning if used inside custom component (#111508)
* Deprecate @bind_hass and log error if used inside custom component

* Log also when accessing `hass.components`

* Log warning only when `hass.components` is used

* Change version

* Process code review
2024-02-29 12:25:46 +01:00
J. Nick Koston c38e0d22b8
Fix text in docstrings and debug logging for loader (#111560) 2024-02-26 15:14:15 -10:00
J. Nick Koston 4ea1c5cc3c
Add support for importing integrations in the executor (#111336)
* Add support for pre-imports at setup time

alternative solution to #111331

* refactor

* refactor

* refactor

* mark >1.0s integrations

* no point in executor if already loaded

* no point in executor if already loaded

* cleanup

* cleanup

* two more

* one more

* analytics loads a lot more integrations

* cloud

* debug

* psutil, hardwre

* try zha

* Update homeassistant/setup.py

* await

* comments

* coverage

* coverage

* coverage

* move logic to loader

* move logic to loader

* preserve comments
2024-02-26 14:49:43 -05:00