* 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>