* Add Config Flow for Rova component
* Add tests for Rova config flow
* Fix data type
* Add rova to requirements for tests
* Removed seperate function for area check and global variable
* Add unique name and id to rova entities
* Add support for multiple rova entries
* Fix correct error after connection timeout or http error
* Revert SENSOR_TYPES update
* Add existing rova configuration from yaml as new entity
* Add tests for import configuration.yaml flow
* Cleanup code
* Update valid rova area check in config flow
* Changed abort keys and messages
* Updated using self.add_suggested_values_to_schema
* Update to pass tests
* Added missing strings
* Update sensor unique_ids
* Fix service name formatting
* Update tests for Rova entry
* Update tests to recover after error
* Update test name
* Apply suggestions from code review
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add 3 new buttons
- System shutdown button
- System reboot button
- Octoprint restart button
* Enable buttons by default
* Add tests
* Fix tests
* Remove accidentally committed unused code
* Add RESTART device class to RestartOctoprint and RebootSystem buttons
* Apply suggestions to octoprint test_button
* Freeze time for OctoPrint button tests
* Make new button base class to prevent implementing the availability check multiple times
* Expose sleep config getters and setters
* Add a switch for toggling sleep schedule
* Add Time platform
* Add frozen to dataclasses
* Update tests
* Add starlink time to coveragerc
* No more mixin
* Update time.py
* Update time.py
* Run data collectors asynchronously
* Fix timezone handling
* Move legacy device_tracker setup to a tracked task
Legacy platforms are now loaded in a tracked task which
allows anything waiting on device_tracker (such as
a config entry that uses the device_tracker
platform) to proceed.
This also allows us to remove the workaround
of adding device_tracker to
hass.config.components in its setup
* tweak
* tweak
* fix tests
* Replace pylint pointless-statement with ruff B018
* fix occurrences of B018
* disable pylint expression-not-assigned as well
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add more sensors
* Fix coverage
* Dont do this rename yet
* Fix case
* Update snapshot
* Add icons
* Remove unused icons
* Update snapshot
* Remove last_value logic from TimeSensor
* Apply suggestions from code review
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update constant case
* Remove useless test
* Add refresh test back
* Add assertion to post coordinator refresh
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add profiler set_asyncio_debug service
Currently when a user has a problem with there event loop being blocked
the simplest way to enable asyncio debug is to add `debugpy:` to
`configuration.yaml`, however this approach slows the system which
makes the report less useful and harder to track down the problem.
We need a lightweight way to enable debug mode so users can report
problems with the event loop being blocked, and we have a better
chance of finding the source without side effects
* logging
* logging
* logging
* comments
* fix
* icon
* only if enabled
* coverage
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* Speed up ffmpeg setup
Only check for old versions of ffmpeg if is_official_image
is False
* adjust
* adjust
* twea
* Update homeassistant/components/ffmpeg/__init__.py
* forgot about the mock in conftest for comps
* Add category registry
* Add entity registry support
* Update homeassistant/components/config/entity_registry.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use ulid instead
* Add tests for adding same name in different scopes
* Handle keyerror on update
* Lookup tweak
* Omit categories from entity registry snapshots
* Use base registry
* Update snapshots
* Update snapshots
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add button entity
* Add support for Ring intercom ("other" device type)
* description
* format
* - Tests
- Fallback when intercom devices arent inside response
* Fix ring button
* Update library
* Fix button after merge
* Move names to strings.json
* Remove button entity_category
* Add wifi sensors to other
* Add last_ sensors to other
* Fix tests
* Add button test
* Add new sensors tests
* Revert "Add last_ sensors to other"
This reverts commit 5c03bba5a1.
* Update library
* Revert "Revert "Add last_ sensors to other""
This reverts commit 27631978d0.
* Fix tests
* Remove default list for other
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
* Copy mock to conftest
* Fix history test
* Change time skip
* Remove button
* Fix history test
---------
Co-authored-by: Martin Pham <tuyentq2009@gmail.com>
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
Construct storage data in the executor
Constructing storage data can be expensive for large files and can block the event
loop. While ideally we optimize the construction of the data, there are some places
we cannot make it any faster. To avoid blocking the loop, the construction of
the data is now done in the executor by running the data_func in the executor.
2024-03-14 11:28:20.178 WARNING (MainThread) [asyncio] Executing <TimerHandle cancelled when=2319925.760294916 Store._async_schedule_callback_delayed_write() created at /Users/bdraco/home-assistant/homeassistant/helpers/storage.py:328> took 0.159 seconds
There is some risk that the data_func is not thread-safe and needs to be run in
the event loop, but I could not find any cases in our existing code where it
would be a problem
* Deprecate the map integration
* Revert changes in DashboardsCollection._async_load_data
* Add option to allow single word in dashboard URL
* Update tests
* Translate title
* Add icon
* Improve test coverage
* Add a helper to import modules in the event loop
Replaces the one used for triggers with a more generic helper
that can be reused and uses a future to avoid importing concurrently
* Add a helper to import modules in the event loop
Replaces the one used for triggers with a more generic helper
that can be reused and uses a future to avoid importing concurrently
* coverage
* make sure we do not retry
* coverage
* 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
* Improve lists for MQTT integration
* Extra diagnostics tests
* Revert changes where the original version was probably faster
* Revert change to gather and await in series
There were leaks when
* The component was shutdown
* There was a timeout during the initial device opening
Additionally, the device was not closed/reopened when there was a
timeout reading regular data.
* Add motion detection enable/disable to ring camera platform
* Write ha state directly
Co-authored-by: J. Nick Koston <nick@koston.org>
* Parametrize on off state tests
* Add tests for errors on setting motion detection
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add device_id to sentence trigger and external conversation APIs
* Remove device_id from external API
* Update tests/components/conversation/snapshots/test_init.ambr
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Await discovery_function in the DiscoveryFlowHandler instead of wrapping
This function was always a coro so it can be awaited
directly instead of wrapping it in add_job
* Run coroutines as eager tasks in async_run_hass_job
Note that this does not change async_add_hass_job
Do not merge this. For test run only
* Phase out periodic tasks
* false by default or some tests will block forever, will need to fix each one manually
* kwarg works
* kwarg works
* kwarg works
* fixes
* fix more tests
* fix more tests
* fix lifx
* opensky
* pvpc_hourly_pricing
* adjust more
* adjust more
* smarttub
* adjust more
* adjust more
* adjust more
* adjust more
* adjust
* no eager executor
* zha
* qnap_qsw
* fix more
* fix fix
* docs
* its a wrapper now
* add more coverage
* coverage
* cover all combos
* more fixes
* more fixes
* more fixes
* remaining issues are legit bugs in tests
* make tplink test more predictable
* more fixes
* feedreader
* grind out some more
* make test race safe
* limit first scope to triggers
* one more
* Start tasks eagerly in for async_at_start(ed)
A few of these can avoid being scheduled on the loop
during startup
* fix cloud
* Revert "fix cloud"
This reverts commit 5eb3ce695d.
* fix test to do what start does
* flip flag
* flip flag
* Fix here_travel_time creating many refresh requests at startup
- Each entity would try to refresh the coordinator which
created many tasks. Move the refresh to a single
async_at_started
- The tests fired the EVENT_HOMEASSISTANT_START event
but the code used async_at_started which only worked
because the tests did not set CoreState to not_running
* fix azure
* remove kw
* remove kw
* rip
* cover
* more rips
* more rips
* more rips
* Move yandex transport fixture to integration test
* Update tests/components/yandex_transport/test_sensor.py
* Ran ruff
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Allow Shelly CoAP to honor default network adapter
* apply review comment
* 1 more debug log line
* adapt code to library changes
* test
* improve test
* one more test
* Move Microsoft face fixture to integration test
* Update tests/components/microsoft_face/test_init.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Fix
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Properly set entity names for APCUPSD
* Add test cases to prevent future regressions
* Fix tests due to the updated entity IDs
* Prettify code
* Remove redundant translation key
* 17Track tests
* add 17Track sensor to coverage
* extract repeated code
* 1. _goto_future - call tick only once
2. change test name to reflect test
3. remove ifs from test
* remove undersocre from _goto_future
We have a few places where we call async_listen with a callback so we can schedule
the coro eagerly. We can drop these in favor of setting run_immediately now.
* Allow Just-in-Time platform setup for mqtt
* Only forward the setup of new platforms
* Fix new platforms being setup at reload + test
* Revert not related changes
* Remove unused partial
* Address comments, only import plaforms if needed
* Apply suggestions from code review
* Add multipl platform discovery test
* Improve test
* Use a lock per platform
* Phase out periodic tasks
* false by default or some tests will block forever, will need to fix each one manually
* kwarg works
* kwarg works
* kwarg works
* fixes
* fix more tests
* fix more tests
* fix lifx
* opensky
* pvpc_hourly_pricing
* adjust more
* adjust more
* smarttub
* adjust more
* adjust more
* adjust more
* adjust more
* adjust
* no eager executor
* zha
* qnap_qsw
* fix more
* fix fix
* docs
* its a wrapper now
* add more coverage
* coverage
* cover all combos
* more fixes
* more fixes
* more fixes
* remaining issues are legit bugs in tests
* make tplink test more predictable
* more fixes
* feedreader
* grind out some more
* make test race safe
* one more
* Never update the device path from config flows
* Bring coverage up to 100%
* Update tests/components/zha/test_config_flow.py
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
---------
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
* Bump python-telegram-bot package version to the latest.
* PySocks is no longer required as python-telegram-bot doesn't use urllib3 anymore.
* Fix moved ParseMode import
* Update filters import to new structure.
* Refactor removed Request objects to HTTPXRequest objects.
* Update to support asyncc functions
* Update timeout to new kwarg
connect_timeout is the most obvious option based on current param description, but this may need changing.
* Compatibility typo.
* Make methods async and use Bot client async natively
* Type needs to be Optional
That's what the source types are from the library
Also handle new possibility of None value
* Add socks support version of the library
* Refactor load_data function
Update to be async friendly
Refactor to use httpx instead of requests.
* Refactor Dispatcher references to Application
This is the newer model of the same class.
* Make more stuff async-friendly.
* Update tests to refactor Dispatcher usage out.
* Remove import and reference directly
* Refactor typing method
* Use async_fire now we have async support
* Fix some over complicate inheritance.
* Add the polling test telegram_text event fired back in.
* Add extra context to comment
* Handler should also be async
* Use underscores instead of camelCase
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Renamed kwarg.
* Refactor current timeout param to be read timeout
Reading the old version of the library code I believe this matches the existing functionality best
* Combine unload methods into one listener
* Fix test by stopping HA as part of fixture
* Add new fixture to mock stop_polling call
Use this in all polling tests.
* No longer need to check if application is running
It was to stop a test failing.
* Make sure the updater is started in tests
Mock external call methods
Remove stop_polling mock.
* Use cleaner references to patched methods
* Improve test by letting the library create the Update object
* Mock component tear down methods to be async
* Bump mypy cache version
* Update dependency to install from git
Allows use as a custom component in 2024.3
Allows us to track mypy issue resolution.
* Update manifest and requirements for new python-telegram-bot release.
* Remove pytest filterwarnings entry for old version of python-telegram-bot library.
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Schedule periodic coordinator updates as background tasks.
Currently, the coordinator's periodic refreshes delay startup because they are not scheduled as background tasks. We will wait if the startup takes long enough for the first planned refresh. Another coordinator's scheduled refresh will be fired on busy systems, further delaying the startup. This chain of events results in the startup taking a long time and hitting the safety timeout because too many coordinators are refreshing.
This case can also happen with scheduled entity refreshes, but it's less common. A future PR will address that case.
* periodic_tasks
* periodic_tasks
* periodic_tasks
* merge
* merge
* merge
* merge
* merge
* fix test that call the sync api from async
* one more place
* cannot chain
* async_run_periodic_hass_job
* sun and pattern time changes from automations also block startup
* Revert "sun and pattern time changes from automations also block startup"
This reverts commit 6de2defa05.
* make sure polling is cancelled when config entry is unloaded
* Revert "Revert "sun and pattern time changes from automations also block startup""
This reverts commit e8f12aad55.
* remove DisabledError from homewizard test as it relies on a race
* fix race
* direct coverage
Move analytics setup to stage 1 to avoid delaying frontend startup
analytics was only needed in the frontend startup phase for onboarding.
Its very unlikely the user will be able to complete the onboarding
steps and get to the analytics screen before analytics is done loading
so we can delay loading it until stage 1. To be absolutely sure that
it is ready, the core_config step in onboarding will wait to proceed
if it is some how still being setup
* Avoid errors when no internet connection
* Add error
* Create task in HA
* change from matter to automower
* tests
* Update homeassistant/components/husqvarna_automower/coordinator.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* address review
* Make websocket optional
* fix aioautomower version
* Fix tests
* Use stored websocket
* reset reconnect time after sucessful connection
* Typo
* Remove comment
* Add test
* Address review
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Dont remove api key during migration
* Fix return
* Fix test
* Make lambda more readable
* Move fixtures to init, move migration test to test_init.py
* Refactor config_entry data assignment
* Refactor system_bridge migration tests
* Fix type for debug message
* Fix type for debug message
* Remove duplicated unused code (rebase error)
* Refactor test_migration_minor_2_to_1 to test_migration_minor_future_to_2
* Fix version check in async_migrate_entry
* Update migration logic to handle future minor version
* Add ConfigEntryState assertion in test_init.py
* Change condition to minor_version < 2
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Refactor system bridge migration tests
* Remove minor downgrade code
* Update tests/components/system_bridge/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/system_bridge/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move dataclass to store requested data to data.py
* Use dataclass in config flow
* Move media player and sensor onto data.py dataclass
* Move data and handler inside validate
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
These were very likely to be cached so they were low on the
list to migrate, but since they are called in the event loop
its best to be sure we do no blocking I/O
discovered in https://github.com/home-assistant/core/pull/112295#discussion_r1513505710
We only checked if the last language had files to load
instead of all of them. The checks for each language
are the same because the only reason we would skip
a language is a missing/broken integration or the integration
is a single file. Both of these loop conditions are always
the same reguardless of the language so the check worked
* Add system_health to the hassio pre-imports to avoid a late executor job
`2024-03-05 17:01:33.034 DEBUG (MainThread) [homeassistant.loader] Importing platforms for hassio executor=[system_health] loop=[] took 0.12s`
This one does not take that much time but it happens at a time where
the import executor is the most busy during startup
* key
* move patch as its too early now
* Fix config modules being imported in the event loop
There was a late import in this integration because of the circular import.
The code has been rearranged to avoid the circular imports
* fixes
* fixes
* fix patching
* make eager
* remove unrelated change from this branch
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`
* 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
* Handle case where deCONZ light entity might not report a supported color mode
* If in an unknown color mode set ColorMode.UNKNOWN
* Fix comment from external discussion
* add deprecaction
* Deprecate old config options for mqtt json light
* Do not deprecate brightness flag
* Enable brightness support by default
* Keep `false` as default for brightness flag
* Add warnings and register issue
* log warning and register on use of color_mode flag
* Remove redundant cv.deprecated logging + follow up comments
Some of the data we had to search for was already available
in a dict or underlying data structure. Make it available
instead of having to build it every time.
There are more places these can be used, but I only did
the device registry cleanup for now
* Adding Energy
* Adding Energy
* Work in progress
* Add fixtures
* Add product info
* Add sensors
* Add icons
* Update metadata
* Use SensorEntityDescription for Energy
* Use ENERGY_STORAGE
* Add tests
* Fix coverage
* Update wall connector precision and units
* Change devices
* Fix serial number
* Add icons and VIN to wall connector
* Fix serial number again
* Update snapshots
* Use timestamp for minutes to arrival
* Cleanup snapshot
* Improvements
* Update fixture
* Add "code" to translations
* Add "code" to snapshot
* Use async_add_entities once
* Disable a bunch of sensors
* Ruff
* Improve fixture and test coverage
* Regen Snapshots
* Add init to coordinator
* Add 'issues' template function for listing active issues.
* Add issue template function test
* Add 'issue' template function for getting specific issue by domain and issue_id
* Remove comment
* Fix function description
* Remove reduntant function,
Fix tests
* remove pass_context
* remove issues filter
Co-authored-by: Erik Montnemery <erik@montnemery.com>
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* 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>
* Add support for local (lan) panel integration
* Fix merge conflicts
* Remove executable flag from non-executable files
* Fix tests
* Update homeassistant/components/elmax/__init__.py
Shorten comment
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix typehint
* Rename DummyPanel into DirectPanel
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Refactor option step into menu step
* Change requirement statement
* Refactor dictionary key entries to use existing constants
* Align step names to new constants
* Align step names to new constants amd align tests
* Align step names to new constants amd align tests
* Align step names to new constants
* Simplify logic to handle entire entry instead of a portion of the state
* Simplify working mode checks
* Add data_description dictionary to better explain SSL and FOLLOW_MDSN options
* Add support for local (lan) panel integration
* Fix merge conflicts
* Remove executable flag from non-executable files
* Fix tests
* Update homeassistant/components/elmax/__init__.py
Shorten comment
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix typehint
* Rename DummyPanel into DirectPanel
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Refactor option step into menu step
* Change requirement statement
* Refactor dictionary key entries to use existing constants
* Align step names to new constants
* Align step names to new constants amd align tests
* Align step names to new constants amd align tests
* Align step names to new constants
* Simplify logic to handle entire entry instead of a portion of the state
* Simplify working mode checks
* Add data_description dictionary to better explain SSL and FOLLOW_MDSN options
* Add newline at end of file
* Remove CONF_ELMAX_MODE_DIRECT_FOLLOW_MDNS option
* Fix Ruff pre-check
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update System Bridge to support version 4.x.x and above
Update systembridgeconnector to version 4.0.0.dev4
Update system_bridgeconnector version to 4.0.0.dev6
Refactor WebSocket client handling in config_flow.py
Update strings
Update data handling
Add default field values to SystemBridgeCoordinatorData
Add version check and issue creation for unsupported System Bridge versions
Update coordinator.py to set disks and memory to None
Update system bridge coordinator to use token instead of API key
Update systembridgeconnector version to 4.0.0.dev7
Update systembridgeconnector version to 4.0.0.dev8
Update systembridgeconnector version to 4.0.0.dev9
Changes
Update units
Fix GPU memory calculation in sensor.py
Update GPU memory unit of measurement
Add translation keys for binary sensor names
Cleanup
Add async_migrate_entry function for entry migration
Update systembridgeconnector version to 4.0.0.dev10
Update systembridgeconnector version to 4.0.0.dev11
Add version check and authentication handling
Update token description in strings.json
Fix skipping partitions without data in system_bridge sensor
Update systembridgeconnector version to 4.0.0.dev12
Update systembridgeconnector version to 4.0.0
Add check for unsupported version of System Bridge
Update systembridgeconnector version to 4.0.1
Update debug log message in async_setup_entry function
Remove debug log statement
Fixes
Update key to token
Update tests
Update tests
Remove unused import in test_config_flow.py
Remove added missing translations for another PR
Refactor CPU power per CPU calculation
Make one liner into lambda
Refactors
Fix exception type in async_setup_entry function
Move checks to class and set minor version
Remove unnecessary comment in gpu_memory_free function
Remove translation_key for memory_used_percentage sensor
Reverse string change
Update token placeholder in strings.json
Remove suggested_display_precision from sensor descriptions
Remove suggested_display_precision from GPU sensor setup
Refactor sensor code
* Update migrate entry
* Refactor GPU-related functions to use a decorator
* Move per cpu functions to use decorator
* Refactor functions to use decorators for data availability
* Remove CONF_API_KEY from config entry data
* Add test for migration
* Refactor import statement in test_config_flow.py
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
* Split up hassio coordinator and data into new file to allow preload
Since we cannot mark hassio as having a config_flow, it will
not get preloaded and since cloud will almost always load right
after it and block the import executor, we want to preload
the hassio config_flow and platform modules so the other
dependants can continue on while cloud is being imported
to not delay startup
* tweak
* tweak
* Add tests for number of devices created
* Change default fixture to 2 devices in one system
* Update snapshot
* Change deviuce to test
* Merge tests to one module
* 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
* Avoid expensive inspect calls in config validators
inspect has a performance problem https://github.com/python/cpython/issues/92041
We now avoid calling inspect unless we are going to log
* remove unused
* reduce
* get_integration_logger
* Rename device.py to hub.py
* Rename AxisNetworkDevice to AxisHub
* Move hub.py into hub package
* Rename get_axis_device to get_axis_api
* Split out get_axis_api to its own module
* Rename device object to hub
* Rename device to api in config flow
* Convenience method to get hub
* Fix utility meter reset without tarrifs
When using a utility_meter helper set up with a "Meter reset cycle" of
"No cycle" it is impossible to properly reset the meter to 0 and utilize
the "last reset" and "last period" attributes on the helper.
With these changes the service call can now directly reset a meter in
such a configuration and the UI selector has been updated to include
utility meters in the selection list.
Fixes#96920
* Undo UI target selection modes
As requested to not cause confusion by being able to reset individual
meters when using multiple tariffs.
* Adjust logic to only reset standalone sensors
The original logic would allow resetting meters with multiple tariffs
which was an unintended side effect.
* Vallox: reset filter button
* Better names
* Change from button to date platform
* Review
* Fix
* Drop ValloxDateEntityDescription
* Stale docstrings
* Stale docstring
* Move HassSetPosition to homeassistant domain
* Add test for unsupported domain with HassSetPosition
* Split service intent handler
* cleanup
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>