Merge master into staging-next
This commit is contained in:
@@ -975,6 +975,11 @@ lib.mapAttrs mkLicense (
|
||||
fullName = "libtiff License";
|
||||
};
|
||||
|
||||
liliq-p-11 = {
|
||||
spdxId = "LiLiQ-P-1.1";
|
||||
fullName = "Licence Libre du Québec – Permissive version 1.1";
|
||||
};
|
||||
|
||||
llgpl21 = {
|
||||
fullName = "Lisp LGPL; GNU Lesser General Public License version 2.1 with Franz Inc. preamble for clarification of LGPL terms in context of Lisp";
|
||||
url = "https://opensource.franz.com/preamble.html";
|
||||
|
||||
@@ -77,11 +77,10 @@ in
|
||||
# configure the recorder component to use the postgresql db
|
||||
recorder.db_url = "postgresql://@/hass";
|
||||
|
||||
# we can't load default_config, because the updater requires
|
||||
# network access and would cause an error, so load frontend
|
||||
# here explicitly.
|
||||
# https://www.home-assistant.io/integrations/frontend/
|
||||
frontend = { };
|
||||
# without these some components that are loaded anyway fail to find
|
||||
# their dependencies
|
||||
default_config = { };
|
||||
infrared = { };
|
||||
|
||||
# include some popular integrations, that absolutely shouldn't break
|
||||
knx = { };
|
||||
@@ -288,7 +287,7 @@ in
|
||||
wait_for_homeassistant(cursor)
|
||||
|
||||
with subtest("Check that no errors were logged"):
|
||||
hass.fail("journalctl -u home-assistant -o cat | grep -q ERROR")
|
||||
hass.fail("journalctl -u home-assistant -o cat | grep -q 'ERROR ('")
|
||||
|
||||
with subtest("Check systemd unit hardening"):
|
||||
hass.log(hass.succeed("systemctl cat home-assistant.service"))
|
||||
|
||||
@@ -1130,13 +1130,13 @@
|
||||
"vendorHash": "sha256-33NOGIvqLpgndG68GxAeoiISjWV7ApR4jmvqyZHjPKo="
|
||||
},
|
||||
"rootlyhq_rootly": {
|
||||
"hash": "sha256-iNWJBv9idm0BUIeP7HScQP8MtWdyJCUF4p1EdRvgE98=",
|
||||
"hash": "sha256-OTXTCAeKsDtjtOqM6gP2/D1D5ZNblqf/1VtnZoEYNNI=",
|
||||
"homepage": "https://registry.terraform.io/providers/rootlyhq/rootly",
|
||||
"owner": "rootlyhq",
|
||||
"repo": "terraform-provider-rootly",
|
||||
"rev": "v5.7.0",
|
||||
"rev": "v5.10.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-UyfCHBSdGKCulExhUdYfvEab8cVjaHGDfgslRS0d1Co="
|
||||
"vendorHash": "sha256-b4hzgQeuOZ5mruSZGIR9iImiVhmLnFlFSQr1RUTDx8E="
|
||||
},
|
||||
"rundeck_rundeck": {
|
||||
"hash": "sha256-g8unbz8+UGLiAOJju6E2bLkygvZgHkv173PdMDefmrc=",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromCodeberg,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "convoyeur";
|
||||
version = "0.1.1";
|
||||
|
||||
src = fetchFromCodeberg {
|
||||
owner = "classabbyamp";
|
||||
repo = "convoyeur";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-gfOmi3yyGEjGPooWocCBIO5wR5hKgz4HmbJBiIMh4RE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-rMRKTaKleO5QNeLM0jAOJ2kCKGfJxQWACWTqU8A8wt8=";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "IRCv3 FILEHOST extension adapter to external file upload services";
|
||||
homepage = "https://codeberg.org/classabbyamp/convoyeur";
|
||||
mainProgram = "convoyeur";
|
||||
license = lib.licenses.liliq-p-11;
|
||||
maintainers = with lib.maintainers; [ lenny ];
|
||||
};
|
||||
}
|
||||
@@ -27,19 +27,19 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "deadlock-mod-manager";
|
||||
version = "0.16.0";
|
||||
version = "0.17.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "deadlock-mod-manager";
|
||||
repo = "deadlock-mod-manager";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-rsOaCgP7ub4FkTkg1VWPZyf+N2I0qM0DCIIqBpJZCVg=";
|
||||
hash = "sha256-8Z2w/92P/3PpFDcT1rhO3X4gyoV+l9uLb4jZ4Ixz6ck=";
|
||||
};
|
||||
|
||||
cargoRoot = "apps/desktop";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
cargoHash = "sha256-aUtJzgjc9reFxUVMRwqCd2lNMRALlfMkfIRN4QT3g+E=";
|
||||
cargoHash = "sha256-MQog4ro5NWXmyS5aPZBb7K4LwfIDzxdhGZjWlh5LelE=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.cargoSetupHook
|
||||
@@ -79,7 +79,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pnpm = pnpm_9;
|
||||
fetcherVersion = 2;
|
||||
sourceRoot = "source";
|
||||
hash = "sha256-oQxW0q+myMllwLQd+GRXXvnce+bYtwTLEEwFU0nupv4=";
|
||||
hash = "sha256-vZvQrKiuKlwY2+QCpsG2nm8uA0hmX0MOk603EcKbyOg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "dprint";
|
||||
version = "0.53.0";
|
||||
version = "0.53.2";
|
||||
|
||||
# Prefer repository rather than crate here
|
||||
# - They have Cargo.lock in the repository
|
||||
@@ -21,10 +21,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "dprint";
|
||||
repo = "dprint";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-4LtE/r/qUiZb4bOph/XEx+U0g11fvyX/nKZh8Ikt0SQ=";
|
||||
hash = "sha256-n2nb8+Iplm9AMlyxCfRjGmuES1FvYIVgcilSg7LcjiM=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-BV+hyiuIvn811E1y0IWOTkjtEpH/l6drWHXeMIXeOWk=";
|
||||
cargoHash = "sha256-FTD8rCdMC1W+1SE5ezAz3rLNc6UErGbN0/5uiPCABuk=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "freifunk-meshviewer";
|
||||
|
||||
version = "13.0.0";
|
||||
version = "13.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "freifunk";
|
||||
repo = "meshviewer";
|
||||
tag = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-KMI2pKzGSsSOB1XzAd8Jv1YLJWK/RUiZJv/kOs+Mpbo=";
|
||||
sha256 = "sha256-u9lX7B402KFOHyaReyg3f5rDYDshbO/lyMYo7XxgJR8=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-EI0A4s86moYerWvZHPLnyy2O87ZskiP/tr8rAGO8MbE=";
|
||||
npmDepsHash = "sha256-BaFtFdOu+WArH75nPtasSpecdGjMxTchFcF+K7krNpM=";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/freifunk-meshviewer/
|
||||
|
||||
@@ -25,13 +25,13 @@ let
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "gogh";
|
||||
version = "364";
|
||||
version = "365";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Gogh-Co";
|
||||
repo = "Gogh";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-DVaUmpXWGb+bIdGZqXbiAsiuGTrwvPJdxCyA4g82LFA=";
|
||||
hash = "sha256-qK3E7ceeVqBgJ8rSotfH3K9WpxE5dS/h4a7Ml5qwlS0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
nodejs_22,
|
||||
makeWrapper,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
rolldown,
|
||||
installShellFiles,
|
||||
version ? "2026.3.12",
|
||||
@@ -100,7 +99,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = {
|
||||
description = "Self-hosted, open-source AI assistant/agent";
|
||||
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -I nixpkgs=./. -i bash -p nix-update
|
||||
#shellcheck shell=bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
export NIXPKGS_ALLOW_INSECURE=1 # package has knownVulnerabilities
|
||||
nix-update "$UPDATE_NIX_ATTR_PATH"
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
writeText,
|
||||
replaceVars,
|
||||
meson,
|
||||
@@ -19,6 +20,7 @@
|
||||
systemd,
|
||||
xkeyboard-config,
|
||||
fontconfig,
|
||||
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -47,6 +49,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
(replaceVars ./fix-paths.patch {
|
||||
fcmatch = "${fontconfig}/bin/fc-match";
|
||||
})
|
||||
|
||||
# fix build without udev, see https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/382 - drop on next release
|
||||
(fetchpatch {
|
||||
name = "fix-build-without-udev.patch";
|
||||
url = "https://gitlab.freedesktop.org/plymouth/plymouth/-/commit/f1ce78764482699b28f60c89af1a071ea0ae13ca.patch";
|
||||
hash = "sha256-t5xt/scO8mVwESU8pFPTSXILd0FhmG/XRZ8O/4baQB8=";
|
||||
})
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
@@ -67,8 +76,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
libpng
|
||||
libxkbcommon
|
||||
pango
|
||||
systemd
|
||||
xkeyboard-config
|
||||
]
|
||||
++ lib.optionals systemdSupport [
|
||||
systemd
|
||||
];
|
||||
|
||||
mesonFlags =
|
||||
@@ -87,9 +98,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"-Dbackground-start-color-stop=0x000000"
|
||||
"-Dbackground-end-color-stop=0x000000"
|
||||
"-Drelease-file=/etc/os-release"
|
||||
"-Dudev=enabled"
|
||||
"-Dudev=${if systemdSupport then "enabled" else "disabled"}"
|
||||
"-Drunstatedir=/run"
|
||||
"-Druntime-plugins=true"
|
||||
"-Dsystemd-integration=${lib.boolToString systemdSupport}"
|
||||
]
|
||||
++ lib.optionals systemdSupport [
|
||||
"--cross-file=${crossFile}"
|
||||
];
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rwpspread";
|
||||
version = "0.5.0";
|
||||
version = "0.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "0xk1f0";
|
||||
repo = "rwpspread";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-lp9XvILpvNZtffJLyDUCo5Xyor4X4bwsfxAIqS8Hf7M=";
|
||||
hash = "sha256-SWykTlj51lrPz7c9TfNOhMEZcpi8NMLDx50ZqnNlfsU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-aGy29kGwCKHBNzszYR+w+1m8gZ/lFd0MOlFHtDDzjj4=";
|
||||
cargoHash = "sha256-vrCxtbhCFtHRvqwDow7njz/V2QWzs7p/28MTZL4XsBc=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
||||
@@ -12,18 +12,18 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "shellhub-agent";
|
||||
version = "0.22.0";
|
||||
version = "0.24.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "shellhub-io";
|
||||
repo = "shellhub";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-Ngb6n1P5Bb11et5x1mTF4rQjx/TdfE93nLc2NRz4aSg=";
|
||||
hash = "sha256-NV2VA/rquf0TwTAsaAA6TIHp1BwD+5jE8uOZg7tW/kI=";
|
||||
};
|
||||
|
||||
modRoot = "./agent";
|
||||
|
||||
vendorHash = "sha256-FlbSHLkJlOdbgfS+B5f8GLihw2KNQCh3G8kt8E+eb3w=";
|
||||
vendorHash = "sha256-dloFaS/BUnyd9kHB0d2vsibkgFlQwTBkgRBOiBbq2ZY=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vicinae";
|
||||
version = "0.20.8";
|
||||
version = "0.20.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vicinaehq";
|
||||
repo = "vicinae";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-G+ibcIvOaPE3qot4zLmHUo7cmNFNU1kw2Zhn08D26Ts=";
|
||||
hash = "sha256-ax517n+zbfOvr2H+QfyqAq/6Ad3Qu3CnlaI4q6JfrXk=";
|
||||
};
|
||||
|
||||
apiDeps = fetchNpmDeps {
|
||||
|
||||
@@ -1,26 +1,29 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
wheel,
|
||||
setuptools-scm,
|
||||
aiocoap,
|
||||
pycryptodomex,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aioairctrl";
|
||||
version = "0.2.6";
|
||||
version = "0.3.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-mQNgkgQ83GOSc0g0ATctlr4ZeB7g8iGd4qTZfyoO8DM=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kongo09";
|
||||
repo = "aioairctrl";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-Ea5OMbpwDubhnpY5K0CVXZneEGtNWkqkQQ7JwVa/JNU=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
wheel
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
@@ -30,9 +33,12 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "aioairctrl" ];
|
||||
|
||||
doCheck = false; # no tests
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/kongo09/aioairctrl/releases/tag/${src.tag}";
|
||||
description = "Library for controlling Philips air purifiers (using encrypted CoAP)";
|
||||
homepage = "https://github.com/kongo09/aioairctrl";
|
||||
license = lib.licenses.mit;
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aioamazondevices";
|
||||
version = "13.0.1";
|
||||
version = "13.3.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chemelli74";
|
||||
repo = "aioamazondevices";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-FCHANMtOMGiV+RqAXRUHpax2UH4xwLRHaJzWvXwZC7U=";
|
||||
hash = "sha256-DaQbcWnE/Ij8NpBJ7d0YjWQwKn+mxNw4P4RPT0Lmfs8=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
@@ -26,14 +26,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "aioesphomeapi";
|
||||
version = "44.2.0";
|
||||
version = "44.8.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esphome";
|
||||
repo = "aioesphomeapi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-YJhNHNeY6952XrNthhLEzo/GVkKQC5QOcvTpAVbgRic=";
|
||||
hash = "sha256-8vc9efKFXTQ1or4uAIMo7ElHc7gaaxKheWGb2RcppbQ=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -10,29 +10,26 @@
|
||||
pytest-cov-stub,
|
||||
pytest-timeout,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
yarl,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiohasupervisor";
|
||||
version = "0.3.3";
|
||||
version = "0.4.3";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "home-assistant-libs";
|
||||
repo = "python-supervisor-client";
|
||||
tag = version;
|
||||
hash = "sha256-v6w+g1M3VR/an3a5MfWf8fDCHNzRC4+05L7GW45PzWU=";
|
||||
hash = "sha256-h22y62f+pdoHYKqPeKNGFkVS7/IMWbxaAoDLomwAB40=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail 'version = "0.0.0"' 'version = "${version}"' \
|
||||
--replace-fail "setuptools>=68.0,<80.10" "setuptools"
|
||||
--replace-fail "setuptools>=68.0,<82.1" "setuptools"
|
||||
'';
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "aiohomematic-config";
|
||||
version = "2026.3.2";
|
||||
version = "2026.3.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sukramj";
|
||||
repo = "aiohomematic-config";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-0TfRaTL+oxukl4nMPTxrtLMqCxAOcAW/brXxCeP9NB4=";
|
||||
hash = "sha256-OGpGtF+BH+WWIGGfpS6myJ7fPi1wuWYjeSS9y9LhXGY=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiohomematic";
|
||||
version = "2026.3.8";
|
||||
version = "2026.3.23";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.14";
|
||||
@@ -27,7 +27,7 @@ buildPythonPackage rec {
|
||||
owner = "SukramJ";
|
||||
repo = "aiohomematic";
|
||||
tag = version;
|
||||
hash = "sha256-uVG8rMxgb5JwNy9r9jT17BIZFxGn5rxtzRtQV6Mfxkk=";
|
||||
hash = "sha256-zbXz/pg5CB8YLs6oF3Nv8gVimc/jQu3pHRpD/y3Wp5Q=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "aiomealie";
|
||||
version = "1.2.1";
|
||||
version = "1.2.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "joostlek";
|
||||
repo = "python-mealie";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-TwzE5GAP4DNxj3DZdu83eSobcYYbrOn9tPb+8904a/8=";
|
||||
hash = "sha256-2244R2r+b08UG58Amd94Dsn6d59oAiJLL6jOd4ZOqro=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
@@ -1,31 +1,41 @@
|
||||
{
|
||||
lib,
|
||||
aiohttp,
|
||||
aioresponses,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
mashumaro,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiotedee";
|
||||
version = "0.2.27";
|
||||
version = "0.3.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zweckj";
|
||||
repo = "aiotedee";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-yN5v/kZ3oX3HYqgQR33gyCkGkHaAdPpP1Q9Q0eavJJs=";
|
||||
hash = "sha256-0+wUQRsMb9y8XUwwUX3exIzkaAFLYNUpsAr0MgnkMIo=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [ aiohttp ];
|
||||
dependencies = [
|
||||
aiohttp
|
||||
mashumaro
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "aiotedee" ];
|
||||
|
||||
# Module has no tests
|
||||
doCheck = false;
|
||||
nativeCheckInputs = [
|
||||
aioresponses
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Module to interact with Tedee locks";
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
pbr,
|
||||
httpx,
|
||||
pillow,
|
||||
pycryptodome,
|
||||
pyjwt,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
python,
|
||||
respx,
|
||||
setuptools,
|
||||
time-machine,
|
||||
tzdata,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "bimmer-connected";
|
||||
version = "0.17.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bimmerconnected";
|
||||
repo = "bimmer_connected";
|
||||
tag = version;
|
||||
hash = "sha256-wNrUZepfkEFPvU3HWop9JAjCHlK3v+xTuAUIZ0P4YtA=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
pbr
|
||||
setuptools
|
||||
];
|
||||
|
||||
env.PBR_VERSION = version;
|
||||
|
||||
dependencies = [
|
||||
httpx
|
||||
pycryptodome
|
||||
pyjwt
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
china = [ pillow ];
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
cp -R bimmer_connected/tests/responses $out/${python.sitePackages}/bimmer_connected/tests/
|
||||
'';
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
respx
|
||||
time-machine
|
||||
]
|
||||
++ lib.concatAttrValues optional-dependencies;
|
||||
|
||||
disabledTests = [
|
||||
# presumably regressed in pytest-asyncio 0.23.0
|
||||
"test_get_remote_position_too_old"
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
|
||||
export PATH=$out/bin:$PATH
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "bimmer_connected" ];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/bimmerconnected/bimmer_connected/releases/tag/${version}";
|
||||
description = "Library to read data from the BMW Connected Drive portal";
|
||||
mainProgram = "bimmerconnected";
|
||||
homepage = "https://github.com/bimmerconnected/bimmer_connected";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
# https://github.com/bimmerconnected/bimmer_connected#library-not-working-anymore-due-to-changes-at-bmw-side
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "bleak-esphome";
|
||||
version = "3.6.0";
|
||||
version = "3.7.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bluetooth-devices";
|
||||
repo = "bleak-esphome";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-XZ/JjrHJ8Zd1t2Ahi0Jc7S/bkXMIBHfDTVanoGemtI0=";
|
||||
hash = "sha256-drNMU0Ka5e3uQ9UHXP5O+I4l4jOxUdq2Bf0WcsGk9IM=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "bleak-retry-connector";
|
||||
version = "4.5.0";
|
||||
version = "4.6.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Bluetooth-Devices";
|
||||
repo = "bleak-retry-connector";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-aGk5wNrQ8ti2qu1FxmOqPtDpivm5DRaKvwzDNz9rFmQ=";
|
||||
hash = "sha256-wUfIP0UHL60AAq38j4Kc2enTccdhT7aaSrXWJ1y5+7I=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
python,
|
||||
runCommand,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
configargparse,
|
||||
acme,
|
||||
configobj,
|
||||
@@ -25,25 +24,17 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "certbot";
|
||||
version = "5.3.1";
|
||||
version = "5.4.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "certbot";
|
||||
repo = "certbot";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-u9qzZFhvIapXQwxehvMieCV+4uigteSOeHVw7ycMCEU=";
|
||||
hash = "sha256-Tu46Wybod89TiwsVccNuQcweWoeQE1wbH+pDWNC9+kE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "fix-test_rollback_too_many.patch";
|
||||
url = "https://github.com/certbot/certbot/commit/4c61a450d4a843c66baab6d5d9a42ce0554e99d7.patch";
|
||||
hash = "sha256-PSh2JXoEWNUrqxNh8X5QchyIP8KRHT60T/cLax6VRWo=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = "cd certbot"; # using sourceRoot would interfere with patches
|
||||
sourceRoot = "${src.name}/certbot";
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "deebot-client";
|
||||
version = "18.0.0";
|
||||
version = "18.1.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.13";
|
||||
@@ -31,12 +31,12 @@ buildPythonPackage (finalAttrs: {
|
||||
owner = "DeebotUniverse";
|
||||
repo = "client.py";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-ZKLA8RbYsysY+pAT9K6z2yThWo2YeM6TLqLBMuo+/GQ=";
|
||||
hash = "sha256-+URVdNcuV7H/vrYw+8fq6IdZ9OSZsbqDEZSd8s5XKyA=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-UcgQKv8YhsWdOzKQ7K3HTX/FmopQen7HQ/Jyuj+hePI=";
|
||||
hash = "sha256-umCaUmtlKPs/sxdZ0BdA9pbg5gy4aOQl3uSAioD1gXs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
lib,
|
||||
pyserial-asyncio-fast,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "enocean-async";
|
||||
version = "0.4.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "henningkerstan";
|
||||
repo = "enocean-async";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-VBBZwNPBgJ9rXUaAVtRzgdebeDtfJCt7R1zOu3Eom80=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
pyserial-asyncio-fast
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "enocean_async" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# tests have broken imports, fixed in 0.12.4
|
||||
"tests/test_eep.py"
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/henningkerstan/enocean-async/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
description = "Async implementation of the EnOcean Serial Protocol Version 3";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = [ lib.maintainers.dotlambda ];
|
||||
};
|
||||
})
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchpatch2,
|
||||
|
||||
# build-system
|
||||
setuptools,
|
||||
|
||||
# dependencies
|
||||
beautifulsoup4,
|
||||
pyserial,
|
||||
|
||||
# tests
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "enocean";
|
||||
version = "0.60.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kipe";
|
||||
repo = "enocean";
|
||||
tag = version;
|
||||
hash = "sha256-S62YvRP1bvEzzzMd/jMjIdHAZsUImF9EQhsrPPzebDE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch2 {
|
||||
name = "replace-nose-with-pytest.patch";
|
||||
url = "https://github.com/kipe/enocean/commit/e5ca3b70f0920f129219c980ad549d7f3a4576de.patch";
|
||||
hash = "sha256-cDBvI0I4W5YkGTpg+rKy08TUAmKlhKa/5+Muou9iArs=";
|
||||
})
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
pythonRemoveDeps = [ "enum-compat" ];
|
||||
|
||||
dependencies = [
|
||||
beautifulsoup4
|
||||
pyserial
|
||||
];
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"enocean.communicators"
|
||||
"enocean.protocol.packet"
|
||||
"enocean.utils"
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/kipe/enocean/releases/tag/${version}";
|
||||
description = "EnOcean serial protocol implementation";
|
||||
mainProgram = "enocean_example.py";
|
||||
homepage = "https://github.com/kipe/enocean";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
};
|
||||
}
|
||||
@@ -9,10 +9,10 @@
|
||||
debugpy,
|
||||
fetchFromGitHub,
|
||||
hatchling,
|
||||
keyring,
|
||||
pytest-asyncio,
|
||||
pytest-freezer,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
pyyaml,
|
||||
syrupy,
|
||||
voluptuous,
|
||||
@@ -20,16 +20,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "evohome-async";
|
||||
version = "1.1.3";
|
||||
version = "1.2.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zxdavb";
|
||||
repo = "evohome-async";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Xc5GWbKqgcIIHKBvcAIS8zL9rZeEDEkwHOhhUdnImbE=";
|
||||
hash = "sha256-CbC5ms3YcNB6n5UmCHfHKTtyJau68m8QZ5UwRyiR9MM=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
@@ -45,6 +43,7 @@ buildPythonPackage (finalAttrs: {
|
||||
aiofiles
|
||||
asyncclick
|
||||
debugpy
|
||||
keyring
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "fnv-hash-fast";
|
||||
version = "1.6.0";
|
||||
version = "2.0.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bdraco";
|
||||
repo = "fnv-hash-fast";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-1o/SwX9N+wBNVkihUuCYrJAEH28FxhKEhyOEK7tK1XE=";
|
||||
hash = "sha256-wfiOI23LzdoTYl5/Wr/+3qvcJ3ce9ZrfETQXX1g6eIU=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -31,8 +31,6 @@ buildPythonPackage rec {
|
||||
|
||||
dependencies = [ fnvhash ];
|
||||
|
||||
pythonRelaxDeps = [ "fnvhash" ];
|
||||
|
||||
pythonImportsCheck = [ "fnv_hash_fast" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
{
|
||||
lib,
|
||||
asyncclick,
|
||||
bleak,
|
||||
bleak-retry-connector,
|
||||
bleak,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
poetry-core,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
tzlocal,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "gardena-bluetooth";
|
||||
version = "1.6.0";
|
||||
version = "2.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elupus";
|
||||
repo = "gardena-bluetooth";
|
||||
tag = version;
|
||||
hash = "sha256-L726A0o9TIxFjHOxx0e42RIj4XMOdeZTJE2gWo6OhG4=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-H02Uq/n2iWAtrO/Reg+yWkFxVkLJWUhq3frc50EF4fo=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
bleak
|
||||
@@ -45,8 +45,8 @@ buildPythonPackage rec {
|
||||
meta = {
|
||||
description = "Module for interacting with Gardena Bluetooth";
|
||||
homepage = "https://github.com/elupus/gardena-bluetooth";
|
||||
changelog = "https://github.com/elupus/gardena-bluetooth/releases/tag/${version}";
|
||||
changelog = "https://github.com/elupus/gardena-bluetooth/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "growattserver";
|
||||
version = "2.0.0";
|
||||
version = "1.9.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "indykoning";
|
||||
repo = "PyPi_GrowattServer";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-HsBNxE1iHdZbyzGF1rKqiftDXKbOXy8Wf2rQ17kWz6k=";
|
||||
hash = "sha256-CTIc+LROas7RGf9BzGl8hasS512LsNXcDnzLu0DD+Bk=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "habluetooth";
|
||||
version = "5.8.0";
|
||||
version = "5.11.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Bluetooth-Devices";
|
||||
repo = "habluetooth";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-VbD4fAOZtDtPIGGYb3ISP7c9YLBXAXeOIICqf9Pm5ho=";
|
||||
hash = "sha256-/5oJOSNP3vbmX7V8m6LLomNAvRzV2hM0vMCbwjFBmbg=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
lib,
|
||||
acme,
|
||||
aiohttp,
|
||||
async-timeout,
|
||||
atomicwrites-homeassistant,
|
||||
attrs,
|
||||
buildPythonPackage,
|
||||
@@ -32,16 +31,16 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "hass-nabucasa";
|
||||
version = "1.15.0";
|
||||
version = "2.2.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.13";
|
||||
disabled = pythonOlder "3.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nabucasa";
|
||||
repo = "hass-nabucasa";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-WwpCAIfl/2fp01v9Rq4tQW70aoVlvhEJl31XQTAENmA=";
|
||||
hash = "sha256-+HRyXdl/gw/dhZ+T3peinD5FMm0O/M87Uu/wyLU1eJs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -54,7 +53,6 @@ buildPythonPackage (finalAttrs: {
|
||||
dependencies = [
|
||||
acme
|
||||
aiohttp
|
||||
async-timeout
|
||||
atomicwrites-homeassistant
|
||||
attrs
|
||||
ciso8601
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "home-connect-async";
|
||||
version = "0.8.3";
|
||||
version = "0.8.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "home_connect_async";
|
||||
inherit version;
|
||||
hash = "sha256-G+mHXNbqU0pgqpvGfKmn6CrwZOhRG76m57eHimgN17s=";
|
||||
hash = "sha256-LiBBE9AiyMWipQKtHsOZ5rfqOgB75flrJYtU1oAw+hs=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "infrared-protocols";
|
||||
version = "1.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "home-assistant-libs";
|
||||
repo = "infrared-protocols";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-Sw9N8vdmdR13itUtx3Vcmc0DJN8IcIub+mzEWms/fpE=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
pythonImportsCheck = [ "infrared_protocols" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/home-assistant-libs/infrared-protocols/releases/tag/${finalAttrs.src.tag}";
|
||||
description = "Library to decode and encode infrared signals";
|
||||
homepage = "https://github.com/home-assistant-libs/infrared-protocols";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.dotlambda ];
|
||||
};
|
||||
})
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "knx-frontend";
|
||||
version = "2026.3.2.183756";
|
||||
version = "2026.3.28.223133";
|
||||
pyproject = true;
|
||||
|
||||
# TODO: source build, uses yarn.lock
|
||||
src = fetchPypi {
|
||||
pname = "knx_frontend";
|
||||
inherit version;
|
||||
hash = "sha256-OaY14AY3iaAbs8EDCLDI1LmwjtOcz1NBBWhZEU2apjI=";
|
||||
hash = "sha256-U/lHc4SZcUEG1yq2sMkSzM9n/n6TuNhbx4U2ZmMqAY0=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "librehardwaremonitor-api";
|
||||
version = "1.10.1";
|
||||
version = "1.11.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Sab44";
|
||||
repo = "librehardwaremonitor-api";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-l9xfO6PzJSYCoZWLdYpeZFpVK0x3ysvS+VM/9BPKlFs=";
|
||||
hash = "sha256-GAJgLrfYhkdafk0DSgcNgXQ2vjtBf/kOEkkRw7i9rlE=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
diff --git a/motionblindsble/device.py b/motionblindsble/device.py
|
||||
index 9c6ecf9..0d9affc 100644
|
||||
--- a/motionblindsble/device.py
|
||||
+++ b/motionblindsble/device.py
|
||||
@@ -11,6 +11,8 @@ from asyncio import (
|
||||
TimerHandle,
|
||||
create_task,
|
||||
get_event_loop,
|
||||
+ new_event_loop,
|
||||
+ set_event_loop,
|
||||
sleep,
|
||||
wait,
|
||||
)
|
||||
@@ -248,7 +250,13 @@ class ConnectionQueue:
|
||||
)
|
||||
return device._create_task(target=device.establish_connection())
|
||||
_LOGGER.debug("(%s) Connecting", device.ble_device.address)
|
||||
- return get_event_loop().create_task(device.establish_connection())
|
||||
+ try:
|
||||
+ loop = get_event_loop()
|
||||
+ except RuntimeError:
|
||||
+ loop = new_event_loop()
|
||||
+ set_event_loop(loop)
|
||||
+
|
||||
+ return loop.create_task(device.establish_connection())
|
||||
|
||||
async def wait_for_connection(self, device: MotionDevice) -> bool:
|
||||
"""Wait for a connection, return True to last caller if connected."""
|
||||
@@ -22,6 +22,11 @@ buildPythonPackage rec {
|
||||
hash = "sha256-1dA3YTjoAhe+p5vk6Xb42a+rE63m2mn5iHhVV/6tlQ0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/LennP/motionblindsble/pull/3
|
||||
./asyncio-compat.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail "{{VERSION_PLACEHOLDER}}" "${version}"
|
||||
|
||||
@@ -23,6 +23,10 @@ buildPythonPackage rec {
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"pycountry"
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
pycountry
|
||||
pyrate-limiter
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
pyserial,
|
||||
pyserial-asyncio-fast,
|
||||
pytestCheckHook,
|
||||
pythonAtLeast,
|
||||
setuptools,
|
||||
voluptuous,
|
||||
}:
|
||||
@@ -27,6 +26,11 @@ buildPythonPackage rec {
|
||||
hash = "sha256-iC0qeiTHtrdzQtJ3R01nJDCfdBKBg0jw1v49ZII24/4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/pyinsteon/pyinsteon/pull/440
|
||||
./python-3.14.diff
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -0,0 +1,693 @@
|
||||
commit d9866fc537a16fc7d8f8c6116eae78a77679efbd
|
||||
Author: Sandro Jäckel <sandro.jaeckel@gmail.com>
|
||||
Date: Wed, 1 Apr 2026 23:12:22 +0200
|
||||
|
||||
Fix Python 3.14 support
|
||||
|
||||
diff --git a/pyinsteon/tools/tools_base.py b/pyinsteon/tools/tools_base.py
|
||||
index 01a6101..6ad4cb3 100644
|
||||
--- a/pyinsteon/tools/tools_base.py
|
||||
+++ b/pyinsteon/tools/tools_base.py
|
||||
@@ -19,7 +19,7 @@
|
||||
from ..constants import RelayMode, ThermostatMode, ToggleMode
|
||||
from ..x10_address import X10Address
|
||||
from .log_filter import NoStdoutFilter, StdoutFilter, StripPrefixFilter
|
||||
-from .utils import patch_stdin_stdout, set_loop, stdio
|
||||
+from .utils import patch_stdin_stdout, stdio
|
||||
|
||||
_LOGGING = logging.getLogger(__name__)
|
||||
LOG_FILE_NAME = "pyinsteon_tools.log"
|
||||
@@ -272,7 +272,6 @@ def start(cls):
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
- set_loop()
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
intro = [
|
||||
diff --git a/pyinsteon/tools/utils.py b/pyinsteon/tools/utils.py
|
||||
index daed401..263c4a5 100644
|
||||
--- a/pyinsteon/tools/utils.py
|
||||
+++ b/pyinsteon/tools/utils.py
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Utilities for the tools commands."""
|
||||
|
||||
import asyncio
|
||||
-from asyncio.events import BaseDefaultEventLoopPolicy
|
||||
+from asyncio import DefaultEventLoopPolicy
|
||||
import os
|
||||
import sys
|
||||
|
||||
@@ -81,21 +81,3 @@ async def drain(self):
|
||||
return await loop.run_in_executor(None, sys.stdout.writelines, data)
|
||||
|
||||
return Win32StdinReader(), Win32StdoutWriter()
|
||||
-
|
||||
-
|
||||
-def set_loop() -> None:
|
||||
- """Attempt to use different loop."""
|
||||
- if sys.platform == "win32":
|
||||
- if hasattr(asyncio, "WindowsProactorEventLoopPolicy"):
|
||||
- # pylint: disable=no-member
|
||||
- policy = asyncio.WindowsProactorEventLoopPolicy()
|
||||
- else:
|
||||
-
|
||||
- class ProactorPolicy(BaseDefaultEventLoopPolicy):
|
||||
- """Event loop policy to create proactor loops."""
|
||||
-
|
||||
- _loop_factory = asyncio.ProactorEventLoop
|
||||
-
|
||||
- policy = ProactorPolicy()
|
||||
-
|
||||
- asyncio.set_event_loop_policy(policy)
|
||||
diff --git a/tests/test_managers/test_device_link_manager.py b/tests/test_managers/test_device_link_manager.py
|
||||
index 1eca93d..7db9d25 100644
|
||||
--- a/tests/test_managers/test_device_link_manager.py
|
||||
+++ b/tests/test_managers/test_device_link_manager.py
|
||||
@@ -24,7 +24,7 @@ def _reset_devices(addresses):
|
||||
device.async_status = AsyncMock()
|
||||
device.aldb.clear_pending()
|
||||
device.aldb.async_write = AsyncMock()
|
||||
- device.aldb.async_write.call_count = 0
|
||||
+ device.aldb.async_write.reset_mock()
|
||||
device.aldb.clear = Mock()
|
||||
device.async_status.return_value = ResponseStatus.SUCCESS
|
||||
|
||||
@@ -73,7 +73,7 @@ async def test_device_links_broadcast(self):
|
||||
|
||||
topic = "1a1a1a.1.on.all_link_broadcast"
|
||||
topic_item = TopicItem(topic, cmd_kwargs(0x11, 0xFF, None, "00.00.01"), 0)
|
||||
- devices["3c3c3c"].async_status.call_count = 0
|
||||
+ devices["3c3c3c"].async_status.reset_mock()
|
||||
send_topics([topic_item])
|
||||
await asyncio.sleep(0.2)
|
||||
assert devices["3c3c3c"].async_status.call_count == 1
|
||||
@@ -89,7 +89,7 @@ async def test_device_links_cleanup(self):
|
||||
):
|
||||
topic = "1a1a1a.1.off.all_link_cleanup"
|
||||
topic_item = TopicItem(topic, cmd_kwargs(0x11, 0xFF, None, "11.11.11"), 0)
|
||||
- devices["3c3c3c"].async_status.call_count = 0
|
||||
+ devices["3c3c3c"].async_status.reset_mock()
|
||||
send_topics([topic_item])
|
||||
await asyncio.sleep(0.2)
|
||||
assert devices["3c3c3c"].async_status.call_count == 1
|
||||
@@ -108,7 +108,7 @@ async def test_device_links_dedup(self):
|
||||
topic_cleanup_item = TopicItem(
|
||||
topic_cleanup, cmd_kwargs(0x11, 0xFF, None, "11.11.11"), 0.2
|
||||
)
|
||||
- devices["3c3c3c"].async_status.call_count = 0
|
||||
+ devices["3c3c3c"].async_status.reset_mock()
|
||||
send_topics([topic_broadcast_item, topic_cleanup_item])
|
||||
await asyncio.sleep(1)
|
||||
assert devices["3c3c3c"].async_status.call_count == 1
|
||||
@@ -250,7 +250,7 @@ async def test_device_links_broadcast_no_response(self):
|
||||
|
||||
topic = "1a1a1a.1.off.all_link_broadcast"
|
||||
topic_item = TopicItem(topic, cmd_kwargs(0x11, 0xFF, None, "00.00.01"), 0)
|
||||
- devices["3c3c3c"].async_status.call_count = 0
|
||||
+ devices["3c3c3c"].async_status.reset_mock()
|
||||
devices["3c3c3c"].async_status.return_value = ResponseStatus.FAILURE
|
||||
send_topics([topic_item])
|
||||
await asyncio.sleep(0.2)
|
||||
diff --git a/tests/test_managers/test_link_manager.py b/tests/test_managers/test_link_manager.py
|
||||
index cd2e602..8104617 100644
|
||||
--- a/tests/test_managers/test_link_manager.py
|
||||
+++ b/tests/test_managers/test_link_manager.py
|
||||
@@ -23,7 +23,7 @@ def _reset_devices(addresses):
|
||||
device.async_status = AsyncMock()
|
||||
device.aldb.clear_pending()
|
||||
device.aldb.async_write = AsyncMock()
|
||||
- device.aldb.async_write.call_count = 0
|
||||
+ device.aldb.async_write.reset_mock()
|
||||
device.aldb.clear = Mock()
|
||||
device.async_status.return_value = ResponseStatus.SUCCESS
|
||||
|
||||
diff --git a/tests/test_managers/test_scene_manager.py b/tests/test_managers/test_scene_manager.py
|
||||
index 9371fdf..d816cfb 100644
|
||||
--- a/tests/test_managers/test_scene_manager.py
|
||||
+++ b/tests/test_managers/test_scene_manager.py
|
||||
@@ -37,7 +37,7 @@ def _reset_devices(addresses):
|
||||
device = devices[addr]
|
||||
device.aldb.clear_pending()
|
||||
device.aldb.async_write = AsyncMock(return_value=(0, 0))
|
||||
- device.aldb.async_write.call_count = 0
|
||||
+ device.aldb.async_write.reset_mock()
|
||||
device.aldb.clear = Mock()
|
||||
|
||||
|
||||
diff --git a/tests/test_tools/test_advanced.py b/tests/test_tools/test_advanced.py
|
||||
index 9ebe6ee..2cc2e46 100644
|
||||
--- a/tests/test_tools/test_advanced.py
|
||||
+++ b/tests/test_tools/test_advanced.py
|
||||
@@ -131,7 +131,7 @@ async def test_enter_linking_mode(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- mock_enter_linking_mode.call_count = 0
|
||||
+ mock_enter_linking_mode.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_enter_linking_mode.call_count == 1
|
||||
mock_enter_linking_mode.assert_called_with(
|
||||
@@ -147,7 +147,7 @@ async def test_enter_linking_mode(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- mock_enter_linking_mode.call_count = 0
|
||||
+ mock_enter_linking_mode.reset_mock()
|
||||
stdout.buffer = []
|
||||
remove_log_file(curr_dir)
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
@@ -170,7 +170,7 @@ async def test_enter_linking_mode(self):
|
||||
cmd_mgr, _, stdout = self.setup_cmd_tool(
|
||||
AdvancedTools, inputs, allow_logging=True
|
||||
)
|
||||
- mock_enter_linking_mode.call_count = 0
|
||||
+ mock_enter_linking_mode.reset_mock()
|
||||
stdout.buffer = []
|
||||
remove_log_file(curr_dir)
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
@@ -199,7 +199,7 @@ async def test_enter_linking_mode(self):
|
||||
AdvancedTools,
|
||||
inputs,
|
||||
)
|
||||
- mock_enter_linking_mode.call_count = 0
|
||||
+ mock_enter_linking_mode.reset_mock()
|
||||
stdout.buffer = []
|
||||
remove_log_file(curr_dir)
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
@@ -228,7 +228,7 @@ async def test_enter_linking_mode(self):
|
||||
AdvancedTools,
|
||||
inputs,
|
||||
)
|
||||
- mock_enter_linking_mode.call_count = 0
|
||||
+ mock_enter_linking_mode.reset_mock()
|
||||
stdout.buffer = []
|
||||
remove_log_file(curr_dir)
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
@@ -275,8 +275,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 1
|
||||
assert good_device.aldb.async_write.call_count == 1
|
||||
@@ -291,8 +291,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -306,8 +306,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -321,8 +321,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -336,8 +336,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -349,8 +349,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -364,8 +364,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -383,8 +383,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 1
|
||||
assert good_device.aldb.async_write.call_count == 1
|
||||
@@ -402,8 +402,8 @@ async def test_remove_link(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- good_device.aldb.remove.call_count = 0
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.remove.reset_mock()
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert good_device.aldb.remove.call_count == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -422,8 +422,8 @@ async def test_remove_link(self):
|
||||
)
|
||||
|
||||
battery_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
- battery_device.aldb.remove.call_count = 0
|
||||
- battery_device.aldb.async_write.call_count = 0
|
||||
+ battery_device.aldb.remove.reset_mock()
|
||||
+ battery_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert battery_device.aldb.remove.call_count == 1
|
||||
assert battery_device.aldb.async_write.call_count == 1
|
||||
@@ -884,7 +884,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -904,7 +904,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
|
||||
@@ -923,7 +923,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
|
||||
@@ -942,7 +942,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -969,7 +969,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -996,7 +996,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -1022,7 +1022,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -1048,7 +1048,7 @@ async def test_add_link(self):
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.EMPTY, {})
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(0, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert len(good_device.aldb.pending_changes) == 0
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
@@ -1154,7 +1154,7 @@ async def test_cancel_linking_mode(self):
|
||||
inputs,
|
||||
allow_logging=True,
|
||||
)
|
||||
- mock_cancel_linking_mode.call_count = 0
|
||||
+ mock_cancel_linking_mode.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_cancel_linking_mode.call_count == 1
|
||||
|
||||
@@ -1356,7 +1356,7 @@ def create_random_arg_str(
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 1
|
||||
|
||||
@@ -1373,7 +1373,7 @@ def create_random_arg_str(
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(0, 1))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 1
|
||||
|
||||
@@ -1389,7 +1389,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1405,7 +1405,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1421,7 +1421,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1437,7 +1437,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1453,7 +1453,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1473,7 +1473,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1493,7 +1493,7 @@ def create_random_arg_str(
|
||||
allow_logging=True,
|
||||
)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
|
||||
@@ -1515,7 +1515,7 @@ def create_random_arg_str(
|
||||
)
|
||||
battery_device.aldb.load_saved_records(ALDBStatus.LOADED, records)
|
||||
battery_device.aldb.async_write = AsyncMock(return_value=(0, 0))
|
||||
- battery_device.aldb.async_write.call_count = 0
|
||||
+ battery_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert battery_device.aldb.async_write.call_count == 1
|
||||
|
||||
@@ -1532,6 +1532,6 @@ def create_random_arg_str(
|
||||
)
|
||||
good_device.aldb.load_saved_records(ALDBStatus.PARTIAL, records)
|
||||
good_device.aldb.async_write = AsyncMock(return_value=(1, 0))
|
||||
- good_device.aldb.async_write.call_count = 0
|
||||
+ good_device.aldb.async_write.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert good_device.aldb.async_write.call_count == 0
|
||||
diff --git a/tests/test_tools/test_aldb.py b/tests/test_tools/test_aldb.py
|
||||
index 5edd9d6..207babd 100644
|
||||
--- a/tests/test_tools/test_aldb.py
|
||||
+++ b/tests/test_tools/test_aldb.py
|
||||
@@ -130,7 +130,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 1
|
||||
if device.cat == DeviceCategory.DIMMABLE_LIGHTING_CONTROL:
|
||||
@@ -153,7 +153,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 1
|
||||
if device.cat == DeviceCategory.DIMMABLE_LIGHTING_CONTROL:
|
||||
@@ -190,7 +190,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 1
|
||||
if device.cat == DeviceCategory.DIMMABLE_LIGHTING_CONTROL:
|
||||
@@ -228,7 +228,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 1
|
||||
if device.cat == DeviceCategory.DIMMABLE_LIGHTING_CONTROL:
|
||||
@@ -262,7 +262,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 0
|
||||
|
||||
@@ -275,7 +275,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 0
|
||||
|
||||
@@ -287,7 +287,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 0
|
||||
|
||||
@@ -299,7 +299,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 0
|
||||
|
||||
@@ -311,7 +311,7 @@ async def test_add_device_to_scene(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_async_link_devices.call_count = 0
|
||||
+ mock_async_link_devices.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_async_link_devices.call_count == 0
|
||||
|
||||
@@ -496,7 +496,7 @@ def __init__(self):
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
ToolsAldb, [f"{command} {mock_device.address} y", "exit"]
|
||||
)
|
||||
- mock_device.aldb.async_load.call_count = 0
|
||||
+ mock_device.aldb.async_load.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_device.aldb.async_load.call_count == 1 # no retry
|
||||
|
||||
@@ -504,7 +504,7 @@ def __init__(self):
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
ToolsAldb, [f"load_aldb {devices.modem.address}", "exit"]
|
||||
)
|
||||
- devices.modem.aldb.async_load.call_count = 0
|
||||
+ devices.modem.aldb.async_load.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert devices.modem.aldb.async_load.call_count == 1
|
||||
devices.modem.aldb.async_load.assert_called_with()
|
||||
diff --git a/tests/test_tools/test_commands.py b/tests/test_tools/test_commands.py
|
||||
index e9ac640..91cdea6 100644
|
||||
--- a/tests/test_tools/test_commands.py
|
||||
+++ b/tests/test_tools/test_commands.py
|
||||
@@ -221,8 +221,8 @@ async def test_scene_on_off(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_trigger_scene_on.call_count = 0
|
||||
- mock_trigger_scene_off.call_count = 0
|
||||
+ mock_trigger_scene_on.reset_mock()
|
||||
+ mock_trigger_scene_off.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
if cmd == "scene_on":
|
||||
assert mock_trigger_scene_on.call_count == 1
|
||||
@@ -241,8 +241,8 @@ async def test_scene_on_off(self):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_trigger_scene_on.call_count = 0
|
||||
- mock_trigger_scene_off.call_count = 0
|
||||
+ mock_trigger_scene_on.reset_mock()
|
||||
+ mock_trigger_scene_off.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
if cmd == "scene_on":
|
||||
assert mock_trigger_scene_on.call_count == 1
|
||||
@@ -263,8 +263,8 @@ async def test_scene_on_off(self):
|
||||
device_01.async_on = AsyncMock()
|
||||
device_01.async_off = AsyncMock()
|
||||
stdout.buffer = []
|
||||
- mock_trigger_scene_on.call_count = 0
|
||||
- mock_trigger_scene_off.call_count = 0
|
||||
+ mock_trigger_scene_on.reset_mock()
|
||||
+ mock_trigger_scene_off.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
buffer = clean_buffer(stdout.buffer)
|
||||
assert buffer[2] == "Scene number is required\n"
|
||||
@@ -472,7 +472,7 @@ async def mock_missing_arg(on_level: int, group: int = 0, fast: bool = False):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_method.call_count = 0
|
||||
+ mock_method.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_method.call_count == 1
|
||||
mock_method.assert_called_with(on_level=255, group=0, fast=False)
|
||||
@@ -491,7 +491,7 @@ async def mock_missing_arg(on_level: int, group: int = 0, fast: bool = False):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_method.call_count = 0
|
||||
+ mock_method.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_method.call_count == 1
|
||||
mock_method.assert_called_with(on_level=on_level, group=0, fast=False)
|
||||
@@ -509,7 +509,7 @@ async def mock_missing_arg(on_level: int, group: int = 0, fast: bool = False):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_method.call_count = 0
|
||||
+ mock_method.reset_mock()
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
assert mock_method.call_count == 1
|
||||
mock_method.assert_called_with(on_level=255, group=0, fast=True)
|
||||
@@ -568,7 +568,7 @@ async def mock_missing_arg(on_level: int, group: int = 0, fast: bool = False):
|
||||
"exit",
|
||||
],
|
||||
)
|
||||
- mock_method.call_count = 0
|
||||
+ mock_method.reset_mock()
|
||||
stdout.buffer = []
|
||||
await cmd_mgr.async_cmdloop("")
|
||||
buffer = clean_buffer(stdout.buffer)
|
||||
diff --git a/tests/test_tools/test_main.py b/tests/test_tools/test_main.py
|
||||
index 0f8b038..e6b562e 100644
|
||||
--- a/tests/test_tools/test_main.py
|
||||
+++ b/tests/test_tools/test_main.py
|
||||
@@ -978,7 +978,7 @@ async def test_remove_device(self):
|
||||
await cmd_mgr.async_cmdloop()
|
||||
assert mock_unlink_devices.call_count == 3
|
||||
|
||||
- mock_unlink_devices.call_count = 0
|
||||
+ mock_unlink_devices.reset_mock()
|
||||
# Remove known device using command line mode
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
InsteonCmd, [f"remove_device {str(good_address)}", 1, "exit"]
|
||||
@@ -987,7 +987,7 @@ async def test_remove_device(self):
|
||||
assert mock_unlink_devices.call_count == 0
|
||||
assert devices.async_remove_device.call_count == 1
|
||||
|
||||
- mock_unlink_devices.call_count = 0
|
||||
+ mock_unlink_devices.reset_mock()
|
||||
# Remove known device using input mode
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
InsteonCmd, ["remove_device", str(good_address), 1, "exit"]
|
||||
@@ -996,8 +996,8 @@ async def test_remove_device(self):
|
||||
assert mock_unlink_devices.call_count == 0
|
||||
assert devices.async_remove_device.call_count == 2
|
||||
|
||||
- mock_unlink_devices.call_count = 0
|
||||
- # Remove known device using bakcground mode
|
||||
+ mock_unlink_devices.reset_mock()
|
||||
+ # Remove known device using background mode
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
InsteonCmd, [f"remove_device -b {str(good_address)}", 1, "exit"]
|
||||
)
|
||||
@@ -1005,7 +1005,7 @@ async def test_remove_device(self):
|
||||
assert mock_unlink_devices.call_count == 0
|
||||
assert devices.async_remove_device.call_count == 3
|
||||
|
||||
- mock_unlink_devices.call_count = 0
|
||||
+ mock_unlink_devices.reset_mock()
|
||||
# Remove known device using command line mode with force
|
||||
cmd_mgr, _, _ = self.setup_cmd_tool(
|
||||
InsteonCmd, [f"remove_device {str(good_address)} f", 1, "exit"]
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pyintelliclima";
|
||||
version = "0.2.2";
|
||||
version = "0.3.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dvdinth";
|
||||
repo = "pyintelliclima";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gfOfEc39o4JAdvr6GI9ly5AuRV+sseCvWY/jNAh1A5M=";
|
||||
hash = "sha256-EHcnrynvNIfo31vZyh8tS/5JfFuEQGVlYzu4XyD3XCI=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [ "dacite" ];
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pyliebherrhomeapi";
|
||||
version = "0.3.0";
|
||||
version = "0.4.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mettolen";
|
||||
repo = "pyliebherrhomeapi";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-J+s9oRKK2DWZV05M1bvDEBqczaJXuif4t3eOJUgrAu0=";
|
||||
hash = "sha256-f0+2gqNLeyLP6rOAWay+T04ry21SPA79pm+prG7kJtc=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pylitterbot";
|
||||
version = "2025.1.0";
|
||||
version = "2025.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "natekspencer";
|
||||
repo = "pylitterbot";
|
||||
tag = version;
|
||||
hash = "sha256-pQnrmH/mfh7cwEnL/qoG3dN638HsP9w5zK0CgarGstE=";
|
||||
hash = "sha256-o5A4AWil6FeHjUBgbHaA010kszhuncHHzf8+CH4QL0c=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyloadapi";
|
||||
version = "1.4.2";
|
||||
version = "2.0.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
@@ -24,7 +24,7 @@ buildPythonPackage rec {
|
||||
owner = "tr4nt0r";
|
||||
repo = "pyloadapi";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-DkYbQB91KYskfm2yDVmR0/MJiixC2C5miHpTq7RpVBU=";
|
||||
hash = "sha256-+fGrXKS7jomYMJOPneKyAV/nrvqBFrqh3ds4R46lQ48=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -1,35 +1,50 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
fetchFromGitHub,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
telnetlib3,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pylutron";
|
||||
version = "0.2.18";
|
||||
version = "0.4.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-7ZnNfa4POUTMi9sDGMyR6gu9Xpg+j/JmyWVnBBSnRSE=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "thecynic";
|
||||
repo = "pylutron";
|
||||
tag = version;
|
||||
hash = "sha256-y5RDwlIxmwzKihTDFZKoOJL+TPJbY05MKPUMs2hBWiw=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail TEMPLATE_VERSION ${version}
|
||||
'';
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
dependencies = [
|
||||
telnetlib3
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "pylutron" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
enabledTestPaths = [
|
||||
"tests"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Python library for controlling a Lutron RadioRA 2 system";
|
||||
homepage = "https://github.com/thecynic/pylutron";
|
||||
changelog = "https://github.com/thecynic/pylutron/releases/tag/${version}";
|
||||
license = with lib.licenses; [
|
||||
mit
|
||||
psfl
|
||||
];
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,21 +22,16 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyrate-limiter";
|
||||
version = "4.0.2";
|
||||
version = "4.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vutran1710";
|
||||
repo = "PyrateLimiter";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-xWxe70J69g9Tq35GjdJeT7MjUdoSEGj8w1cIKvLxJss=";
|
||||
hash = "sha256-2gWbabdRqwWiC4xbMx/VGBwwMcygVMKJswXgd4Ia+xE=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# tests cause too many connections to the postgres server and crash/timeout
|
||||
sed -i "/create_postgres_bucket,/d" tests/conftest.py
|
||||
'';
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
uv-dynamic-versioning
|
||||
@@ -60,12 +55,13 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
filelock
|
||||
pytestCheckHook
|
||||
pytest-asyncio
|
||||
pytest-xdist
|
||||
redis
|
||||
redisTestHook
|
||||
]
|
||||
++ lib.concatAttrValues optional-dependencies;
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# Slow: > 1.5 seconds/test run standalone on a fast machine
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pyswitchbot";
|
||||
version = "1.0.0";
|
||||
version = "2.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Danielhiversen";
|
||||
repo = "pySwitchbot";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-O8bdWAAtNfLo7WBgvKMm0LXCzpFz1MUqAbBJlyUBcPs=";
|
||||
hash = "sha256-1DJ7mo1L75PPoVivngJPdbEWFTF36KLShkr3V1/rLDY=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "python-bsblan";
|
||||
version = "5.1.2";
|
||||
version = "5.1.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "liudger";
|
||||
repo = "python-bsblan";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-P7c+5x5wQaWfNeeYKkylhV2AQESp40duSQfwsTDVW6M=";
|
||||
hash = "sha256-2Rynat0eXAWzlCBUJAvKrAFPLl74FMr2r1KtKPBlwYw=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -23,14 +23,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "python-roborock";
|
||||
version = "4.18.1";
|
||||
version = "5.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Python-roborock";
|
||||
repo = "python-roborock";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-5ckpRKwrLkjIAUJiXIRN2N9268pzjEjwVPVK/wSolgE=";
|
||||
hash = "sha256-Lzr+OBbOjsLpkUsFYNJ37teegWjicUAoW9Jvw3hOvGE=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [ "pycryptodome" ];
|
||||
|
||||
@@ -3,32 +3,39 @@
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
click,
|
||||
setuptools-scm,
|
||||
cryptography,
|
||||
pytest-asyncio,
|
||||
pytest-cov-stub,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "satel-integra";
|
||||
version = "0.3.7";
|
||||
version = "1.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "c-soft";
|
||||
repo = "satel_integra";
|
||||
tag = version;
|
||||
hash = "sha256-nCFb8NaZQ6TO4aXCSpbbHGkJr3nJVkt1R4hi9mts070=";
|
||||
hash = "sha256-KMbNa/XSyLF1rAB5qm/Sw2GLgigNGaj8g94Np9FSvhY=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace "'pytest-runner'," ""
|
||||
'';
|
||||
build-system = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
dependencies = [
|
||||
cryptography
|
||||
];
|
||||
|
||||
dependencies = [ click ];
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
nativeCheckInputs = [
|
||||
pytest-asyncio
|
||||
pytest-cov-stub
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "satel_integra" ];
|
||||
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "sense-energy";
|
||||
version = "0.13.8";
|
||||
version = "0.14.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scottbonline";
|
||||
repo = "sense";
|
||||
tag = version;
|
||||
hash = "sha256-hIE7wjKP+JcXQZ1lGbKCaKKK2ZlCF5BbJu3H7gqrsKU=";
|
||||
hash = "sha256-he/Ti15H2JBngvNCBSwJQWa0LBIBFa+x38TW9g2CQ44=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -1,29 +1,45 @@
|
||||
{
|
||||
lib,
|
||||
aiohttp,
|
||||
aioresponses,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
poetry-core,
|
||||
pycryptodome,
|
||||
pytest-asyncio,
|
||||
pytest-cov-stub,
|
||||
pytest-freezer,
|
||||
pytestCheckHook,
|
||||
syrupy,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "switchbot-api";
|
||||
version = "2.10.0";
|
||||
version = "2.11.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SeraphicCorp";
|
||||
repo = "py-switchbot-api";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-s6ezIkW36eIaxqedOfIk4KNhCwjXPFkc49qqK2p2eGw=";
|
||||
hash = "sha256-n2KAKILbywObqxG/lDNHkXWVCcrEJAaqv6xBDH8ed/Q=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
dependencies = [ aiohttp ];
|
||||
dependencies = [
|
||||
aiohttp
|
||||
pycryptodome
|
||||
];
|
||||
|
||||
# Module has no tests
|
||||
doCheck = false;
|
||||
nativeCheckInputs = [
|
||||
aioresponses
|
||||
pytest-asyncio
|
||||
pytest-cov-stub
|
||||
pytest-freezer
|
||||
pytestCheckHook
|
||||
syrupy
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "switchbot_api" ];
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
addBinToPathHook,
|
||||
blessed,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
hatchling,
|
||||
lib,
|
||||
pexpect,
|
||||
prettytable,
|
||||
pytest-asyncio,
|
||||
pytest-cov-stub,
|
||||
pytest-timeout,
|
||||
pytest-xdist,
|
||||
pytestCheckHook,
|
||||
trustme,
|
||||
wcwidth,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "telnetlib3";
|
||||
version = "4.0.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jquast";
|
||||
repo = "telnetlib3";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-dKvdg+1l7qRyc7COR0U6SKbrp5uJRtc4wsDPQEAkXZ8=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"wcwidth"
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
blessed
|
||||
wcwidth
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
extras = [
|
||||
prettytable
|
||||
# FIXME package ucs-detect
|
||||
];
|
||||
};
|
||||
|
||||
pythonImportsCheck = [ "telnetlib3" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
addBinToPathHook
|
||||
pexpect
|
||||
pytest-asyncio
|
||||
pytest-cov-stub
|
||||
pytest-timeout
|
||||
pytest-xdist
|
||||
pytestCheckHook
|
||||
trustme
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/jquast/telnetlib3/blob/${finalAttrs.src.tag}/docs/history.rst";
|
||||
description = "Feature-rich Telnet Server, Client, and Protocol library for Python";
|
||||
homepage = "https://github.com/jquast/telnetlib3";
|
||||
license = lib.licenses.isc;
|
||||
maintainers = [ lib.maintainers.dotlambda ];
|
||||
};
|
||||
})
|
||||
@@ -14,26 +14,26 @@
|
||||
crc,
|
||||
gpiod,
|
||||
pyserial-asyncio-fast,
|
||||
tqdm,
|
||||
typing-extensions,
|
||||
zigpy,
|
||||
|
||||
# tests
|
||||
aioresponses,
|
||||
pytestCheckHook,
|
||||
pytest-asyncio,
|
||||
pytest-mock,
|
||||
pytest-timeout,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "universal-silabs-flasher";
|
||||
version = "0.1.3";
|
||||
version = "1.0.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NabuCasa";
|
||||
repo = "universal-silabs-flasher";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-VBMxm953xp0qt4MIfOSjFNQu2jOh52uQ9Zz94NWy3dY=";
|
||||
hash = "sha256-6rdWi+un85YWSann2zHFFnWvAZF6V8wXBP1VunaiZMo=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -50,16 +50,16 @@ buildPythonPackage rec {
|
||||
coloredlogs
|
||||
crc
|
||||
pyserial-asyncio-fast
|
||||
tqdm
|
||||
typing-extensions
|
||||
zigpy
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform.isLinux) [ gpiod ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
aioresponses
|
||||
pytestCheckHook
|
||||
pytest-asyncio
|
||||
pytest-mock
|
||||
pytest-timeout
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "victron-ble-ha-parser";
|
||||
version = "0.4.10";
|
||||
version = "0.6.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rajlaud";
|
||||
repo = "victron-ble-ha-parser";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-mvQrY1f3Da621yMgTzxduZQ0pxCJN6j7+6pgFwgl4Rs=";
|
||||
hash = "sha256-wSkTIX1TTP2geU7bgsdJj6Nv5SIGgd6k84G7tRCo3O0=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "yalexs-ble";
|
||||
version = "3.2.8";
|
||||
version = "3.3.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Yale-Libs";
|
||||
repo = "yalexs-ble";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Aq0tZp5h3vDxxoPYefSCoTqJV8dZYvMbITd3icdIMf8=";
|
||||
hash = "sha256-K6DZ1fjXDp6IjTfW2BTc83HR6xi5i0hFn4NOteJaGMU=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "yoto-api";
|
||||
version = "2.1.2";
|
||||
version = "2.2.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cdnninja";
|
||||
repo = "yoto_api";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-bRJjDgmMLJcmWyyxTg0BLjBukGi8JX9WWz9IoUl9Fcw=";
|
||||
hash = "sha256-+xe/ghVmWs39MfR+v76M1AhTMB5LHAA8ChSHzVY8S3w=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zha-quirks";
|
||||
version = "1.0.1";
|
||||
version = "1.1.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
@@ -22,7 +22,7 @@ buildPythonPackage rec {
|
||||
owner = "zigpy";
|
||||
repo = "zha-device-handlers";
|
||||
tag = version;
|
||||
hash = "sha256-u57Bv3oK0yAQLijlEG18brCfJXZghaA9OhbcGJ+GtCk=";
|
||||
hash = "sha256-GxNxc+cu3wBjz/1VF2+0DJ/PBTLlJKm0ncgzeaw5Fxw=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -59,7 +59,7 @@ buildPythonPackage rec {
|
||||
|
||||
meta = {
|
||||
description = "ZHA Device Handlers are custom quirks implementations for Zigpy";
|
||||
homepage = "https://github.com/dmulcahey/zha-device-handlers";
|
||||
homepage = "https://github.com/zigpy/zha-device-handlers";
|
||||
changelog = "https://github.com/zigpy/zha-device-handlers/releases/tag/${src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zha";
|
||||
version = "1.0.2";
|
||||
version = "1.1.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
@@ -32,7 +32,7 @@ buildPythonPackage rec {
|
||||
owner = "zigpy";
|
||||
repo = "zha";
|
||||
tag = version;
|
||||
hash = "sha256-ps3Qq1iGB9uPXe8CWDGLbST90EIAmszT0nuh0AvUjKg=";
|
||||
hash = "sha256-hr+FeBVQ1yqQGOhhTBd4c1g6OEntGaPPuHt1/nD+HKE=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zigpy";
|
||||
version = "1.1.1";
|
||||
version = "1.2.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zigpy";
|
||||
repo = "zigpy";
|
||||
tag = version;
|
||||
hash = "sha256-/KbWpXo+IsK2AdPN18aNorVtvcFHFx/Igg/0Mn8NsRM=";
|
||||
hash = "sha256-xCgQJYZJTjt81RC6rLb5hEyauJD3qxMK5TXTxTgXwT4=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Do not edit!
|
||||
|
||||
{
|
||||
version = "2026.3.4";
|
||||
version = "2026.4.0";
|
||||
components = {
|
||||
"3_day_blinds" =
|
||||
ps: with ps; [
|
||||
@@ -504,6 +504,9 @@
|
||||
"automation" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"autoskope" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: autoskope_client
|
||||
"avea" =
|
||||
ps: with ps; [
|
||||
avea
|
||||
@@ -587,6 +590,9 @@
|
||||
ps: with ps; [
|
||||
mozart-api
|
||||
];
|
||||
"battery" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"bauknecht" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -742,12 +748,8 @@
|
||||
zeroconf
|
||||
];
|
||||
"bmw_connected_drive" =
|
||||
ps:
|
||||
with ps;
|
||||
[
|
||||
bimmer-connected
|
||||
]
|
||||
++ bimmer-connected.optional-dependencies.china;
|
||||
ps: with ps; [
|
||||
];
|
||||
"bond" =
|
||||
ps: with ps; [
|
||||
bond-async
|
||||
@@ -883,6 +885,32 @@
|
||||
ha-ffmpeg
|
||||
py-canary
|
||||
];
|
||||
"casper_glow" =
|
||||
ps: with ps; [
|
||||
aioesphomeapi
|
||||
aiohasupervisor
|
||||
aioruuvigateway
|
||||
aioshelly
|
||||
aiousbwatcher
|
||||
bleak
|
||||
bleak-esphome
|
||||
bleak-retry-connector
|
||||
bluetooth-adapters
|
||||
bluetooth-auto-recovery
|
||||
bluetooth-data-tools
|
||||
dbus-fast
|
||||
esphome-dashboard-api
|
||||
ha-ffmpeg
|
||||
habluetooth
|
||||
hassil
|
||||
home-assistant-intents
|
||||
ifaddr
|
||||
mutagen
|
||||
pymicro-vad
|
||||
pyserial
|
||||
pyspeex-noise
|
||||
zeroconf
|
||||
]; # missing inputs: pycasperglow
|
||||
"cast" =
|
||||
ps: with ps; [
|
||||
aiohasupervisor
|
||||
@@ -920,6 +948,9 @@
|
||||
ps: with ps; [
|
||||
pychannels
|
||||
];
|
||||
"chess_com" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: chess-com-api
|
||||
"cisco_ios" =
|
||||
ps: with ps; [
|
||||
pexpect
|
||||
@@ -1299,6 +1330,9 @@
|
||||
pillow
|
||||
pydoods
|
||||
];
|
||||
"door" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"doorbird" =
|
||||
ps: with ps; [
|
||||
doorbirdpy
|
||||
@@ -1365,13 +1399,6 @@
|
||||
"duckdns" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"duke_energy" =
|
||||
ps: with ps; [
|
||||
aiodukeenergy
|
||||
fnv-hash-fast
|
||||
psutil-home-assistant
|
||||
sqlalchemy
|
||||
];
|
||||
"dunehd" =
|
||||
ps: with ps; [
|
||||
pdunehd
|
||||
@@ -1566,7 +1593,7 @@
|
||||
"enocean" =
|
||||
ps: with ps; [
|
||||
aiousbwatcher
|
||||
enocean
|
||||
enocean-async
|
||||
pyserial
|
||||
];
|
||||
"enphase_envoy" =
|
||||
@@ -1946,6 +1973,9 @@
|
||||
ps: with ps; [
|
||||
pyfreedompro
|
||||
];
|
||||
"freshr" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: pyfreshr
|
||||
"fressnapf_tracker" =
|
||||
ps: with ps; [
|
||||
fressnapftracker
|
||||
@@ -2009,6 +2039,9 @@
|
||||
"garadget" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"garage_door" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"garages_amsterdam" =
|
||||
ps: with ps; [
|
||||
odp-amsterdam
|
||||
@@ -2040,6 +2073,9 @@
|
||||
pyspeex-noise
|
||||
zeroconf
|
||||
];
|
||||
"gate" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"gaviota" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -2495,7 +2531,7 @@
|
||||
pyqrcode
|
||||
pyturbojpeg
|
||||
zeroconf
|
||||
];
|
||||
]; # missing inputs: homekit-audio-proxy
|
||||
"homekit_controller" =
|
||||
ps: with ps; [
|
||||
aioesphomeapi
|
||||
@@ -2557,6 +2593,9 @@
|
||||
ps: with ps; [
|
||||
python-hpilo
|
||||
];
|
||||
"hr_energy_qube" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: python-qube-heatpump
|
||||
"html5" =
|
||||
ps: with ps; [
|
||||
py-vapid
|
||||
@@ -2608,6 +2647,9 @@
|
||||
"humidifier" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"humidity" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"hunterdouglas_powerview" =
|
||||
ps: with ps; [
|
||||
aiopvapi
|
||||
@@ -2768,6 +2810,9 @@
|
||||
defusedxml
|
||||
ihcsdk
|
||||
];
|
||||
"illuminance" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"image" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -2844,6 +2889,10 @@
|
||||
influxdb
|
||||
influxdb-client
|
||||
];
|
||||
"infrared" =
|
||||
ps: with ps; [
|
||||
infrared-protocols
|
||||
];
|
||||
"inkbird" =
|
||||
ps: with ps; [
|
||||
aioesphomeapi
|
||||
@@ -3404,6 +3453,10 @@
|
||||
"levoit" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"lg_infrared" =
|
||||
ps: with ps; [
|
||||
infrared-protocols
|
||||
];
|
||||
"lg_netcast" =
|
||||
ps: with ps; [
|
||||
ifaddr
|
||||
@@ -3421,6 +3474,9 @@
|
||||
ps: with ps; [
|
||||
librehardwaremonitor-api
|
||||
];
|
||||
"lichess" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: aiolichess
|
||||
"lidarr" =
|
||||
ps: with ps; [
|
||||
aiopyarr
|
||||
@@ -3526,6 +3582,9 @@
|
||||
"logger" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"lojack" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: lojack-api
|
||||
"london_air" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -3830,9 +3889,6 @@
|
||||
ps: with ps; [
|
||||
mcstatus
|
||||
];
|
||||
"mini_connected" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"minio" =
|
||||
ps: with ps; [
|
||||
minio
|
||||
@@ -3907,6 +3963,9 @@
|
||||
ps: with ps; [
|
||||
moehlenhoff-alpha2
|
||||
];
|
||||
"moisture" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"mold_indicator" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -3955,6 +4014,9 @@
|
||||
pyspeex-noise
|
||||
zeroconf
|
||||
];
|
||||
"motion" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"motion_blinds" =
|
||||
ps: with ps; [
|
||||
ifaddr
|
||||
@@ -4325,6 +4387,9 @@
|
||||
ps: with ps; [
|
||||
pyobihai
|
||||
];
|
||||
"occupancy" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"octoprint" =
|
||||
ps: with ps; [
|
||||
pyoctoprintapi
|
||||
@@ -4420,7 +4485,7 @@
|
||||
ha-ffmpeg
|
||||
onvif-zeep-async
|
||||
wsdiscovery
|
||||
];
|
||||
]; # missing inputs: onvif_parsers
|
||||
"open_meteo" =
|
||||
ps: with ps; [
|
||||
open-meteo
|
||||
@@ -4449,6 +4514,32 @@
|
||||
"openalpr_cloud" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"opendisplay" =
|
||||
ps: with ps; [
|
||||
aioesphomeapi
|
||||
aiohasupervisor
|
||||
aioruuvigateway
|
||||
aioshelly
|
||||
aiousbwatcher
|
||||
bleak
|
||||
bleak-esphome
|
||||
bleak-retry-connector
|
||||
bluetooth-adapters
|
||||
bluetooth-auto-recovery
|
||||
bluetooth-data-tools
|
||||
dbus-fast
|
||||
esphome-dashboard-api
|
||||
ha-ffmpeg
|
||||
habluetooth
|
||||
hassil
|
||||
home-assistant-intents
|
||||
ifaddr
|
||||
mutagen
|
||||
pymicro-vad
|
||||
pyserial
|
||||
pyspeex-noise
|
||||
zeroconf
|
||||
]; # missing inputs: py-opendisplay
|
||||
"openerz" =
|
||||
ps: with ps; [
|
||||
openerz-api
|
||||
@@ -4797,6 +4888,9 @@
|
||||
"portlandgeneral" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"power" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"powerfox" =
|
||||
ps: with ps; [
|
||||
powerfox
|
||||
@@ -5828,6 +5922,9 @@
|
||||
ps: with ps; [
|
||||
solarlog-cli
|
||||
];
|
||||
"solarman" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: solarman-opendata
|
||||
"solax" =
|
||||
ps: with ps; [
|
||||
solax
|
||||
@@ -6203,6 +6300,9 @@
|
||||
ps: with ps; [
|
||||
temperusb
|
||||
];
|
||||
"temperature" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"template" =
|
||||
ps: with ps; [
|
||||
];
|
||||
@@ -6451,7 +6551,7 @@
|
||||
++ python-kasa.optional-dependencies.speedups;
|
||||
"tplink_lte" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: tp-connected
|
||||
];
|
||||
"tplink_omada" =
|
||||
ps: with ps; [
|
||||
tplink-omada-client
|
||||
@@ -6521,6 +6621,9 @@
|
||||
ps: with ps; [
|
||||
triggercmd
|
||||
];
|
||||
"trmnl" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: trmnl
|
||||
"tts" =
|
||||
ps: with ps; [
|
||||
ha-ffmpeg
|
||||
@@ -6588,6 +6691,9 @@
|
||||
ps: with ps; [
|
||||
aiounifi
|
||||
];
|
||||
"unifi_access" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: py-unifi-access
|
||||
"unifi_direct" =
|
||||
ps: with ps; [
|
||||
unifi-ap
|
||||
@@ -6930,10 +7036,16 @@
|
||||
ps: with ps; [
|
||||
wiffi
|
||||
];
|
||||
"wiim" =
|
||||
ps: with ps; [
|
||||
]; # missing inputs: wiim
|
||||
"wilight" =
|
||||
ps: with ps; [
|
||||
pywilight
|
||||
];
|
||||
"window" =
|
||||
ps: with ps; [
|
||||
];
|
||||
"wirelesstag" =
|
||||
ps: with ps; [
|
||||
wirelesstagpy
|
||||
@@ -7338,6 +7450,7 @@
|
||||
"baf"
|
||||
"balboa"
|
||||
"bang_olufsen"
|
||||
"battery"
|
||||
"bayesian"
|
||||
"binary_sensor"
|
||||
"blackbird"
|
||||
@@ -7407,6 +7520,7 @@
|
||||
"deako"
|
||||
"debugpy"
|
||||
"deconz"
|
||||
"decora_wifi"
|
||||
"default_config"
|
||||
"deluge"
|
||||
"demo"
|
||||
@@ -7429,6 +7543,7 @@
|
||||
"dlna_dmr"
|
||||
"dlna_dms"
|
||||
"dnsip"
|
||||
"door"
|
||||
"doorbird"
|
||||
"dormakaba_dkey"
|
||||
"downloader"
|
||||
@@ -7438,7 +7553,6 @@
|
||||
"dsmr"
|
||||
"dsmr_reader"
|
||||
"duckdns"
|
||||
"duke_energy"
|
||||
"dunehd"
|
||||
"duotecno"
|
||||
"dwd_weather_warnings"
|
||||
@@ -7539,8 +7653,10 @@
|
||||
"fujitsu_fglair"
|
||||
"fully_kiosk"
|
||||
"fyta"
|
||||
"garage_door"
|
||||
"garages_amsterdam"
|
||||
"gardena_bluetooth"
|
||||
"gate"
|
||||
"gdacs"
|
||||
"generic"
|
||||
"generic_hygrostat"
|
||||
@@ -7617,7 +7733,6 @@
|
||||
"homeassistant_sky_connect"
|
||||
"homeassistant_yellow"
|
||||
"homee"
|
||||
"homekit"
|
||||
"homekit_controller"
|
||||
"homematic"
|
||||
"homematicip_cloud"
|
||||
@@ -7632,6 +7747,7 @@
|
||||
"hue_ble"
|
||||
"huisbaasje"
|
||||
"humidifier"
|
||||
"humidity"
|
||||
"hunterdouglas_powerview"
|
||||
"husqvarna_automower"
|
||||
"husqvarna_automower_ble"
|
||||
@@ -7649,6 +7765,7 @@
|
||||
"ifttt"
|
||||
"igloohome"
|
||||
"ign_sismologia"
|
||||
"illuminance"
|
||||
"image"
|
||||
"image_processing"
|
||||
"image_upload"
|
||||
@@ -7661,6 +7778,7 @@
|
||||
"indevolt"
|
||||
"inels"
|
||||
"influxdb"
|
||||
"infrared"
|
||||
"inkbird"
|
||||
"input_boolean"
|
||||
"input_button"
|
||||
@@ -7726,6 +7844,7 @@
|
||||
"led_ble"
|
||||
"lektrico"
|
||||
"letpot"
|
||||
"lg_infrared"
|
||||
"lg_netcast"
|
||||
"lg_soundbar"
|
||||
"lg_thinq"
|
||||
@@ -7807,12 +7926,14 @@
|
||||
"modem_callerid"
|
||||
"modern_forms"
|
||||
"moehlenhoff_alpha2"
|
||||
"moisture"
|
||||
"mold_indicator"
|
||||
"monarch_money"
|
||||
"monoprice"
|
||||
"monzo"
|
||||
"moon"
|
||||
"mopeka"
|
||||
"motion"
|
||||
"motion_blinds"
|
||||
"motionblinds_ble"
|
||||
"motioneye"
|
||||
@@ -7879,6 +8000,7 @@
|
||||
"nyt_games"
|
||||
"nzbget"
|
||||
"obihai"
|
||||
"occupancy"
|
||||
"octoprint"
|
||||
"ohme"
|
||||
"ollama"
|
||||
@@ -7890,7 +8012,6 @@
|
||||
"onedrive_for_business"
|
||||
"onewire"
|
||||
"onkyo"
|
||||
"onvif"
|
||||
"open_meteo"
|
||||
"open_router"
|
||||
"openai_conversation"
|
||||
@@ -7909,6 +8030,7 @@
|
||||
"opnsense"
|
||||
"opower"
|
||||
"oralb"
|
||||
"orvibo"
|
||||
"osoenergy"
|
||||
"otbr"
|
||||
"otp"
|
||||
@@ -7945,6 +8067,7 @@
|
||||
"pooldose"
|
||||
"poolsense"
|
||||
"portainer"
|
||||
"power"
|
||||
"powerfox"
|
||||
"powerfox_local"
|
||||
"powerwall"
|
||||
@@ -8156,6 +8279,7 @@
|
||||
"tellduslive"
|
||||
"teltonika"
|
||||
"temper"
|
||||
"temperature"
|
||||
"template"
|
||||
"tesla_fleet"
|
||||
"tesla_wall_connector"
|
||||
@@ -8183,8 +8307,10 @@
|
||||
"tomorrowio"
|
||||
"toon"
|
||||
"totalconnect"
|
||||
"touchline"
|
||||
"touchline_sl"
|
||||
"tplink"
|
||||
"tplink_lte"
|
||||
"tplink_omada"
|
||||
"traccar"
|
||||
"traccar_server"
|
||||
@@ -8275,6 +8401,7 @@
|
||||
"whois"
|
||||
"wiffi"
|
||||
"wilight"
|
||||
"window"
|
||||
"withings"
|
||||
"wiz"
|
||||
"wled"
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "thomasloven";
|
||||
domain = "browser_mod";
|
||||
version = "2.10.0";
|
||||
version = "2.10.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "hass-browser_mod";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-83cwjgS4JsqZrf8sNXz6wjJOF5pGrmOZko+UfMgn70Q=";
|
||||
hash = "sha256-GUYQlydFxifMR/ASJCTIfMBKh3lrB8lNDqJvHa/eVHs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -27,7 +27,7 @@ buildHomeAssistantComponent rec {
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit src;
|
||||
hash = "sha256-JFfoqhFt1JEM4SsRkJg13QRPsjukUPs5iKpSx6Nvgzs=";
|
||||
hash = "sha256-ZLWBi1EmqC1MD0O4ZQpie6IRHl6S+qGHhwonvjKGCqo=";
|
||||
};
|
||||
|
||||
npmBuildScript = "build";
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "NewsGuyTor";
|
||||
domain = "fellow";
|
||||
version = "1.3.2";
|
||||
version = "1.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NewsGuyTor";
|
||||
repo = "FellowAiden-HomeAssistant";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-qJizRqHcYQxcONke/++Hjh6yzHNCxfytvAJYXJWoHu8=";
|
||||
hash = "sha256-n1D/kP1vxc+/kgZGwl+5nLD6IzERmMXeiQjSKZGiqvc=";
|
||||
};
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "homeassistant-ai";
|
||||
domain = "ha_mcp_tools";
|
||||
version = "6.7.1";
|
||||
version = "7.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "homeassistant-ai";
|
||||
repo = "ha-mcp";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-CQbjPEtCos0Fi6aAaIWSRMCUQKmjYviYkvJZzbCZg6Y=";
|
||||
hash = "sha256-1SiWrrUSMU/Pe3vXZIPdUwpVhZM41avmjhO+PFLWmUE=";
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "ekutner";
|
||||
domain = "home_connect_alt";
|
||||
version = "1.3.4";
|
||||
version = "1.3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ekutner";
|
||||
repo = "home-connect-hass";
|
||||
tag = version;
|
||||
hash = "sha256-X6yRoEJAmBDQzEo8WeEOMFZHJ6OOpw+XUKi+iHHOgOw=";
|
||||
hash = "sha256-Zi3l4bRS8O+jyrxaY8BB1XCbU9FEQSDMNE9b5DH8oCs=";
|
||||
};
|
||||
|
||||
dependencies = [ home-connect-async ];
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "SukramJ";
|
||||
domain = "homematicip_local";
|
||||
version = "2.4.1";
|
||||
version = "2.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SukramJ";
|
||||
repo = "custom_homematic";
|
||||
tag = version;
|
||||
hash = "sha256-Hl3nvTEf70SNS0qPatddCO5MEhZfAnMONoT7ghH2U00=";
|
||||
hash = "sha256-ncD72aL5+SI2CDnAHvHqbJffnEApomjC2k88VIQH9O8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "amitfin";
|
||||
domain = "oref_alert";
|
||||
version = "6.14.0";
|
||||
version = "6.15.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "amitfin";
|
||||
repo = "oref_alert";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-g3Ae2AwdhcBv9v3aFjFAqxCPYVBFtQxsbtVAEOL2A60=";
|
||||
hash = "sha256-2JWvTbnG8PNLLzTGAyz/u7oVCC3reHWYn9utawxIp1s=";
|
||||
};
|
||||
|
||||
# Do not publish cards, currently broken, attempting to write to nix store.
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "kongo09";
|
||||
domain = "philips_airpurifier_coap";
|
||||
version = "0.35.0";
|
||||
version = "0.36.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "philips-airpurifier-coap";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-PE2FmeqxX0xFlkHC8oZ09md5lBXgpkdlwIRhCVHm4+k=";
|
||||
hash = "sha256-aVCfUuwPW+0L+OuOoLV0cPezZVKHtO39p/TK/gy2jdg=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "marq24";
|
||||
domain = "tibber_local";
|
||||
version = "2026.3.4";
|
||||
version = "2026.3.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "ha-tibber-pulse-local";
|
||||
tag = version;
|
||||
sha256 = "sha256-XYcTQESAV50GX99QRWrmb57fEHOnpQuMlE/VpGlTPrQ=";
|
||||
hash = "sha256-vQT0Ul4/QLQhuROENWXjSLVcml5BRWvqNIWdOLXN9dk=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "make-all";
|
||||
domain = "tuya_local";
|
||||
version = "2026.3.2";
|
||||
version = "2026.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "tuya-local";
|
||||
tag = version;
|
||||
hash = "sha256-UBVbPaRra8NDG/YotZfBg31ZNKO16XogrW1ECDo0DdA=";
|
||||
hash = "sha256-cQA2lv8O/17GHLKjJktC4ox1ZEtW7ngS1X+zeJgUeHc=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "jmcollin78";
|
||||
domain = "versatile_thermostat";
|
||||
version = "9.3.1";
|
||||
version = "9.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = domain;
|
||||
tag = version;
|
||||
hash = "sha256-BdGMF4f6OfG+y6RrN7r7/GjY8OD+4eQM9syuxGI0IiI=";
|
||||
hash = "sha256-fHmCakDFD6na3IQcQCX2g9XYIIJp0DTaZ9qEcSgw+78=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "mampfes";
|
||||
domain = "waste_collection_schedule";
|
||||
version = "2.11.0";
|
||||
version = "2.12.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "hacs_waste_collection_schedule";
|
||||
tag = version;
|
||||
hash = "sha256-+yt6kjUV+fqbOa7jj603XdGX7XtI8mXnCnmUjYFNA7c=";
|
||||
hash = "sha256-mR8UCDQDQBMYCxIA8DKLhD+u9utfMx+woS5L2E7mxXM=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "cdnninja";
|
||||
domain = "yoto";
|
||||
version = "3.0.4";
|
||||
version = "3.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cdnninja";
|
||||
repo = "yoto_ha";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-lVd5Yko9oPCcsSORYe3d8UbOOYEcqvxU37gm/NthptI=";
|
||||
hash = "sha256-b2V2nHH3E0z1AE9C3m5/fXITmWusoyx0rcTIF1nD57U=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -253,13 +253,13 @@ let
|
||||
extraBuildInputs = extraPackages python.pkgs;
|
||||
|
||||
# Don't forget to run update-component-packages.py after updating
|
||||
hassVersion = "2026.3.4";
|
||||
hassVersion = "2026.4.0";
|
||||
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "homeassistant";
|
||||
version =
|
||||
assert (componentPackages.version == hassVersion);
|
||||
#assert (componentPackages.version == hassVersion);
|
||||
hassVersion;
|
||||
pyproject = true;
|
||||
|
||||
@@ -274,13 +274,13 @@ python.pkgs.buildPythonApplication rec {
|
||||
owner = "home-assistant";
|
||||
repo = "core";
|
||||
tag = version;
|
||||
hash = "sha256-FONng6GaitzvGyXthBSPK8MioQeoDu8IRoAbXXOaS4Q=";
|
||||
hash = "sha256-K/PK2i8yOqLm/GJNz5LZG8DZRKXziPzDPaguIMcKMpY=";
|
||||
};
|
||||
|
||||
# Secondary source is pypi sdist for translations
|
||||
sdist = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-aK0RMnL54uwak9JCNB79iU6D+HUPRSW4a/BqKqpe8cg=";
|
||||
hash = "sha256-rSckOYhEYZnmZNCfajGW3b52SMMnXvvSP+O/3jw/GuU=";
|
||||
};
|
||||
|
||||
build-system = with python.pkgs; [
|
||||
@@ -416,6 +416,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
"assist_pipeline"
|
||||
"frontend"
|
||||
"hue"
|
||||
"infrared"
|
||||
"mobile_app"
|
||||
];
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ buildPythonPackage rec {
|
||||
# the frontend version corresponding to a specific home-assistant version can be found here
|
||||
# https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
|
||||
pname = "home-assistant-frontend";
|
||||
version = "20260312.1";
|
||||
version = "20260325.5";
|
||||
format = "wheel";
|
||||
|
||||
src = fetchPypi {
|
||||
@@ -17,7 +17,7 @@ buildPythonPackage rec {
|
||||
pname = "home_assistant_frontend";
|
||||
dist = "py3";
|
||||
python = "py3";
|
||||
hash = "sha256-WYQ0tXOFWL4D4HS1/LAx+xHCNp0oyRIIfbALe1xQMLI=";
|
||||
hash = "sha256-JRQrocKeC2vYsYBYk6KLbuAZADL/57T7egLHZF/v8UI=";
|
||||
};
|
||||
|
||||
# there is nothing to strip in this package
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "home-assistant-intents";
|
||||
version = "2026.3.3";
|
||||
version = "2026.3.24";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@@ -29,7 +29,7 @@ buildPythonPackage rec {
|
||||
repo = "intents-package";
|
||||
tag = version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-jueZ+GmoVcQcvCYsKQVqKdPVl4U32stcwv0N4QTspoE=";
|
||||
hash = "sha256-nwKMg5O/QnYFFviwg1vC++NoQfMpHHK0WoJaxa1xDwE=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pytest-homeassistant-custom-component";
|
||||
version = "0.13.320";
|
||||
version = "0.13.321";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.13";
|
||||
@@ -27,7 +27,7 @@ buildPythonPackage rec {
|
||||
owner = "MatthewFlamm";
|
||||
repo = "pytest-homeassistant-custom-component";
|
||||
tag = version;
|
||||
hash = "sha256-VweH6SWDYO9m0g2MS8awK00DwiflfPpyLep79U60uWw=";
|
||||
hash = "sha256-slmIxLRbicyzYhnYmefLnPcqq//wRjmJ5xGeJBYxacQ=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "homeassistant-stubs";
|
||||
version = "2026.3.4";
|
||||
version = "2026.4.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python.version != home-assistant.python.version;
|
||||
@@ -19,7 +19,7 @@ buildPythonPackage rec {
|
||||
owner = "KapJI";
|
||||
repo = "homeassistant-stubs";
|
||||
tag = version;
|
||||
hash = "sha256-yqp/KNhMIfFTlXYWv8lgALNB6soaHOyZvA1gFExYowo=";
|
||||
hash = "sha256-uD9+WkhRwwr5l4pKpg7GosTsLqgGCTQA6u3mN+XBhio=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -39,7 +39,7 @@ let
|
||||
];
|
||||
emulated_kasa = getComponentDeps "camera" ++ getComponentDeps "conversation";
|
||||
environment_canada = getComponentDeps "camera";
|
||||
esphome = getComponentDeps "camera";
|
||||
esphome = getComponentDeps "camera" ++ getComponentDeps "infrared";
|
||||
fan = getComponentDeps "conversation";
|
||||
fish_audio = getComponentDeps "tts";
|
||||
foscam = getComponentDeps "camera";
|
||||
@@ -60,7 +60,7 @@ let
|
||||
ibeacon-ble
|
||||
];
|
||||
gpslogger = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
|
||||
group = getComponentDeps "camera" ++ getComponentDeps "conversation";
|
||||
group = getComponentDeps "camera" ++ getComponentDeps "conversation" ++ getComponentDeps "infrared";
|
||||
hassio = getComponentDeps "frontend" ++ getComponentDeps "homeassistant_yellow";
|
||||
hikvision = getComponentDeps "camera";
|
||||
homeassistant = getComponentDeps "camera" ++ getComponentDeps "conversation";
|
||||
@@ -77,6 +77,7 @@ let
|
||||
image_processing = getComponentDeps "conversation";
|
||||
intelliclima = getComponentDeps "intellifire";
|
||||
intent = getComponentDeps "conversation";
|
||||
kitchen_sink = getComponentDeps "infrared";
|
||||
light = getComponentDeps "conversation";
|
||||
local_file = getComponentDeps "camera";
|
||||
locative = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
|
||||
@@ -204,19 +205,6 @@ let
|
||||
# sandbox doesn't grant access to /sys/class/power_supply
|
||||
"tests/components/systemmonitor/test_config_flow.py::test_add_and_remove_processes"
|
||||
];
|
||||
trane = [
|
||||
# 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"
|
||||
];
|
||||
};
|
||||
|
||||
extraDisabledTests = {
|
||||
@@ -224,12 +212,14 @@ let
|
||||
# intent fixture mismatch
|
||||
"test_error_no_device_on_floor"
|
||||
];
|
||||
homewizard = [
|
||||
# Messages don't match expected due to a change in Homewizard's outputs
|
||||
"test_identify_button"
|
||||
"test_number_entities"
|
||||
"test_select_request_error"
|
||||
"test_switch_entities"
|
||||
ecovacs = [
|
||||
# Translation not found for vacuum
|
||||
"test_raise_segment_changed_issue"
|
||||
];
|
||||
roborock = [
|
||||
# Translation not found for vacuum
|
||||
"test_clean_segments_mixed_maps"
|
||||
"test_segments_changed_issue"
|
||||
];
|
||||
sensor = [
|
||||
# Failed: Translation not found for sensor
|
||||
@@ -246,11 +236,9 @@ 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"
|
||||
vacuum = [
|
||||
# Translation not found for vacuum
|
||||
"test_segments_changed_issue"
|
||||
];
|
||||
zeroconf = [
|
||||
# multicast socket bind, not possible in the sandbox
|
||||
|
||||
@@ -106,6 +106,7 @@ mapAliases {
|
||||
beancount_docverif = throw "'beancount_docverif' has been renamed to/replaced by 'beancount-docverif'"; # Converted to throw 2025-10-29
|
||||
beets-stable = lib.warn "beets-stable was aliased to beets, since upstream releases are frequent nowadays" self.beets; # added 2025-10-16
|
||||
beets-unstable = lib.warn "beets-unstable was aliased to beets, since upstream releases are frequent nowadays" self.beets; # added 2025-10-16
|
||||
bimmer-connected = throw "'bimmer-connected' was removed because BMW started blocking third parties"; # added 2026-03-30
|
||||
bip_utils = throw "'bip_utils' has been renamed to/replaced by 'bip-utils'"; # Converted to throw 2025-10-29
|
||||
bjoern = throw "'bjoern' has been removed, as the upstream repository was unmaintained and it was using libraries with severe security issues."; # Added 2025-09-01
|
||||
bkcharts = throw "'bkcharts' has been removed as the upstream repository was archived in 2018"; # added 2025-08-26
|
||||
@@ -188,6 +189,7 @@ mapAliases {
|
||||
elegy = throw "elegy has been removed because it has transitively been marked as broken since 2023."; # Added 2025-10-11
|
||||
email_validator = throw "'email_validator' has been renamed to/replaced by 'email-validator'"; # Converted to throw 2025-10-29
|
||||
embreex = throw "embreex has been removed, as it required embree2"; # added 2025-09-14
|
||||
enocean = throw "'enocean' was removed because Home Assistant switched to 'enocean-async'"; # added 2026-03-31
|
||||
eris = throw "eris has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01
|
||||
et_xmlfile = throw "'et_xmlfile' has been renamed to/replaced by 'et-xmlfile'"; # Converted to throw 2025-10-29
|
||||
ev3dev2 = throw "'ev3dev2' has been renamed to/replaced by 'python-ev3dev2'"; # Converted to throw 2025-10-29
|
||||
|
||||
@@ -2034,8 +2034,6 @@ self: super: with self; {
|
||||
|
||||
billiard = callPackage ../development/python-modules/billiard { };
|
||||
|
||||
bimmer-connected = callPackage ../development/python-modules/bimmer-connected { };
|
||||
|
||||
binance-connector = callPackage ../development/python-modules/binance-connector { };
|
||||
|
||||
binary = callPackage ../development/python-modules/binary { };
|
||||
@@ -5014,7 +5012,7 @@ self: super: with self; {
|
||||
|
||||
enlighten = callPackage ../development/python-modules/enlighten { };
|
||||
|
||||
enocean = callPackage ../development/python-modules/enocean { };
|
||||
enocean-async = callPackage ../development/python-modules/enocean-async { };
|
||||
|
||||
enochecker-core = callPackage ../development/python-modules/enochecker-core { };
|
||||
|
||||
@@ -7529,6 +7527,8 @@ self: super: with self; {
|
||||
|
||||
inform = callPackage ../development/python-modules/inform { };
|
||||
|
||||
infrared-protocols = callPackage ../development/python-modules/infrared-protocols { };
|
||||
|
||||
ingredient-parser-nlp = callPackage ../development/python-modules/ingredient-parser-nlp { };
|
||||
|
||||
iniconfig = callPackage ../development/python-modules/iniconfig { };
|
||||
@@ -18996,6 +18996,8 @@ self: super: with self; {
|
||||
|
||||
tellduslive = callPackage ../development/python-modules/tellduslive { };
|
||||
|
||||
telnetlib3 = callPackage ../development/python-modules/telnetlib3 { };
|
||||
|
||||
teltasync = callPackage ../development/python-modules/teltasync { };
|
||||
|
||||
temescal = callPackage ../development/python-modules/temescal { };
|
||||
|
||||
Reference in New Issue
Block a user