* Add support for grouping HEOS media players
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Handle groups at controller level, refine tests.
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
* Fix linting issues
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rename variables and improve resolving of entity_ids
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Don't patch internal methods
Use the pytest fixtures which have already been defined for this.
* Fix linting issues
* Remove unused property
* Ignore groups with unknown leader
This makes sure that the group_members attribute won't contain a `None`
value as a leader entity_id.
* Don't call force_update_groups() from tests
* Don't pass `None` player ids to HEOS API
* Use signal for group manager communication
* Use imports for async_dispatcher_send/async_dispatcher_connect
* Raise exception when leader/player could not be resolved
* Disconnect signal handlers, avoid calling async_update_groups too early
* Update homeassistant/components/heos/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Andrew Sayre (he/his/him) <6730289+andrewsayre@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Make async_get_device connections Optional, default None
* Remove unnecessary async_get_device connections arg usages
Some of these were using an incorrect collection type, which didn't
cause issues mostly just due to luck.
* Remove unnecessary exception re-wraps
* Preserve exception chains on re-raise
We slap "from cause" to almost all possible cases here. In some cases it
could conceivably be better to do "from None" if we really want to hide
the cause. However those should be in the minority, and "from cause"
should be an improvement over the corresponding raise without a "from"
in all cases anyway.
The only case where we raise from None here is in plex, where the
exception for an original invalid SSL cert is not the root cause for
failure to validate a newly fetched one.
Follow local convention on exception variable names if there is a
consistent one, otherwise `err` to match with majority of codebase.
* Fix mistaken re-wrap in homematicip_cloud/hap.py
Missed the difference between HmipConnectionError and
HmipcConnectionError.
* Do not hide original error on plex new cert validation error
Original is not the cause for the new one, but showing old in the
traceback is useful nevertheless.
* Add ability to ignore heos discovery
* Fetch player_id, update tests
* Handle failure state
* Update tests as there are two players in the mock now
* Adjust and add more tests
* Strip out player id lookup
* reverts per review
* one more revert
* Add select source support
* Review feedback changes
* Removed unused import
* Ignore 'umused' import used in typing
* Only include trace back on useful errors
* Remove return from play_source
## Description:
Denon HEOS media player.
**Pull request in [home-assistant.io](https://github.com/home-assistant/home-assistant.io) with documentation (if applicable):** home-assistant/home-assistant.io#8848
## Example entry for `configuration.yaml` (if applicable):
```yaml
heos:
host: HEOS-1
```
## Checklist:
- [X] The code change is tested and works locally.
- [X] Local tests pass with `tox`. **Your PR cannot be merged unless tests pass**
- [X] There is no commented out code in this PR.
If user exposed functionality or configuration variables are added/changed:
- [X] Documentation added/updated in [home-assistant.io](https://github.com/home-assistant/home-assistant.io)
If the code communicates with devices, web services, or third-party tools:
- [X] New dependencies have been added to the `REQUIREMENTS` variable ([example][ex-requir]).
- [X] New dependencies are only imported inside functions that use them ([example][ex-import]).
- [X] New or updated dependencies have been added to `requirements_all.txt` by running `script/gen_requirements_all.py`.
- [X] New files were added to `.coveragerc`.
If the code does not interact with devices:
- [ ] Tests have been added to verify that the new code works.
[ex-requir]: https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/keyboard/__init__.py#L14
[ex-import]: https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/keyboard/__init__.py#L23
Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>