Some modules have attributes that may not be supported by the device.
These attributes will be annotated with a FeatureAttribute return type.
For example:
@property
def hsv(self) -> Annotated[HSV, FeatureAttribute()]:
"""Return the current HSV state of the bulb."""
You can test whether a FeatureAttribute is supported by the device with kasa.Module.has_feature()
or kasa.Module.get_feature() which will return None if not supported.
Calling these methods on attributes not annotated with a FeatureAttribute return type will return an error.