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
Jan-Philipp Benecke
baf84b6fba
Add `single_config_entry` manifest option ( #109505 )
...
* Allow setting if we support multiple config entries in config flow
* Move property to config flow instead of flow handler
* Move marking an integration as single instance only to manifest
* Revert line remove
* Avoid init a config flow or adding a new entry on a single instance with an entry
* Revert changes in test
* Process code review comments
* Apply code review suggestion
2024-02-26 19:00:33 +01:00
J. Nick Koston
3aecec5082
Avoid rechecking for missing platforms in the loader ( #111204 )
2024-02-23 10:48:47 -10:00
J. Nick Koston
1260c5a909
Speed up bootstrap by preloading manifests for base platforms ( #110130 )
2024-02-16 09:35:46 -06:00
J. Nick Koston
95015fbb40
Small performance improvement to async_get_config_flows ( #110666 )
...
- Migrates to using a future instead of Event like we have done
everywhere else
2024-02-16 14:32:26 +01:00
J. Nick Koston
f7b9b0da0e
Migrate dependencies loader to use async_get_integrations ( #110690 )
2024-02-16 08:07:39 +01:00
J. Nick Koston
37897ee384
Move late import of config flows in loader to load time ( #110688 )
...
* Move late import of config flows in loader to load time
There does not seem to be any reason to import the
generated flows late. Import them at load time
with the rest of the generated files
* tests
2024-02-16 07:55:12 +01:00
J. Nick Koston
01c3205635
Small performance improvements to config entry setup retry ( #110448 )
...
* Small performance improvements to config entry setup retry
- cache some properties that never change
- avoid loader.async_get_integration when we already have it
- avoid multiple integration.domain checks
* tweaks
2024-02-13 13:28:52 +01:00
J. Nick Koston
6173bfe873
Cache commonly called Integration manifest properties ( #108141 )
2024-01-16 21:05:44 +01:00
Joakim Plate
523352c97e
Avoid keeping config dir in path ( #107760 )
2024-01-16 13:38:47 +01:00
J. Nick Koston
bb30bfa225
Reduce zeroconf matcher complexity ( #105880 )
2023-12-23 11:04:05 +01:00
Aarni Koskela
706add4a57
Switch formatting from black to ruff-format ( #102893 )
...
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-27 14:38:59 +01:00
Erik Montnemery
50e11a7a37
Tweak loader.resolve_dependencies ( #103851 )
2023-11-12 17:27:32 +01:00
Erik Montnemery
97cc05d0b4
Make it possible to restart core in safe mode ( #102606 )
2023-10-24 14:47:58 +02:00
Erik Montnemery
c481fdb7d0
Rename safe mode to recovery mode ( #102580 )
2023-10-23 20:33:08 +02:00
Erik Montnemery
17779c5f0c
Add loader.async_suggest_report_issue and loader.async_get_issue_tracker ( #101336 )
...
* 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
Artur Pragacz
e1771ae01e
Fix circular dependancy detection ( #100458 )
...
* Fix _async_component_dependencies
Fix bug with circular dependency detection
Fix bug with circular after_dependency detection
Simplify interface and make the code more readable
* Implement review feedback
* Pass all conflicting deps to Exception
* Change inner docstring
Co-authored-by: Erik Montnemery <erik@montnemery.com>
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-09-28 08:05:00 +02:00
J. Nick Koston
e5ebba0753
Fix module check in _async_get_flow_handler ( #99509 )
...
We should have been checking for the module in hass.data[DATA_COMPONENTS]
and not hass.config.components as the check was ineffective if there were
no existing integrations instances for the domain which is the case for
discovery or when the integration is ignored
2023-09-04 14:19:10 -04:00
Erik Montnemery
7643820e59
Add loader.async_get_loaded_integration ( #99440 )
...
* Add loader.async_get_loaded_integration
* Decorate async_get_loaded_integration with @callback
2023-09-04 14:12:33 +02:00
Ville Skyttä
6399d74c15
Remove unnnecessary pylint configs from core ( #98704 )
2023-08-22 23:12:12 +02:00
Erik Montnemery
91faa53843
Don't allow hass.config.config_dir to be None ( #98442 )
2023-08-16 13:00:14 +02:00
Erik Montnemery
3b9d6f2dde
Add setup function to the component loader ( #98148 )
...
* Add setup function to the component loader
* Update test
* Setup the loader in safe mode and in check_config script
2023-08-15 10:59:42 +02:00
Erik Montnemery
f809ce9033
Update bind_hass docstring to discourage its use ( #96933 )
2023-07-20 13:34:24 +02:00
J. Nick Koston
53fe74e055
Reduce overhead to fetch integrations ( #93767 )
...
We call this path over and over during startup and most
of the time the integration is already loaded. We want
that case to be the short path
2023-05-29 20:58:51 -04:00
J. Nick Koston
d5a0824924
Use futures instead of asyncio.Event for async_get_integrations ( #93060 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-05-14 14:42:04 -05:00
rlippmann
3a72054f93
Make dataclasses in HA core slotted ( #91208 )
2023-04-11 07:58:28 -10:00
epenet
611d4135fd
Add ComponentProtocol to improve type checking ( #90586 )
2023-03-31 14:19:58 -04:00
epenet
ba23816a0c
Inverse json import logic ( #88099 )
...
* Fix helpers and util
* Adjust components
* Move back errors
* Add report
* mypy
* mypy
* Assert deprecation messages
* Move test_json_loads_object
* Adjust tests
* Fix rebase
* Adjust pylint plugin
* Fix plugin
* Adjust references
* Adjust backup tests
2023-02-16 11:37:57 +01:00
J. Nick Koston
c83ea297b5
Refactor zeroconf task handling ( #88204 )
...
* Refactor zeroconf task handling
- Avoid the need to create tasks for most callbacks
- Fixes the untracked task that could get unexpectedly GCed
* be consistant
* be consistant
* fix zeroconf tests
* runtime
* Revert "runtime"
This reverts commit 19e6b61837
.
* precalc
* refactor
* tweak
* update tests
2023-02-15 21:44:11 -05:00
epenet
a202588fd2
Add return type to json_loads ( #85672 )
...
* Add JSON type definitions
* Sample use
* Keep mutable for a follo-up PR (avoid dead code)
* Use list/dict
* Remove JsonObjectType
* Remove reference to Union
* Cleanup
* Improve rest
* Rename json_dict => json_data
* Add docstring
* Add type hint to json_loads
* Add cast
* Move type alias to json helpers
* Cleanup
* Create and use json_loads_object
* Make error more explicit and add tests
* Use JsonObjectType in conversation
* Remove quotes
2023-02-07 17:21:55 +01:00
Franck Nijhof
ca1a12898c
Enable Ruff D212 ( #87347 )
2023-02-03 23:08:48 +01:00
Franck Nijhof
79b52a2b41
Stricter pylint message control ( #86154 )
2023-01-20 13:47:55 +01:00
Franck Nijhof
64c2340fab
Core code styling improvements ( #85963 )
2023-01-15 23:00:51 +01:00
Franck Nijhof
b0cee0bc46
String formatting and max line length - Part 1 ( #84390 )
...
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-12-22 10:12:50 +01:00
Bram Kragten
9ed31bb8df
fix integration descriptions ( #81008 )
2022-10-26 12:39:23 +02:00
Franck Nijhof
bb287dd0ed
Integrations v2.1: Virtual integrations ( #80613 )
2022-10-20 23:09:06 -04:00
Paulus Schoutsen
5cb8749ae3
Fix custom components not working with integration descriptions ( #80686 )
2022-10-20 13:25:24 -04:00
Franck Nijhof
c4bbc439a5
Integrations v2.1: Differentiating hubs, devices and services ( #80524 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-10-19 12:41:43 +02:00
Erik Montnemery
b173ae7f44
Add support for integrations v2 ( #78801 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-09-28 11:31:48 -04:00
Erik Montnemery
cce23683f1
Add additional integration_type options for integration manifests ( #79193 )
...
* Add additional integration_type options for integration manifests
* Rename integration_type internal to system
2022-09-28 14:17:39 +02:00
Erik Montnemery
27599ea0ee
Minor tweaks of hassfest and loader.py ( #78929 )
2022-09-22 21:54:22 -04:00
Joakim Sørensen
0caf998547
Bump awesomeversion from 22.6.0 to 22.8.0 ( #77436 )
2022-08-28 14:52:23 -04:00
J. Nick Koston
c76dec138a
Discover new bluetooth adapters when they are plugged in ( #77006 )
2022-08-22 15:45:08 -10:00
J. Nick Koston
3938015c93
Add support for scanners that do not provide connectable devices ( #77132 )
2022-08-22 14:02:26 -04:00
J. Nick Koston
bbb9443b00
Fix bluetooth integration matching with service_data_uuids and service_uuids ( #75687 )
...
* Fix bluetooth integration with service_data and service_uuids
We would only dispatch a new flow when the address was seen for
the first time or the manufacturer_data appeared in a followup
advertisement. Its also possible for the service_data and
service_uuids to appear in a followup advertisement so we
need to track these as well
* improve logging to avoid overly large messages
* improve logging to avoid overly large messages
* adjust
* adjsut
* split
* coverage
* coverage
* coverage
* coverage
* fix matcher
* more coverage
* more coverage
* more coverage
* revert switchbot changes and move to seperate PR
2022-07-24 16:39:53 -05:00
J. Nick Koston
91f2550bc3
Change manufacturer_data_first_byte to manufacturer_data_start ( #75379 )
2022-07-17 17:25:45 -05:00
J. Nick Koston
61cc9f5288
Consolidate executor jobs when loading integration manifests ( #75176 )
2022-07-14 13:06:08 -07:00
J. Nick Koston
a697672944
Add bluetooth integration ( #74653 )
...
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-07-08 18:55:31 -05:00
J. Nick Koston
cb46bb5bfa
Revert "Partially revert "Switch loader to use json helper ( #73872 )" ( #74077 )" ( #74087 )
2022-06-28 09:34:56 +02:00
Franck Nijhof
21b842cf9c
Partially revert "Switch loader to use json helper ( #73872 )" ( #74077 )
2022-06-28 00:48:18 +02:00
J. Nick Koston
164eba7e5d
Switch loader to use json helper ( #73872 )
2022-06-22 21:57:38 -05:00
Raman Gupta
ae01ec02e2
Allow custom integrations to support application_credentials platform ( #71129 )
2022-05-01 16:26:22 -07:00
Paulus Schoutsen
3213091b8d
Add integration type ( #68349 )
2022-03-20 20:38:13 -07:00
Marc Mueller
be7ef6115c
Make TypeVars private (1) ( #68205 )
2022-03-17 18:52:38 +01:00
J. Nick Koston
076fe97110
Strict typing for dhcp ( #67361 )
2022-02-28 18:49:44 -10:00
Marc Mueller
8d2fb72cc3
Add type ignore error codes [core] ( #66773 )
2022-02-17 23:09:22 -08:00
J. Nick Koston
f069a37f7d
Allow integrations to request dhcp discovery flows for registered devices ( #66528 )
2022-02-15 11:02:52 -06:00
J. Nick Koston
5b755b74fb
Add loggers to integration manifest.json ( #65083 )
2022-01-28 13:37:53 -08:00
Paulus Schoutsen
24546dfdf9
Catch all exceptions on import component/platform ( #64930 )
2022-01-25 20:39:32 -08:00
Marc Mueller
12757a8cd2
Update typing - collections.abc (1) ( #63933 )
...
* Update typing - collections.abc (1)
* Additional typing updates
2022-01-12 07:56:35 +01:00
Marc Mueller
240c9979c7
Move `disallow-any-generics` to mypy.ini ( #63917 )
2022-01-11 13:33:25 -08:00
Marc Mueller
d3b7bd25ef
Update typing (1) ( #63922 )
2022-01-11 21:26:03 +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
J. Nick Koston
615872a5d1
Align zeroconf matching with ZeroconfServiceInfo ( #62133 )
2021-12-19 02:09:21 -06:00
Paulus Schoutsen
cd3e51b3e7
Ensure domain is correct format ( #58429 )
2021-10-25 15:56:07 -07:00
Marc Mueller
238b488642
Use assignment expressions 03 ( #57710 )
2021-10-17 20:08:11 +02:00
Ruslan Sayfutdinov
a9ed4fa405
Bump awesomeversion to 21.8.1 ( #55817 )
2021-09-11 11:40:46 -07:00
J. Nick Koston
0403ea715e
Add known devices to USB Vendor / Product IDs ( #54986 )
...
Co-authored-by: kpine <keith.pine@gmail.com>
2021-08-21 21:56:49 +02:00
J. Nick Koston
dc74a52f58
Add support for USB discovery ( #54904 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-08-20 14:04:18 -05:00
Daniel Hjelseth Høyer
fbad453c89
Pylint 2.9.3 ( #52972 )
...
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2021-07-14 21:44:57 -07:00
Joakim Sørensen
5d6b6deed4
Move version validation to resolver ( #51311 )
2021-05-31 15:32:03 -07:00
Ruslan Sayfutdinov
391b2f8ccd
Add missing return type in Core constructors ( #50884 )
2021-05-20 18:53:29 +03:00
J. Nick Koston
a43561e3e6
Ensure startup can proceed if async_get_integration raises ( #50799 )
...
* Ensure startup can proceed if async_get_integration raises
There were cases where the event would never get set and
startup would deadlock because the second attempt to load
the integration would block forever
* pylint
* reorder
2021-05-17 17:32:05 -05:00
Joakim Sørensen
2f10f59717
Block custom integrations with missing or invalid version ( #49916 )
2021-05-17 15:48:41 +02:00
Joakim Sørensen
9d3b5cd0de
Change log severity from warn to error for custom integration version ( #49726 )
2021-04-26 15:04:39 -07:00
J. Nick Koston
3164eef059
Limit executor jobs during custom_components load to match non-custom behavior ( #49451 )
2021-04-20 09:16:17 -07:00
Franck Nijhof
055cdc64c0
Add support for IoT class in manifest ( #46935 )
2021-04-15 10:21:38 +02:00
Joakim Sørensen
52974e1f64
Add target version to log about missing version ( #48520 )
...
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-03-31 01:08:59 +02:00
Franck Nijhof
6932cf9534
Use contextlib.suppress where possible ( #48189 )
2021-03-23 14:36:43 +01:00
Marc Mueller
4cb7718192
Update typing 16 ( #48087 )
2021-03-18 22:58:19 +01:00
Marc Mueller
e55702d635
Update typing 01 ( #48013 )
2021-03-17 17:34:55 +01:00
shbatm
5df46b60e8
Fix flip-flopped substitutions in Custom Version Type Warning message. ( #46768 )
2021-02-19 03:00:14 +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
Joakim Sørensen
56b8e82a69
Bump awesomeversion from 21.2.0 to 21.2.2 ( #45993 )
2021-02-04 16:45:59 +01:00
Joakim Sørensen
06e6005fbb
Add warning to custom integrations without version ( #45919 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-04 09:59:41 +01:00
Ville Skyttä
2ffdc4694a
Remove misleading "for" from custom integration warning message ( #45811 )
2021-02-01 08:36:06 +01:00
Ville Skyttä
94dbcc9d2b
Generics and other type hint improvements ( #45250 )
2021-01-18 22:23:25 +01:00
J. Nick Koston
da677f7d5a
Add support for discovery via DHCP ( #45087 )
...
* Add support for discovery via DHCP
* additional tesla ouis
* merge tests
* dhcp test
* merge requirements test
* dhcp test
* dhcp discovery
* dhcp discovery
* pylint
* pylint
* pylint
* fix
* Add matching tests
* 100% cover
* cleanup
* fix codespell
* Update exception handling
* remove unneeded comment
* fix options handling exception
* fix options handling exception
2021-01-14 09:09:08 +01:00
Ville Skyttä
317ed418dd
Use singleton enum for "not set" sentinels ( #41990 )
...
* Use singleton enum for "not set" sentinel
https://www.python.org/dev/peps/pep-0484/#support-for-singleton-types-in-unions
* Remove unused variable
2020-12-19 12:46:27 +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
Paulus Schoutsen
440570244d
Don't swallow all errors when checking for config validator platform ( #42058 )
2020-10-19 17:09:57 +02:00
Erik Montnemery
343e5d64b8
Add MQTT integration discovery ( #41332 )
...
* Add MQTT integration discovery
* Add script/hassfest/mqtt.py
* Unsubscribe if config entry exists
* Add homeassistant/generated/mqtt.py
* Fix bad loop
* Improve tests
* Improve tests
* Apply suggestions from code review
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
* Prevent initiating multiple config flows
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
2020-10-07 18:30:51 +02:00
J. Nick Koston
9389a7c9be
Limit zeroconf discovery to name/macaddress when provided ( #39877 )
...
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-11 12:19:21 +02:00
Paulus Schoutsen
2a9da208d4
Allow disabling integrations in manifest, block uuid package being installed and disable ezviz ( #38444 )
2020-08-26 10:20:14 +02:00
J. Nick Koston
d0d0403664
Add zeroconf/homekit/ssdp discovery support for custom components ( #38466 )
...
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-05 15:50:56 +02:00