Add module.device to the public api (#1478)

This commit is contained in:
Steven B. 2025-01-29 18:49:38 +00:00 committed by GitHub
parent 82fbe1226e
commit ebd370da74
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 15 additions and 10 deletions

View File

@ -182,6 +182,11 @@ class Module(ABC):
self._module = module
self._module_features: dict[str, Feature] = {}
@property
def device(self) -> Device:
"""Return the device exposing the module."""
return self._device
@property
def _all_features(self) -> dict[str, Feature]:
"""Get the features for this module and any sub modules."""

View File

@ -277,12 +277,12 @@ async def test_get_modules():
# Modules on device
module = dummy_device.modules.get("cloud")
assert module
assert module._device == dummy_device
assert module.device == dummy_device
assert isinstance(module, Cloud)
module = dummy_device.modules.get(Module.IotCloud)
assert module
assert module._device == dummy_device
assert module.device == dummy_device
assert isinstance(module, Cloud)
# Invalid modules

View File

@ -58,7 +58,7 @@ async def test_fan_module(dev: SmartDevice, mocker: MockerFixture):
assert isinstance(dev, SmartDevice)
fan = next(get_parent_and_child_modules(dev, Module.Fan))
assert fan
device = fan._device
device = fan.device
await fan.set_fan_speed_level(1)
await dev.update()

View File

@ -604,7 +604,7 @@ async def test_get_modules():
# Modules on device
module = dummy_device.modules.get("Cloud")
assert module
assert module._device == dummy_device
assert module.device == dummy_device
assert isinstance(module, Cloud)
module = dummy_device.modules.get(Module.Cloud)
@ -617,8 +617,8 @@ async def test_get_modules():
assert module is None
module = next(get_parent_and_child_modules(dummy_device, "Fan"))
assert module
assert module._device != dummy_device
assert module._device._parent == dummy_device
assert module.device != dummy_device
assert module.device.parent == dummy_device
# Invalid modules
module = dummy_device.modules.get("DummyModule")

View File

@ -176,7 +176,7 @@ async def test_light_brightness(dev: Device):
assert light
# Test getting the value
feature = light._device.features["brightness"]
feature = light.device.features["brightness"]
assert feature.minimum_value == 0
assert feature.maximum_value == 100
@ -205,7 +205,7 @@ async def test_light_color_temp(dev: Device):
)
# 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.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))
assert light
# 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.set_state(LightState(light_on=False))
@ -264,7 +264,7 @@ async def test_light_preset_module(dev: Device, mocker: MockerFixture):
assert preset_mod
light_mod = next(get_parent_and_child_modules(dev, Module.Light))
assert light_mod
feat = preset_mod._device.features["light_preset"]
feat = preset_mod.device.features["light_preset"]
preset_list = preset_mod.preset_list
assert "Not set" in preset_list