From 403a92a8f40a268984cc9a80e1db2f702be907f1 Mon Sep 17 00:00:00 2001 From: Sese Schneider Date: Mon, 17 Nov 2025 09:22:06 +0100 Subject: [PATCH 1/3] fix: Cast led_override_color_brightness from API to int --- aiounifi/models/device.py | 7 ++++--- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/aiounifi/models/device.py b/aiounifi/models/device.py index b19a2bb9a..c900abb1a 100644 --- a/aiounifi/models/device.py +++ b/aiounifi/models/device.py @@ -2,11 +2,11 @@ from __future__ import annotations -from copy import deepcopy -from dataclasses import dataclass import enum import logging import re +from copy import deepcopy +from dataclasses import dataclass from typing import Any, NotRequired, Self, TypedDict, cast from .api import ApiItem, ApiRequest @@ -943,7 +943,8 @@ def led_override_color(self) -> str | None: @property def led_override_color_brightness(self) -> int | None: """LED override color brightness.""" - return self.raw.get("led_override_color_brightness") + # UniFi API has been observed to return string values for this field. + return int(self.raw.get("led_override_color_brightness")) @property def lldp_table(self) -> list[TypedDeviceLldpTable]: diff --git a/pyproject.toml b/pyproject.toml index 1251dcd0e..a288cda67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "aiounifi" -version = "87" +version = "88" license = {text = "MIT"} description = "Python library for communicating with UniFi Network Controller API" readme = "README.md" From 8050251e13e9ec44bb063e6d5db4209e76e0fba3 Mon Sep 17 00:00:00 2001 From: Sese Schneider Date: Mon, 17 Nov 2025 16:03:47 +0100 Subject: [PATCH 2/3] add tests and formatting --- aiounifi/models/device.py | 4 ++-- tests/test_devices.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/aiounifi/models/device.py b/aiounifi/models/device.py index c900abb1a..d33693cbf 100644 --- a/aiounifi/models/device.py +++ b/aiounifi/models/device.py @@ -2,11 +2,11 @@ from __future__ import annotations +from copy import deepcopy +from dataclasses import dataclass import enum import logging import re -from copy import deepcopy -from dataclasses import dataclass from typing import Any, NotRequired, Self, TypedDict, cast from .api import ApiItem, ApiRequest diff --git a/tests/test_devices.py b/tests/test_devices.py index 071a9050d..f8f435be2 100644 --- a/tests/test_devices.py +++ b/tests/test_devices.py @@ -717,6 +717,27 @@ "wlan_overrides": [], }, ), + # UniFi API has been observed to return string values for led_override_color_brightness. + ( + [ + { + "mac": "00:11:22:33:44:55", + "model": "UP1", + "type": "uap", + "version": "1.0.0", + "led_override": "on", + "led_override_color": "#ff0000", + "led_override_color_brightness": "75", + } + ], + { + "mac": "00:11:22:33:44:55", + "model": "UP1", + "led_override": "on", + "led_override_color": "#ff0000", + "led_override_color_brightness": 75, + }, + ), ] From 2aa51777bf9160b7d19e7e15a26771865d1fc532 Mon Sep 17 00:00:00 2001 From: Sese Schneider Date: Mon, 17 Nov 2025 16:08:49 +0100 Subject: [PATCH 3/3] fix tests --- aiounifi/models/device.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aiounifi/models/device.py b/aiounifi/models/device.py index d33693cbf..dcb2fb6d8 100644 --- a/aiounifi/models/device.py +++ b/aiounifi/models/device.py @@ -943,8 +943,10 @@ def led_override_color(self) -> str | None: @property def led_override_color_brightness(self) -> int | None: """LED override color brightness.""" - # UniFi API has been observed to return string values for this field. - return int(self.raw.get("led_override_color_brightness")) + if (value := self.raw.get("led_override_color_brightness")) is not None: + # UniFi API has been observed to return string values for this field. + return int(value) + return None @property def lldp_table(self) -> list[TypedDeviceLldpTable]: