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/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 ]; 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" diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index fabf837c7185..0dae3b830722 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19760,6 +19760,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 { };