From 482f9e2d1dc6989219b8a6855ec6b3c9ad36010e Mon Sep 17 00:00:00 2001 From: Jamie Magee Date: Mon, 23 Mar 2026 13:20:05 -0700 Subject: [PATCH 1/3] python3Packages.tuya-device-handlers: init at 0.0.10 --- .../tuya-device-handlers/default.nix | 41 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 43 insertions(+) create mode 100644 pkgs/development/python-modules/tuya-device-handlers/default.nix diff --git a/pkgs/development/python-modules/tuya-device-handlers/default.nix b/pkgs/development/python-modules/tuya-device-handlers/default.nix new file mode 100644 index 000000000000..2f8f79435cf5 --- /dev/null +++ b/pkgs/development/python-modules/tuya-device-handlers/default.nix @@ -0,0 +1,41 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + poetry-core, + tuya-device-sharing-sdk, + pytestCheckHook, + syrupy, +}: + +buildPythonPackage (finalAttrs: { + pname = "tuya-device-handlers"; + version = "0.0.10"; + pyproject = true; + + src = fetchFromGitHub { + owner = "home-assistant-libs"; + repo = "tuya-device-handlers"; + tag = "v${finalAttrs.version}"; + hash = "sha256-W5aSEt8xXxQUcs6+AVVcgXxjm3WppzfCaww8YX+sej0="; + }; + + build-system = [ poetry-core ]; + + dependencies = [ tuya-device-sharing-sdk ]; + + nativeCheckInputs = [ + pytestCheckHook + syrupy + ]; + + pythonImportsCheck = [ "tuya_device_handlers" ]; + + meta = { + description = "Tuya quirks library"; + homepage = "https://github.com/home-assistant-libs/tuya-device-handlers"; + changelog = "https://github.com/home-assistant-libs/tuya-device-handlers/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jamiemagee ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 036e5dada01e..dc25dd958544 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19758,6 +19758,8 @@ self: super: with self; { turrishw = callPackage ../development/python-modules/turrishw { }; + tuya-device-handlers = callPackage ../development/python-modules/tuya-device-handlers { }; + tuya-device-sharing-sdk = callPackage ../development/python-modules/tuya-device-sharing-sdk { }; tuya-iot-py-sdk = callPackage ../development/python-modules/tuya-iot-py-sdk { }; From 4d3a18dfedd144db0f06e57ff6733ac00d6c987b Mon Sep 17 00:00:00 2001 From: Jamie Magee Date: Thu, 26 Mar 2026 21:52:03 -0700 Subject: [PATCH 2/3] python3Packages.tuya-device-sharing-sdk: 0.2.9 -> 0.2.8 Downgrade to match the version pinned by home-assistant 2026.3.3 in its manifest.json. --- .../python-modules/tuya-device-sharing-sdk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix index 8f53a89075d6..c89f11ded901 100644 --- a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix +++ b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix @@ -10,14 +10,14 @@ buildPythonPackage (finalAttrs: { pname = "tuya-device-sharing-sdk"; - version = "0.2.9"; + version = "0.2.8"; pyproject = true; src = fetchFromGitHub { owner = "tuya"; repo = "tuya-device-sharing-sdk"; tag = finalAttrs.version; - hash = "sha256-kNWg+AXISThwK14ByObUr+/4GMntrZgtEEMNpw/HjLw="; + hash = "sha256-uD2Lzs08i/01iEksXpYRGB2lU7I15sQrJLfJZ93+oeY="; }; build-system = [ setuptools ]; From 39cf448b9cf200bc9da9f859082a92e318199314 Mon Sep 17 00:00:00 2001 From: Jamie Magee Date: Thu, 26 Mar 2026 21:52:13 -0700 Subject: [PATCH 3/3] home-assistant: add tuya-device-handlers, disable flaky tests Update component-packages.nix to include tuya-device-handlers as a dependency of the tuya integration and add tuya to supportedComponentsWithTests. Disable snapshot tests that fail due to nixpkgs-specific issues: - test_diagnostics.py: entity ordering differs because Python 3.14 schedules async platform setup differently than 3.13. - test_device_diagnostics[tdq_9htyiowaf5rtdhrv] and test_platform_setup_and_discovery: PyPI sdist translations differ from source strings.json ("Power-on behavior" vs "Power on behavior"). --- pkgs/servers/home-assistant/component-packages.nix | 4 +++- pkgs/servers/home-assistant/tests.nix | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index f344e5595ed2..48c4dff66996 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -6527,8 +6527,9 @@ "tuya" = ps: with ps; [ ha-ffmpeg + tuya-device-handlers tuya-device-sharing-sdk - ]; # missing inputs: tuya-device-handlers + ]; "twentemilieu" = ps: with ps; [ twentemilieu @@ -8196,6 +8197,7 @@ "trend" "triggercmd" "tts" + "tuya" "twentemilieu" "twilio" "twinkly" diff --git a/pkgs/servers/home-assistant/tests.nix b/pkgs/servers/home-assistant/tests.nix index b0c7c39646ea..b579d174b505 100644 --- a/pkgs/servers/home-assistant/tests.nix +++ b/pkgs/servers/home-assistant/tests.nix @@ -204,6 +204,11 @@ let # TraneConfigFlow doesn't support step reauth "tests/components/trane/test_init.py::test_setup_auth_error" ]; + tuya = [ + # entity ordering in diagnostics is non-deterministic; fixed upstream in + # https://github.com/home-assistant/core/pull/164819 (landing in HA 2026.4) + "tests/components/tuya/test_diagnostics.py" + ]; youtube = [ # outdated snapshot "tests/components/youtube/test_sensor.py::test_sensor" @@ -237,6 +242,12 @@ let # tries to retrieve file from github "test_non_text_stdout_capture" ]; + tuya = [ + # snapshot mismatches: PyPI sdist translations differ from strings.json + # ("Power-on behavior" vs "Power on behavior"); expected to resolve in HA 2026.4 + "test_device_diagnostics[tdq_9htyiowaf5rtdhrv]" + "test_platform_setup_and_discovery" + ]; zeroconf = [ # multicast socket bind, not possible in the sandbox "test_subscribe_discovery"