* feat: make this variable available in template entities
This makes the variable `this` available in template entities.
It will simplify the use of self-referencing template entities.
Because, without this, we have to repeat the entity id every time.
If we can solve this without explicitly spelling the entity id,
code can be re-used much better.
As a side-effect, this will allow to use `variables`-like patterns,
where attributes can be used as variables to calculate subsequent attributes or state.
Example:
```yaml
template:
sensor:
- name: test
state: "{{ this.attributes.test }}"
# not: "{{ state_attr('sensor.test', 'test' }}"
attributes:
test: "{{ now() }}"
```
* expose entity_id instead of this
* add test
* Refactor to expose this variable
* Tweak repr dunder
Co-authored-by: Erik <erik@montnemery.com>
* Add entity registry helper to migrate entity to new platform
* Add additional assertion
* Add more properties to migration logic
* Change logic after thinking about erik's comments
* Require new_config_entry_id if entry.config_entry_id is not None
* Create private async_update_entity function that all update functions use
* Don't have special handling for entity ID missing in async_update_entity_platform
* fix docstring
* rebase off current
* rearrange
* Overload selector function
* Update/fix all selector references
* better typing?
* remove extra option
* move things around
* Switch to Sequence type to avoid ignoring mypy error
* Get rid of ...'s
* Improve typing to reduce number of ignores
* Remove all typing ignores
* Make config optional for selectors that don't need a config
* add missing unit prefixes
* Rename TypedDicts
* Update homeassistant/helpers/selector.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* review feedback
* remove peta from integration integration
* Fix min_max
* Revert change to selector function
* Fix logic
* Add typing for selector classes
* Update selector.py
* Fix indent
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add support for new select selector properties
* fix mode option
* Apply suggestions from code review
* Correct validation for empty options, update tests
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix notify discovery setup
* add test
* unsubscribe at reset
* Add guard
* move dispatcher to reload module
* only unsubscribe if platform was setup
* initialize dispatcher once and tests
* test get_service too
* add tests
* fix test
* use get_service for test invalid platform
* Test built-in reload method
* set to None after clearing dispatcher - tests
* Pathing services file
* Update tests/components/notify/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* dispatcher is not set twice if integration loaded
* empty discovery payload
* Removed not needed services.yaml mock
* Update tests/components/notify/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* flake8
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>