mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-08-06 10:44:04 +00:00
Support child devices in all applicable cli commands (#1020)
Adds a new decorator that adds child options to a command and gets the child device if the options are set. - Single definition of options and error handling - Adds options automatically to command - Backwards compatible with `--index` and `--name` - `--child` allows for id and alias for ease of use - Omitting a value for `--child` gives an interactive prompt Implements private `_update` to allow the CLI to patch a child `update` method to call the parent device `update`. Example help output: ``` $ kasa brightness --help Usage: kasa brightness [OPTIONS] [BRIGHTNESS] Get or set brightness. Options: --transition INTEGER --child, --name TEXT Child ID or alias for controlling sub- devices. If no value provided will show an interactive prompt allowing you to select a child. --child-index, --index INTEGER Child index controlling sub-devices --help Show this message and exit. ``` Fixes #769
This commit is contained in:
@@ -145,7 +145,7 @@ class IotStrip(IotDevice):
|
||||
|
||||
if update_children:
|
||||
for plug in self.children:
|
||||
await plug.update()
|
||||
await plug._update()
|
||||
|
||||
if not self.features:
|
||||
await self._initialize_features()
|
||||
@@ -362,6 +362,14 @@ class IotStripPlug(IotPlug):
|
||||
|
||||
Needed for properties that are decorated with `requires_update`.
|
||||
"""
|
||||
await self._update(update_children)
|
||||
|
||||
async def _update(self, update_children: bool = True):
|
||||
"""Query the device to update the data.
|
||||
|
||||
Internal implementation to allow patching of public update in the cli
|
||||
or test framework.
|
||||
"""
|
||||
await self._modular_update({})
|
||||
for module in self._modules.values():
|
||||
module._post_update_hook()
|
||||
|
Reference in New Issue
Block a user