-
-
Notifications
You must be signed in to change notification settings - Fork 35k
Allow config entries unload action to be coroutine #91531
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
I have missed this feature in unload. Making sure io bound things are fully closed down too make sense to me. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be good with second opinion on this. But im for it.
"""Process the on_unload callbacks and wait for pending tasks.""" | ||
if self._on_unload is not None: | ||
while self._on_unload: | ||
self._on_unload.pop()() | ||
if job := self._on_unload.pop()(): | ||
self._tasks.add(hass.async_create_task(job)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would pass a callback function to async_create_task ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No it shouldn't: see the double ()
in the pop.
Would that be clearer?
callback = self._on_unload.pop()
if job := callback():
self._tasks.add(hass.async_create_task(job))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh right.
Proposed change
Allow config entries unload action to be coroutine
Linked to #91439 and #91456
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: