* Cleanup for apsystems and fix for strings
* Migrate to typed ConfigEntry Data for apsystems
* Improve strings for apsystems
* Improve config flow tests for apsystems by cleaning up fixtures
* Do not use Dataclass for Config Entry Typing
* Improve translations for apsystems by using sentence case and removing an apostrophe
* Rename test fixture and remove unnecessary comment in tests from apsystems
* Remove default override with default in coordinator from apsystems
* Add APsystems local API integration
* Fix session usage in config_flow in apsystems local api
* Remove skip check option for apsystems_loca api
* Update APsystems API dependency and increased test coverage to 100%
* Utilize EntityDescriptions for APsystems Local integration
* Ensure coverage entries are sorted (#114424)
* Ensure coverage entries are sorted
* Use autofix
* Adjust
* Add comment to coverage file
* test CI
* revert CI test
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use patch instead of Http Mocks for APsystems API tests
* Fix linter waring for apsystemsapi
* Fix apsystemsapi test
* Fix CODEOWNERS for apsystemsapi
* Address small PR review changes for apsystems_local
* Remove wrong lines in coveragerc
* Add serial number for apsystems_local
* Remove option of custom refresh interval fro apsystems_local
* Remove function override and fix stale comments
* Use native device id and name storage instead of custom one for apsystems_local
* Use runtime_data for apsystems_local
* Don't store entry data in runtime data
* Move from apsystems_local to apsystems domain
---------
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Migrate tibber notify service
* Tests and repair flow
* Use notify repair flow helper
* Cleanup strings after using helper, use HomeAssistantError
* Add entry state assertions to unload test
* Update comment
* Update comment
* Initial monzo implementation
* Tests and fixes
* Extracted api to pypi package
* Add app confirmation step
* Corrected data path for accounts
* Removed useless check
* Improved tests
* Exclude partially tested files from coverage check
* Use has_entity_name naming
* Bumped monzopy to 1.0.10
* Remove commented out code
* Remove reauth from initial PR
* Remove useless code
* Correct comment
* Remove reauth tests
* Remove device triggers from intial PR
* Set attr outside constructor
* Remove f-strings where no longer needed in entity.py
* Rename field to make clearer it's a Callable
* Correct native_unit_of_measurement
* Remove pot transfer service from intial PR
* Remove reauth string
* Remove empty fields in manifest.json
* Freeze SensorEntityDescription and remove Mixin
Also use list comprehensions for producing sensor lists
* Use consts in application_credentials.py
* Revert "Remove useless code"
Apparently this wasn't useless
This reverts commit c6b7109e47202f866c766ea4c16ce3eb0588795b.
* Ruff and pylint style fixes
* Bumped monzopy to 1.1.0
Adds support for joint/business/etc account pots
* Update test snapshot
* Rename AsyncConfigEntryAuth
* Use dataclasses instead of dictionaries
* Move OAuth constants to application_credentials.py
* Remove remaining constants and dependencies for services from this PR
* Remove empty manifest entry
* Fix comment
* Set device entry_type to service
* ACC_SENSORS -> ACCOUNT_SENSORS
* Make value_fn of sensors return StateType
* Rename OAuthMonzoAPI again
* Fix tests
* Patch API instead of integration for unavailable test
* Move pot constant to sensor.py
* Improve type safety in async_get_monzo_api_data()
* Update async_oauth_create_entry() docstring
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add Epic Games Store integration
Squashed commit of the following PR: #81167
* Bump epicstore-api to 0.1.7 as it handle better error 1004
Thanks to d7469f7c99
* Use extra_state_attributes instead of overriding state_attributes
* Review: change how config_flow.validate_input is handled
* Use LanguageSelector and rename locale to language
* Review: init-better use of hass.data.setdefault
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Review: don't need to update at init
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Revert "Review: don't need to update at init" --> not working otherwise
This reverts commit 1445a87c8e9b7247f1c9835bf2e2d7297dd02586.
* Review: fix config_flow.validate_input/retactor following lib bump
* review: merge async_update function with event property
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* hassfest
* Fix duplicates data from applied comment review 5035055
* review: thanks to 5035055 async_add_entities update_before_add param is not required anymore
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Fix Christmas special "Holiday sale" case
* gen_requirements_all
* Use CONF_LANGUAGE from HA const
* Move CalendarType to const
* manifest: integration_type -> service
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* calendar: remove date start/end assert
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* const: rename SUPPORTED_LANGUAGES
* hassfest
* config: Move to ConfigFlowResult
* coordinator: main file comment
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* ruff & hassfest
* review: do not guess country
* Add @hacf-fr as codeowner
* review: remove games extra_attrs
Was dropped somehow:
- 73c20f34803b0a0ec242bf0740494f17a68f6f59 review: move games extra_attrs to data service
- other commit that removed the service part
* review: remove unused error class
was removed:
- 040cf945bb5346b6d42b3782b5061a13fb7b1f6b
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Ignore coverage for aiohttp_resolver backport helper
* Adjust generate to sort core items
* Adjust validate to sort core items
* Split line
* Apply suggestion
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
* Fix suggestion
---------
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
* Bump aiodns to 3.2.0
changelog: https://github.com/saghul/aiodns/compare/v3.1.1...v3.2.0
* Switch to using the AsyncResolver with aiohttp
This avoids creating executor jobs to do DNS resolution
AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available
This is a backport of https://github.com/aio-libs/aiohttp/pull/8270
* Switch to using the AsyncResolver with aiohttp
This avoids creating executor jobs to do DNS resolution
AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available
This is a backport of https://github.com/aio-libs/aiohttp/pull/8270
* Switch to using the AsyncResolver with aiohttp
This avoids creating executor jobs to do DNS resolution
AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available
This is a backport of https://github.com/aio-libs/aiohttp/pull/8270
* Switch to using the AsyncResolver with aiohttp
This avoids creating executor jobs to do DNS resolution
AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available
This is a backport of https://github.com/aio-libs/aiohttp/pull/8270
* fixes
* fix mocking in next_dns
* fix unmocked calls in blink
* more mocking fixes
* more fixes
* more fixes
* Fix missing mocking in nextdns tests
extracted from #114539
* extract from context
* Ensure coverage entries are sorted
* Use autofix
* Adjust
* Add comment to coverage file
* test CI
* revert CI test
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove deprecated forecast attribute from WeatherEntity
* Fix some
* Ruff
* ipma
* buienradar
* some more
* Some more
* More and more
* strings
* attr_forecast
* Fix nws
* Fix
* remove from coverage
* Remove recorder test
* Review comments
* initial fork
* intial tests
* Initial test coverage
* extra coverage
* complete config flow tests
* fix generated
* Update CODEOWNERS
* Move logic to PyPi library and update to pass config_flow test and pre-commit
* Remove Button, Select and Sensor platform for initial PR
* Update manifest.json
* Change info logs to debug in cover
* Use _abort_if_unique_id_configured instead of custom loop checking existing entries
* Change platforms list to PLATFORMS global
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove VERSION from ConfigFlow
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Replace all info logs by debug
* Use instance attributes in ConfigFlow
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Add return type and docstring to init in ConfigFlow
* Add recovery to tests containing errors
* Make NoBluetoothAdapter and NoDevicesFound abort instead of show error
* Change info logs to debug
* Add and change integration type from hub to device
* Use CONF_ADDRESS from homeassistant.const
* Move cover attributes initialization out of constructor
* Change CONF_ADDRESS in tests from const to homeassistant.const
* Remove unused part of tests
* Change 'not motion_device' to 'motion_device is None'
* Change _attr_connection_type to _connection_type
* Add connections to DeviceInfo
* Add model to DeviceInfo and change MotionBlindType values
* Remove identifiers from DeviceInfo
* Move constants from const to library
* Move calibration and running to library, re-add all platforms
* Remove platforms from init
* Remove button platform
* Remove select platform
* Remove sensor platform
* Bump motionblindsble to 0.0.4
* Remove closed, opening and closing attribute default values
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove CONFIG_SCHEMA from init
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove unused platform attributes and icons
* Re-add _attr_is_closed to GenericBlind to fix error
* Use entry.async_create_background_task for library instead of entry.async_create_task
* Move updating of position on disconnect to library
* Remove type hints, keep for _attr_is_closed
* Use DISPLAY_NAME constant from library for display name
* Add TYPE_CHECKING condition to assert in config_flow
* Re-add CONFIG_SCHEMA to __init__ to pass hassfest
* Change FlowResult type to ConfigFlowResult
* Fix import in tests
* Fix ruff import
* Fix tests by using value of enum
* Use lowercase name of MotionBlindType enum for data schema selector and translation
* Fix using name instead of value for MotionBlindType
* Improve position None handling
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
* Improve tilt None handling
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
* Change BLIND_TO_ENTITY_TYPE name
* Set entity name of cover to None and use DeviceInfo name
* Add base entity
* Move async_update to base entity
* Move unique ID with suffix to base class
* Add entity.py to .coveragerc
* Remove extra state attribute connection type
* Remove separate line hass.data.setdefault(DOMAIN, {})
* Remove use of field for key and translation_key in MotionCoverEntityDescription
* Remove entity translation with extra state_attributes from strings.json
* Use super().__init__(device, entry)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Change if block in async_update_running
* Use if blocks in async_update_position
* Add additional scanner check before show_form
* Remove default value of device_class in MotionCoverEntityDescription
* Fix entry.data[CONF_BLIND_TYPE] uppercase
* Fix device info model name
* Bump motionblindsble to 0.0.5
* Fix tests
* Move entity_description to MotionblindsBLEEntity
* Change double roller blind name
* Bump motionblindsble to 0.0.6
* Fix ruff
* Use status_query for async_update
* Bump motionblindsble to 0.0.7
* Change bluetooth local name
* Set kw_only=True for dataclass
* Change name of GenericBlind
* Change scanner_count conditional
* Wrap async_register_callback in entry.async_on_unload
* Bump motionblindsble to 0.0.8
* Use set_create_task_factory and set_call_later_factory
* Update bluetooth.py generated
* Simplify COVER_TYPES dictionary
* Move registering callbacks to async_added_to_hass
* Remove check for ATTR_POSITION and ATTR_TILT_POSITION in kwargs
* Add naming consistency for device and entry
* Use if block instead of ternary for _attr_unique_id
* Improve errors ternary in config_flow
* Use set instead of list for running_type
* Improve errors ternary in config_flow
* Remove init from MotionblindsBLECoverEntity and move debug log to async_added_to_hass
* Update debug log create cover
* Fix ruff
* Use identity check instead of equals
* Use identity check instead of equals
* Change MotionblindsBLECoverEntityDescription name
* Change debug log text
* Remove ATTR_CONNECTION from const
* Add types for variables in async_setup_entry
* Add types for variables in async_setup_entry
* Change PositionBlind class name to PositionCover etc
* Improve docstrings
* Improve docstrings
---------
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add control4 room based media player (#13)
* update attribute names (#14)
* change to data class and set off to idle (#15)
Co-authored-by: nalin29 <nalin29@github.com>
---------
Co-authored-by: nalin29 <nalin29@github.com>
* 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>
* 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
* 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
* 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
* add button platform to microBees
* use list comprehension for async_add_entities
* add a transaltion_key and fix list comprehension
* add panic button
* remove BUTTON_PRODUCT_IDS
* rebase off dev
* Update homeassistant/components/weatherflow_cloud/const.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Addressing 1st round of PR Comments
* Update homeassistant/components/weatherflow_cloud/config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* addressing PR Comments
* fixing last comment that i can see
* Update homeassistant/components/weatherflow_cloud/coordinator.py
OOPS
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update homeassistant/components/weatherflow_cloud/weather.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update homeassistant/components/weatherflow_cloud/coordinator.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* switching to station id
* Update homeassistant/components/weatherflow_cloud/strings.json
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* addressing PR
* Updated tests to be better
* Updated tests accordingly
* REAuth flow and tests added
* Update homeassistant/components/weatherflow_cloud/strings.json
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update homeassistant/components/weatherflow_cloud/coordinator.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Addressing PR comments
* Apply suggestions from code review
* ruff fix
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add breeze switch
* Cleanup code
* Replace switch entity with new fan entity
* Revert "Replace switch entity with new fan entity"
This reverts commit 4fc1ac22e67091a7e980aefd217652f2a88bed17.
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* add support for fan entity
* removed unused variables
* removed preset leftovers - not needed
* added deprecation for fans
* Update __init__.py
* fix typing
* initial updates based on review
* updated to search on unique ID instead of entity ID.
* updates for nits
* nits updates
* updates for new callback
* removed async per nits
* wrapped comments into shorter lines
* Add comment comma
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add bring integration
* fix typings and remove from strictly typed
- wait for python-bring-api to be ready for strictly typed
* make entity unique to user and list
- before it was only list, therefore the same list imported by two users would have failed
* simplify bring attribute
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* cleanup and code simplification
* remove empty fields in manifest
* __init__.py aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* __init__.py aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* strings.json aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* streamline async calls
* use coordinator refresh
* fix order in update call and simplify bring list
* simplify the config_flow
* Update homeassistant/components/bring/manifest.json
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* add unit testing for __init__.py
* cleanup comments
* use dict instead of list
* Update homeassistant/components/bring/todo.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* clean up
* update attribute name
* update more attribute name
* improve unit tests
- remove patch and use mock in conftest
* clean up tests even more
* more unit test inprovements
* remove optional type
* minor unit test cleanup
* Update .coveragerc
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* Add clima support to Comelit integration
* address first part of review comments
* applied more review comments
* remove old multiplier
* removed preset modes (not always configured)
* small tweak
* apply StrEnum class
* added device info and unique id
* removed wrong attribute
* added base entity
* rename domain
* added entity.py to coveragerc
* added base entity for sensors and alarm panel
* add generic type translation
* rename functions
* rename device name to device model
* set _attr_name = None
* pass in only the entry_id instead of the full config_entry
* set unique id to device_id or entry id
* use deviceinfo class
* moved _attr_name = None to entities
* Update homeassistant/components/lupusec/alarm_control_panel.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/lupusec/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/lupusec/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* remove DOMAIN from unique id
* removed redundant function
* Update homeassistant/components/lupusec/alarm_control_panel.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/lupusec/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
---------
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* init support for config flow for lupusec
* correctly iterate over BinarySensorDeviceClass values for device class
* bump lupupy to 0.3.2
* Updated device info for lupusec
* revert bump lupupy for separate pr
* fixed lupusec test-cases
* Change setup to async_setup
* remove redundant check for hass.data.setdefault
* init support for config flow for lupusec
* correctly iterate over BinarySensorDeviceClass values for device class
* bump lupupy to 0.3.2
* Updated device info for lupusec
* revert bump lupupy for separate pr
* fixed lupusec test-cases
* Change setup to async_setup
* remove redundant check for hass.data.setdefault
* resolve merge error lupupy
* connection check when setting up config entry
* removed unique_id and device_info for separate pr
* changed name to friendly name
* renamed LUPUSEC_PLATFORMS to PLATFORMS
* preparation for code review
* necessary changes for pr
* changed config access
* duplicate entry check
* types added for setup_entry and test_host_connection
* removed name for lupusec system
* removed config entry from LupusecDevice
* fixes for sensors
* added else block for try
* added integration warning
* pass config to config_flow
* fix test cases for new config flow
* added error strings
* changed async_create_entry invocation
* added tests for exception handling
* use parametrize
* use parametrize for tests
* recover test
* test unique id
* import from yaml tests
* import error test cases
* Update tests/components/lupusec/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* fixed test case
* removed superfluous test cases
* self._async_abort_entries_match added
* lib patching call
* _async_abort_entries_match
* patch lupupy lib instead of test connection
* removed statements
* test_flow_source_import_already_configured
* Update homeassistant/components/lupusec/config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* removed unique_id from mockentry
* added __init__.py to .coveragerc
---------
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add Huum integration
* Use DeviceInfo instead of name property for huum climate
* Simplify entry setup for huum climate entry
* Don’t take status as attribute for huum climate init
* Remove unused import
* Set unique id as entity id in huum init
* Remove unused import for huum climate
* Use entry ID as unique ID for device entity
* Remove extra newline in huum climate
* Upgrade pyhuum to 0.7.4
This version no longer users Pydantic
* Parameterize error huum tests
* Update all requirements after pyhuum upgrade
* Use Huum specific naming for ConfigFlow
* Use constants for username and password in huum config flow
* Use constants for temperature units
* Fix typing and pylint issues
* Update pyhuum to 0.7.5
* Use correct enums for data entry flow in Huum tests
* Remove test for non-thrown CannotConnect in huum flow tests
* Refactor failure config test to also test a successful flow after failure
* Fix ruff-format issues
* Move _status outside of __init__ and type it
* Type temperature argument for _turn_on in huum climate
* Use constants for auth in huum config flow test
* Refactor validate_into into a inline call in huum config flow
* Refactor current and target temperature to be able to return None values
* Remove unused huum exceptions
* Flip if-statment in async_step_user flow setup to simplify code
* Change current and target temperature to be more future proof
* Log exception instead of error
* Use custom pyhuum exceptions
* Add checks for duplicate entries
* Use min temp if no target temp has been fetched yet when heating huum
* Fix tests so that mock config entry also include username and password
* Fix ruff styling issues
I don’t know why it keeps doing this. I run `ruff` locally, and then it does not complain, but CI must be doing something else here.
* Remove unneded setting of unique id
* Update requirements
* Refactor temperature setting to support settings target temparature properly