mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-04-26 08:36:22 +00:00
Add module.device to the public api (#1478)
This commit is contained in:
parent
82fbe1226e
commit
ebd370da74
@ -182,6 +182,11 @@ class Module(ABC):
|
|||||||
self._module = module
|
self._module = module
|
||||||
self._module_features: dict[str, Feature] = {}
|
self._module_features: dict[str, Feature] = {}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device(self) -> Device:
|
||||||
|
"""Return the device exposing the module."""
|
||||||
|
return self._device
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _all_features(self) -> dict[str, Feature]:
|
def _all_features(self) -> dict[str, Feature]:
|
||||||
"""Get the features for this module and any sub modules."""
|
"""Get the features for this module and any sub modules."""
|
||||||
|
@ -277,12 +277,12 @@ async def test_get_modules():
|
|||||||
# Modules on device
|
# Modules on device
|
||||||
module = dummy_device.modules.get("cloud")
|
module = dummy_device.modules.get("cloud")
|
||||||
assert module
|
assert module
|
||||||
assert module._device == dummy_device
|
assert module.device == dummy_device
|
||||||
assert isinstance(module, Cloud)
|
assert isinstance(module, Cloud)
|
||||||
|
|
||||||
module = dummy_device.modules.get(Module.IotCloud)
|
module = dummy_device.modules.get(Module.IotCloud)
|
||||||
assert module
|
assert module
|
||||||
assert module._device == dummy_device
|
assert module.device == dummy_device
|
||||||
assert isinstance(module, Cloud)
|
assert isinstance(module, Cloud)
|
||||||
|
|
||||||
# Invalid modules
|
# Invalid modules
|
||||||
|
@ -58,7 +58,7 @@ async def test_fan_module(dev: SmartDevice, mocker: MockerFixture):
|
|||||||
assert isinstance(dev, SmartDevice)
|
assert isinstance(dev, SmartDevice)
|
||||||
fan = next(get_parent_and_child_modules(dev, Module.Fan))
|
fan = next(get_parent_and_child_modules(dev, Module.Fan))
|
||||||
assert fan
|
assert fan
|
||||||
device = fan._device
|
device = fan.device
|
||||||
|
|
||||||
await fan.set_fan_speed_level(1)
|
await fan.set_fan_speed_level(1)
|
||||||
await dev.update()
|
await dev.update()
|
||||||
|
@ -604,7 +604,7 @@ async def test_get_modules():
|
|||||||
# Modules on device
|
# Modules on device
|
||||||
module = dummy_device.modules.get("Cloud")
|
module = dummy_device.modules.get("Cloud")
|
||||||
assert module
|
assert module
|
||||||
assert module._device == dummy_device
|
assert module.device == dummy_device
|
||||||
assert isinstance(module, Cloud)
|
assert isinstance(module, Cloud)
|
||||||
|
|
||||||
module = dummy_device.modules.get(Module.Cloud)
|
module = dummy_device.modules.get(Module.Cloud)
|
||||||
@ -617,8 +617,8 @@ async def test_get_modules():
|
|||||||
assert module is None
|
assert module is None
|
||||||
module = next(get_parent_and_child_modules(dummy_device, "Fan"))
|
module = next(get_parent_and_child_modules(dummy_device, "Fan"))
|
||||||
assert module
|
assert module
|
||||||
assert module._device != dummy_device
|
assert module.device != dummy_device
|
||||||
assert module._device._parent == dummy_device
|
assert module.device.parent == dummy_device
|
||||||
|
|
||||||
# Invalid modules
|
# Invalid modules
|
||||||
module = dummy_device.modules.get("DummyModule")
|
module = dummy_device.modules.get("DummyModule")
|
||||||
|
@ -176,7 +176,7 @@ async def test_light_brightness(dev: Device):
|
|||||||
assert light
|
assert light
|
||||||
|
|
||||||
# Test getting the value
|
# Test getting the value
|
||||||
feature = light._device.features["brightness"]
|
feature = light.device.features["brightness"]
|
||||||
assert feature.minimum_value == 0
|
assert feature.minimum_value == 0
|
||||||
assert feature.maximum_value == 100
|
assert feature.maximum_value == 100
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ async def test_light_color_temp(dev: Device):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Test getting the value
|
# Test getting the value
|
||||||
feature = light._device.features["color_temperature"]
|
feature = light.device.features["color_temperature"]
|
||||||
assert isinstance(feature.minimum_value, int)
|
assert isinstance(feature.minimum_value, int)
|
||||||
assert isinstance(feature.maximum_value, int)
|
assert isinstance(feature.maximum_value, int)
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ async def test_light_set_state(dev: Device):
|
|||||||
light = next(get_parent_and_child_modules(dev, Module.Light))
|
light = next(get_parent_and_child_modules(dev, Module.Light))
|
||||||
assert light
|
assert light
|
||||||
# For fixtures that have a light effect active switch off
|
# For fixtures that have a light effect active switch off
|
||||||
if light_effect := light._device.modules.get(Module.LightEffect):
|
if light_effect := light.device.modules.get(Module.LightEffect):
|
||||||
await light_effect.set_effect(light_effect.LIGHT_EFFECTS_OFF)
|
await light_effect.set_effect(light_effect.LIGHT_EFFECTS_OFF)
|
||||||
|
|
||||||
await light.set_state(LightState(light_on=False))
|
await light.set_state(LightState(light_on=False))
|
||||||
@ -264,7 +264,7 @@ async def test_light_preset_module(dev: Device, mocker: MockerFixture):
|
|||||||
assert preset_mod
|
assert preset_mod
|
||||||
light_mod = next(get_parent_and_child_modules(dev, Module.Light))
|
light_mod = next(get_parent_and_child_modules(dev, Module.Light))
|
||||||
assert light_mod
|
assert light_mod
|
||||||
feat = preset_mod._device.features["light_preset"]
|
feat = preset_mod.device.features["light_preset"]
|
||||||
|
|
||||||
preset_list = preset_mod.preset_list
|
preset_list = preset_mod.preset_list
|
||||||
assert "Not set" in preset_list
|
assert "Not set" in preset_list
|
||||||
|
Loading…
x
Reference in New Issue
Block a user