mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-08-06 10:44:04 +00:00
Add flake8-pytest-style (PT) for ruff (#1105)
This will catch common issues with pytest code. * Use `match` when using `pytest.raises()` for base exception types like `TypeError` or `ValueError` * Use tuples for `parametrize()` * Enforces `pytest.raises()` to contain simple statements, using `noqa` to skip this on some cases for now. * Fixes incorrect exception type (valueerror instead of typeerror) for iotdimmer. * Adds check valid types for `iotbulb.set_hsv` and `color` smart module. * Consolidate exception messages for common interface modules.
This commit is contained in:
@@ -51,10 +51,12 @@ class Color(SmartModule):
|
||||
|
||||
return HSV(hue=h, saturation=s, value=v)
|
||||
|
||||
def _raise_for_invalid_brightness(self, value: int):
|
||||
def _raise_for_invalid_brightness(self, value):
|
||||
"""Raise error on invalid brightness value."""
|
||||
if not isinstance(value, int) or not (1 <= value <= 100):
|
||||
raise ValueError(f"Invalid brightness value: {value} (valid range: 1-100%)")
|
||||
if not isinstance(value, int):
|
||||
raise TypeError("Brightness must be an integer")
|
||||
if not (0 <= value <= 100):
|
||||
raise ValueError(f"Invalid brightness value: {value} (valid range: 0-100%)")
|
||||
|
||||
async def set_hsv(
|
||||
self,
|
||||
@@ -73,10 +75,14 @@ class Color(SmartModule):
|
||||
:param int value: value in percentage [0, 100]
|
||||
:param int transition: transition in milliseconds.
|
||||
"""
|
||||
if not isinstance(hue, int) or not (0 <= hue <= 360):
|
||||
if not isinstance(hue, int):
|
||||
raise TypeError("Hue must be an integer")
|
||||
if not (0 <= hue <= 360):
|
||||
raise ValueError(f"Invalid hue value: {hue} (valid range: 0-360)")
|
||||
|
||||
if not isinstance(saturation, int) or not (0 <= saturation <= 100):
|
||||
if not isinstance(saturation, int):
|
||||
raise TypeError("Saturation must be an integer")
|
||||
if not (0 <= saturation <= 100):
|
||||
raise ValueError(
|
||||
f"Invalid saturation value: {saturation} (valid range: 0-100%)"
|
||||
)
|
||||
|
@@ -90,7 +90,7 @@ class LightEffect(SmartModule, SmartLightEffect):
|
||||
"""
|
||||
if effect != self.LIGHT_EFFECTS_OFF and effect not in self._scenes_names_to_id:
|
||||
raise ValueError(
|
||||
f"Cannot set light effect to {effect}, possible values "
|
||||
f"The effect {effect} is not a built in effect. Possible values "
|
||||
f"are: {self.LIGHT_EFFECTS_OFF} "
|
||||
f"{' '.join(self._scenes_names_to_id.keys())}"
|
||||
)
|
||||
|
Reference in New Issue
Block a user