git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #167560 from mweinelt/home-assistant
commita0c500cc1fac37299bb16d6b8ef1217b06fab899 authorMartin Weinelt <mweinelt@users.noreply.github.com> dateThu 7 Apr 2022, 03:36 (5 years ago) parentdeee0958174463
25 files changed+387−181
pkgs/development/python-modules/amberelectric/default.nix+2−2 pkgs/development/python-modules/async-upnp-client/default.nix+2−2 pkgs/development/python-modules/av/default.nix+124−16 pkgs/development/python-modules/gattlib/default.nix+68 pkgs/development/python-modules/gattlib/setup.patch+18 pkgs/development/python-modules/ha-av/default.nix−43 pkgs/development/python-modules/hangups/default.nix+2−2 pkgs/development/python-modules/hyperion-py/default.nix+4−3 pkgs/development/python-modules/lru-dict/default.nix+34 pkgs/development/python-modules/plugwise/default.nix+2−2 pkgs/development/python-modules/pybluez/default.nix+24−11 pkgs/development/python-modules/pysma/default.nix+2−2 pkgs/development/python-modules/samsungtvws/default.nix+5−1 pkgs/development/python-modules/vehicle/default.nix+2−2 pkgs/development/python-modules/xknx/default.nix+4−4 pkgs/development/python-modules/yeelight/default.nix+2−2 pkgs/development/python-modules/zha-quirks/default.nix+2−2 pkgs/development/python-modules/zigpy-cc/default.nix+6−1 pkgs/development/python-modules/zigpy/default.nix+2−2 pkgs/servers/home-assistant/component-packages.nix+50−65 pkgs/servers/home-assistant/default.nix+12−9 pkgs/servers/home-assistant/frontend.nix+2−2 pkgs/servers/home-assistant/tests.nix+8−5 pkgs/top-level/python-aliases.nix+1 pkgs/top-level/python-packages.nix+9−3
pkgs/development/python-modules/amberelectric/default.nix+2−2
@@ -10,14 +10,14 @@
1010
1111buildPythonPackage rec {
1212 pname = "amberelectric";
13− version = "1.0.3";
13+ version = "1.0.4";
1414 format = "setuptools";
1515
1616 disabled = pythonOlder "3.6";
1717
1818 src = fetchPypi {
1919 inherit pname version;
20− sha256 = "1hsbk2v7j1nsa083j28jb7b3rv76flan0g9wav97qccp1gjds5b0";
20+ sha256 = "sha256-5SWJnTxRm6mzP0RxrgA+jnV+Gp23WjqQA57wbT2V9Dk=";
2121 };
2222
2323 propagatedBuildInputs = [
pkgs/development/python-modules/async-upnp-client/default.nix+2−2
@@ -14,7 +14,7 @@
1414
1515buildPythonPackage rec {
1616 pname = "async-upnp-client";
17− version = "0.23.5";
17+ version = "0.27.0";
1818 format = "setuptools";
1919
2020 disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
2323 owner = "StevenLooman";
2424 repo = "async_upnp_client";
2525 rev = version;
26− sha256 = "sha256-fMlP8LX+OFiw6o1rpz8J0sEsACk5x9dQko1oGEaZFuc=";
26+ sha256 = "sha256-QElc4J2BxOFI+L9D/SVMiYeRVOmwrNTW65LgdBG0TbU=";
2727 };
2828
2929 propagatedBuildInputs = [
pkgs/development/python-modules/av/default.nix+124−16
@@ -1,33 +1,141 @@
11{ lib
22, buildPythonPackage
3−, fetchPypi
4−, isPy27
5−, numpy
6−, ffmpeg
3+, fetchFromGitHub
4+, pythonOlder
5+
6+# build
7+, cython
78, pkg-config
9+
10+# runtime
11+, ffmpeg
12+
13+# tests
14+, numpy
15+, pillow
16+, pytestCheckHook
817}:
918
1019buildPythonPackage rec {
1120 pname = "av";
12− version = "8.1.0";
13− disabled = isPy27; # setup.py no longer compatible
21+ version = "9.1.1";
22+ format = "pyproject";
23+ disabled = pythonOlder "3.7";
1424
15− src = fetchPypi {
16− inherit pname version;
17− sha256 = "0402169bc27e38e0f44e0e0e1854cf488337e86206b6d25d6dae2bfd7a1a0230";
25+ src = fetchFromGitHub {
26+ owner = "mikeboers";
27+ repo = "PyAV";
28+ rev = "v${version}";
29+ hash = "sha256-/6C5GE9zANPy0xaptu/+pIupOLDra/R7TJ41YLGszUs=";
1830 };
1931
20− checkInputs = [ numpy ];
32+ nativeBuildInputs = [
33+ cython
34+ pkg-config
35+ ];
36+
37+ buildInputs = [
38+ ffmpeg
39+ ];
40+
41+ preCheck = ''
42+ # ensure we import the built version
43+ rm -r av
44+ '';
45+
46+ checkInputs = [
47+ numpy
48+ pillow
49+ pytestCheckHook
50+ ];
51+
52+ pytestFlagsArray = [
53+ # Tests that want to download FATE data
54+ # https://github.com/PyAV-Org/PyAV/issues/955
55+ "--deselect=tests/test_audiofifo.py::TestAudioFifo::test_data"
56+ "--deselect=tests/test_codec_context.py::TestCodecContext::test_codec_tag"
57+ "--deselect=tests/test_codec_context.py::TestCodecContext::test_parse"
58+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_aac"
59+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_dnxhd"
60+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_dvvideo"
61+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_h264"
62+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_mjpeg"
63+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_mp2"
64+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_mpeg1video"
65+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_mpeg4"
66+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_pcm_s24le"
67+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_png"
68+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_tiff"
69+ "--deselect=tests/test_codec_context.py::TestEncoding::test_encoding_xvid"
70+ "--deselect=tests/test_decode.py::TestDecode::test_decode_audio_sample_count"
71+ "--deselect=tests/test_decode.py::TestDecode::test_decoded_motion_vectors"
72+ "--deselect=tests/test_decode.py::TestDecode::test_decoded_motion_vectors_no_flag"
73+ "--deselect=tests/test_decode.py::TestDecode::test_decoded_time_base"
74+ "--deselect=tests/test_decode.py::TestDecode::test_decoded_video_frame_count"
75+ "--deselect=tests/test_encode.py::TestBasicAudioEncoding::test_transcode"
76+ "--deselect=tests/test_file_probing.py::TestAudioProbe::test_container_probing"
77+ "--deselect=tests/test_file_probing.py::TestAudioProbe::test_stream_probing"
78+ "--deselect=tests/test_file_probing.py::TestDataProbe::test_container_probing"
79+ "--deselect=tests/test_file_probing.py::TestDataProbe::test_stream_probing"
80+ "--deselect=tests/test_file_probing.py::TestSubtitleProbe::test_container_probing"
81+ "--deselect=tests/test_file_probing.py::TestSubtitleProbe::test_stream_probing"
82+ "--deselect=tests/test_file_probing.py::TestVideoProbe::test_container_probing"
83+ "--deselect=tests/test_file_probing.py::TestVideoProbe::test_stream_probing"
84+ "--deselect=tests/test_python_io.py::TestPythonIO::test_reading_from_buffer"
85+ "--deselect=tests/test_python_io.py::TestPythonIO::test_reading_from_buffer_no_see"
86+ "--deselect=tests/test_python_io.py::TestPythonIO::test_reading_from_file"
87+ "--deselect=tests/test_python_io.py::TestPythonIO::test_reading_from_pipe_readonly"
88+ "--deselect=tests/test_python_io.py::TestPythonIO::test_reading_from_write_readonl"
89+ "--deselect=tests/test_seek.py::TestSeek::test_decode_half"
90+ "--deselect=tests/test_seek.py::TestSeek::test_seek_end"
91+ "--deselect=tests/test_seek.py::TestSeek::test_seek_float"
92+ "--deselect=tests/test_seek.py::TestSeek::test_seek_int64"
93+ "--deselect=tests/test_seek.py::TestSeek::test_seek_middle"
94+ "--deselect=tests/test_seek.py::TestSeek::test_seek_start"
95+ "--deselect=tests/test_seek.py::TestSeek::test_stream_seek"
96+ "--deselect=tests/test_streams.py::TestStreams::test_selection"
97+ "--deselect=tests/test_streams.py::TestStreams::test_stream_tuples"
98+ "--deselect=tests/test_subtitles.py::TestSubtitle::test_movtext"
99+ "--deselect=tests/test_subtitles.py::TestSubtitle::test_vobsub"
100+ "--deselect=tests/test_videoframe.py::TestVideoFrameImage::test_roundtrip"
101+ ];
21102
22− nativeBuildInputs = [ pkg-config ];
23− buildInputs = [ ffmpeg ];
103+ disabledTestPaths = [
104+ # urlopen fails during DNS resolution
105+ "tests/test_doctests.py"
106+ "tests/test_timeout.py"
107+ ];
24108
25− # Tests require downloading files from internet
26− doCheck = false;
109+ pythonImportsCheck = [
110+ "av"
111+ "av.audio"
112+ "av.buffer"
113+ "av.bytesource"
114+ "av.codec"
115+ "av.container"
116+ "av._core"
117+ "av.datasets"
118+ "av.descriptor"
119+ "av.dictionary"
120+ "av.enum"
121+ "av.error"
122+ "av.filter"
123+ "av.format"
124+ "av.frame"
125+ "av.logging"
126+ "av.option"
127+ "av.packet"
128+ "av.plane"
129+ "av.stream"
130+ "av.subtitles"
131+ "av.utils"
132+ "av.video"
133+ ];
27134
28− meta = {
135+ meta = with lib; {
29136 description = "Pythonic bindings for FFmpeg/Libav";
30137 homepage = "https://github.com/mikeboers/PyAV/";
31− license = lib.licenses.bsd2;
138+ license = licenses.bsd2;
139+ maintainers = with maintainers; [ ];
32140 };
33141}
pkgs/development/python-modules/gattlib/default.nixnew file+68
@@ -0,0 +1,68 @@
1+{ lib
2+, buildPythonPackage
3+, fetchFromGitHub
4+, substituteAll
5+
6+# build
7+, pkg-config
8+, glibc
9+, python
10+
11+# runtime
12+, bluez
13+, boost
14+, glib
15+
16+}:
17+
18+let
19+ pname = "gattlib";
20+ version = "unstable-2021-06-16";
21+in
22+buildPythonPackage {
23+ inherit pname version;
24+ format = "setuptools";
25+
26+
27+ src = fetchFromGitHub {
28+ owner = "oscaracena";
29+ repo = "pygattlib";
30+ rev = "7bdb229124fe7d9f4a2cc090277b0fdef82e2a56";
31+ hash = "sha256-PS5DIH1JuH2HweyebLLM+UNFGY/XsjKIrsD9x7g7yMI=";
32+ };
33+
34+ patches = [
35+ (substituteAll {
36+ src = ./setup.patch;
37+ boost_version = let
38+ pythonVersion = with lib.versions; "${major python.version}${minor python.version}";
39+ in
40+ "boost_python${pythonVersion}";
41+ })
42+ ];
43+
44+ nativeBuildInputs = [
45+ pkg-config
46+ glibc
47+ ];
48+
49+ buildInputs = [
50+ bluez
51+ boost
52+ glib
53+ ];
54+
55+ # has no tests
56+ doCheck = false;
57+
58+ pythonImportsCheck = [
59+ "gattlib"
60+ ];
61+
62+ meta = with lib; {
63+ description = "Python library to use the GATT Protocol for Bluetooth LE devices";
64+ homepage = "https://github.com/oscaracena/pygattlib";
65+ license = licenses.asl20;
66+ maintainers = with maintainers; [ hexa ];
67+ };
68+}
pkgs/development/python-modules/gattlib/setup.patchnew file+18
@@ -0,0 +1,18 @@
1+diff --git a/setup.py b/setup.py
2+index 0825241..389a59e 100755
3+--- a/setup.py
4++++ b/setup.py
5+@@ -11,12 +11,7 @@ extension_modules = []
6+
7+
8+ def get_boost_version(out=None):
9+- if out is None:
10+- out = subprocess.check_output(
11+- r"ldconfig -p | grep -E 'libboost_python.*\.so '", shell=True)
12+-
13+- ver = os.path.splitext(out.split()[0][3:])[0].decode()
14+- return ver
15++ return "@boost_version@"
16+
17+ def tests():
18+ # case: python3-py3x.so
pkgs/development/python-modules/ha-av/default.nixdeleted−43
@@ -1,43 +0,0 @@
1−{ lib
2−, buildPythonPackage
3−, pythonOlder
4−, fetchPypi
5−, pkg-config
6−, ffmpeg_4
7−}:
8−
9−buildPythonPackage rec {
10− pname = "ha-av";
11− version = "8.0.4rc1";
12− format = "setuptools";
13−
14− disabled = pythonOlder "3.5";
15−
16− src = fetchPypi {
17− inherit pname version;
18− sha256 = "sha256-txdi2/X6upqrACeHhHpEh4tGqgPpW/dyWda8y++7c3M=";
19− };
20−
21− nativeBuildInputs = [
22− pkg-config
23− ];
24−
25− buildInputs = [
26− ffmpeg_4
27− ];
28−
29− pythonImportsCheck = [
30− "av"
31− "av._core"
32− ];
33−
34− # tests fail to import av._core
35− doCheck = false;
36−
37− meta = with lib; {
38− homepage = "https://pypi.org/project/ha-av/";
39− description = "Pythonic bindings for FFmpeg's libraries";
40− license = licenses.bsd3;
41− maintainers = with maintainers; [ hexa ];
42− };
43−}
pkgs/development/python-modules/hangups/default.nix+2−2
@@ -18,7 +18,7 @@
1818
1919buildPythonPackage rec {
2020 pname = "hangups";
21− version = "0.4.17";
21+ version = "0.4.18";
2222
2323 disabled = pythonOlder "3.6";
2424
@@ -26,7 +26,7 @@ buildPythonPackage rec {
2626 owner = "tdryer";
2727 repo = "hangups";
2828 rev = "v${version}";
29− hash = "sha256-8kNWcRAip9LkmazDUVeDjGWhy/TWzT01c959LA5hb1Q=";
29+ hash = "sha256-vq1OrOUPMQtezBFlisP2f/bvvYprDjhOuwUcT8rmIvw=";
3030 };
3131
3232 postPatch = ''
pkgs/development/python-modules/hyperion-py/default.nix+4−3
@@ -4,6 +4,7 @@
44, fetchFromGitHub
55, pytestCheckHook
66, pythonOlder
7+, pythonAtLeast
78, poetry-core
89, pytest-aiohttp
910, pytest-asyncio
@@ -11,15 +12,15 @@
1112
1213buildPythonPackage rec {
1314 pname = "hyperion-py";
14− version = "0.7.4";
15− disabled = pythonOlder "3.8";
15+ version = "0.7.5";
16+ disabled = pythonOlder "3.8" || pythonAtLeast "3.10";
1617 format = "pyproject";
1718
1819 src = fetchFromGitHub {
1920 owner = "dermotduffy";
2021 repo = pname;
2122 rev = "v${version}";
22− sha256 = "00x12ppmvlxs3qbdxq06wnzakvwm2m39qhmpp27qfpl137b0qqyj";
23+ sha256 = "sha256-arcnpCQsRuiWCrAz/t4TCjTe8DRDtRuzYp8k7nnjGDk=";
2324 };
2425
2526 nativeBuildInputs = [
pkgs/development/python-modules/lru-dict/default.nixnew file+34
@@ -0,0 +1,34 @@
1+{ lib
2+, buildPythonPackage
3+, fetchPypi
4+, pytestCheckHook
5+}:
6+
7+let
8+ pname = "lru-dict";
9+ version = "1.1.7";
10+in
11+buildPythonPackage {
12+ inherit pname version;
13+ format = "setuptools";
14+
15+ src = fetchPypi {
16+ inherit pname version;
17+ hash = "sha256-RbgfZ9dTQdRDOrreeZpH6cQqniKhGFMdy15UmGQDLXw=";
18+ };
19+
20+ checkInputs = [
21+ pytestCheckHook
22+ ];
23+
24+ pythonImportsCheck = [
25+ "lru"
26+ ];
27+
28+ meta = with lib; {
29+ description = "Fast and memory efficient LRU cache for Python";
30+ homepage = "https://github.com/amitdev/lru-dict";
31+ license = licenses.mit;
32+ maintainers = with maintainers; [ hexa ];
33+ };
34+}
pkgs/development/python-modules/plugwise/default.nix+2−2
@@ -19,14 +19,14 @@
1919
2020buildPythonPackage rec {
2121 pname = "plugwise";
22− version = "0.16.6";
22+ version = "0.17.3";
2323 format = "setuptools";
2424
2525 src = fetchFromGitHub {
2626 owner = pname;
2727 repo = "python-plugwise";
2828 rev = "v${version}";
29− sha256 = "sha256-hAYbYsLpiiJYdg9Rx5BjqNA9JTtKGu3DE0SpwOxlTWw=";
29+ sha256 = "sha256-1wSVmH7woTR2ebHS5FfWHLqwbY04rxtPx/0A/HY+N8s=";
3030 };
3131
3232 postPatch = ''
pkgs/development/python-modules/pybluez/default.nix+24−11
@@ -1,32 +1,45 @@
11{ lib
2+, stdenv
23, buildPythonPackage
34, fetchFromGitHub
4−, pkgs
5−, isPy3k
5+, bluez
6+, gattlib
67}:
78
89buildPythonPackage rec {
9− version = "unstable-20160819";
1010 pname = "pybluez";
11− # requires use2to3, which is no longer supported in setuptools>58
12− disabled = isPy3k;
13−
14− propagatedBuildInputs = [ pkgs.bluez ];
11+ version = "unstable-2022-01-28";
12+ format = "setuptools";
1513
1614 src = fetchFromGitHub {
17− owner = "karulis";
15+ owner = pname;
1816 repo = pname;
19− rev = "a0b226a61b166e170d48539778525b31e47a4731";
20− sha256 = "104dm5ngfhqisv1aszdlr3szcav2g3bhsgzmg4qfs09b3i5zj047";
17+ rev = "5096047f90a1f6a74ceb250aef6243e144170f92";
18+ hash = "sha256-GA58DfCFaVzZQA1HYpGQ68bznrt4SX1ojyOVn8hyCGo=";
2119 };
2220
23− # the tests do not pass
21+ buildInputs = [
22+ bluez
23+ ];
24+
25+ propagatedBuildInputs = [
26+ gattlib
27+ ];
28+
29+ # there are no tests
2430 doCheck = false;
2531
32+ pythonImportsCheck = [
33+ "bluetooth"
34+ "bluetooth.ble"
35+ ];
36+
2637 meta = with lib; {
2738 description = "Bluetooth Python extension module";
39+ homepage = "https://github.com/pybluez/pybluez";
2840 license = licenses.gpl2;
2941 maintainers = with maintainers; [ leenaars ];
42+ broken = stdenv.isDarwin; # requires pyobjc-core, pyobjc-framework-Cocoa
3043 };
3144
3245}
pkgs/development/python-modules/pysma/default.nix+2−2
@@ -9,14 +9,14 @@
99
1010buildPythonPackage rec {
1111 pname = "pysma";
12− version = "0.6.10";
12+ version = "0.6.11";
1313 format = "setuptools";
1414
1515 disabled = pythonOlder "3.8";
1616
1717 src = fetchPypi {
1818 inherit pname version;
19− sha256 = "990abf6dba3f52b98970fc95aaf484e521faa9ff28c9c19f5a6dca3fddf5840c";
19+ sha256 = "sha256-x0sFJAdueSny0XoaOYbYLN8ZRS5B/iEVT62mqd4Voe4=";
2020 };
2121
2222 propagatedBuildInputs = [
pkgs/development/python-modules/samsungtvws/default.nix+5−1
@@ -1,6 +1,8 @@
11{ lib, buildPythonPackage, fetchPypi, isPy27
2+, aiohttp
23, requests
34, websocket-client
5+, websockets
46}:
57
68buildPythonPackage rec {
@@ -14,8 +16,10 @@ buildPythonPackage rec {
1416 };
1517
1618 propagatedBuildInputs = [
17− websocket-client
19+ aiohttp
1820 requests
21+ websocket-client
22+ websockets
1923 ];
2024
2125 # no tests
pkgs/development/python-modules/vehicle/default.nix+2−2
@@ -13,7 +13,7 @@
1313
1414buildPythonPackage rec {
1515 pname = "vehicle";
16− version = "0.3.1";
16+ version = "0.4.0";
1717 format = "pyproject";
1818
1919 disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
2222 owner = "frenck";
2323 repo = "python-vehicle";
2424 rev = "v${version}";
25− sha256 = "04xcs5bfjd49j870gyyznc8hkaadsa9gm9pz0w9qvzlphnxvv5h4";
25+ sha256 = "sha256-dvSdYrONUEe+bdZ+9nALrOQ6gJwq9e1dLvuq08xP5tQ=";
2626 };
2727
2828 nativeBuildInputs = [
pkgs/development/python-modules/xknx/default.nix+4−4
@@ -1,6 +1,7 @@
11{ lib
22, buildPythonPackage
33, fetchFromGitHub
4+, cryptography
45, netifaces
56, voluptuous
67, pyyaml
@@ -11,7 +12,7 @@
1112
1213buildPythonPackage rec {
1314 pname = "xknx";
14− version = "0.19.2";
15+ version = "0.20.1";
1516 format = "setuptools";
1617
1718 disabled = pythonOlder "3.8";
@@ -20,13 +21,12 @@ buildPythonPackage rec {
2021 owner = "XKNX";
2122 repo = pname;
2223 rev = version;
23− sha256 = "sha256-LJ7MmKCWx+n7caud0pN4+7f9H4XzwuAAn9u86X/FACo=";
24+ sha256 = "sha256-7g1uAkBGlNcmfjqGNH2MS+X26Pq1hTKQy9eLJVTqxhA=";
2425 };
2526
2627 propagatedBuildInputs = [
27− voluptuous
28+ cryptography
2829 netifaces
29− pyyaml
3030 ];
3131
3232 checkInputs = [
pkgs/development/python-modules/yeelight/default.nix+2−2
@@ -9,7 +9,7 @@
99
1010buildPythonPackage rec {
1111 pname = "yeelight";
12− version = "0.7.9";
12+ version = "0.7.10";
1313 format = "setuptools";
1414
1515 disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
1818 owner = "stavros";
1919 repo = "python-yeelight";
2020 rev = "v${version}";
21− sha256 = "sha256-8N+HOhUX3BXecS/kaAfLoge+NYzKLKPyoTthu+useJA=";
21+ sha256 = "sha256-vUsL1CvhYRtv75gkmiPe/UkAtBDZPy1iK2BPUupMXz8=";
2222 };
2323
2424 propagatedBuildInputs = [
pkgs/development/python-modules/zha-quirks/default.nix+2−2
@@ -9,13 +9,13 @@
99
1010buildPythonPackage rec {
1111 pname = "zha-quirks";
12− version = "0.0.67";
12+ version = "0.0.69";
1313
1414 src = fetchFromGitHub {
1515 owner = "zigpy";
1616 repo = "zha-device-handlers";
1717 rev = version;
18− sha256 = "sha256-qkXXrwqMEtfafHsXtlyy6HFwuo/8sOZuQ9SvGRJkGtA=";
18+ sha256 = "sha256-qPqgla+NFtZ85i+GB0lRRsoNImVghJsJfww7j8yQcFs=";
1919 };
2020
2121 propagatedBuildInputs = [
pkgs/development/python-modules/zigpy-cc/default.nix+6−1
@@ -25,7 +25,6 @@ buildPythonPackage rec {
2525 };
2626
2727 propagatedBuildInputs = [
28− pyserial
2928 pyserial-asyncio
3029 zigpy
3130 ];
@@ -36,6 +35,12 @@ buildPythonPackage rec {
3635 pytestCheckHook
3736 ];
3837
38+ disabledTests = [
39+ "test_incoming_msg"
40+ "test_incoming_msg2"
41+ "test_deser"
42+ ];
43+
3944 meta = with lib; {
4045 description = "A library which communicates with Texas Instruments CC2531 radios for zigpy";
4146 homepage = "https://github.com/zigpy/zigpy-cc";
pkgs/development/python-modules/zigpy/default.nix+2−2
@@ -15,7 +15,7 @@
1515
1616buildPythonPackage rec {
1717 pname = "zigpy";
18− version = "0.43.0";
18+ version = "0.44.1";
1919 format = "setuptools";
2020
2121 disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
2424 owner = "zigpy";
2525 repo = "zigpy";
2626 rev = version;
27− sha256 = "1740cv99ny6xy7wfpz754h4wj2cm874b8vnddvff90ajk07qgdia";
27+ sha256 = "sha256-7X3uaxzvVMhSucCGA+rZsgt+fJSNjYQkJLpCGyHOIlc=";
2828 };
2929
3030 propagatedBuildInputs = [
pkgs/servers/home-assistant/component-packages.nix+50−65
@@ -2,7 +2,7 @@
22# Do not edit!
33
44{
5− version = "2022.3.8";
5+ version = "2022.4.0";
66 components = {
77 "abode" = ps: with ps; [ abodepy ];
88 "accuweather" = ps: with ps; [ accuweather ];
@@ -22,6 +22,7 @@
2222 "airthings" = ps: with ps; [ airthings-cloud ];
2323 "airtouch4" = ps: with ps; [ airtouch4pyapi ];
2424 "airvisual" = ps: with ps; [ pyairvisual ];
25+ "airzone" = ps: with ps; [ aioairzone ];
2526 "aladdin_connect" = ps: with ps; [ aladdin-connect ];
2627 "alarm_control_panel" = ps: with ps; [ ];
2728 "alarmdecoder" = ps: with ps; [ adext ];
@@ -36,7 +37,7 @@
3637 "ambient_station" = ps: with ps; [ aioambient ];
3738 "amcrest" = ps: with ps; [ amcrest ha-ffmpeg ];
3839 "ampio" = ps: with ps; [ asmog ];
39− "analytics" = ps: with ps; [ aiohttp-cors sqlalchemy ];
40+ "analytics" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ];
4041 "android_ip_webcam" = ps: with ps; [ pydroid-ipcam ];
4142 "androidtv" = ps: with ps; [ adb-shell androidtv pure-python-adb ];
4243 "anel_pwrctrl" = ps: with ps; [ ]; # missing inputs: anel_pwrctrl-homeassistant
@@ -76,13 +77,12 @@
7677 "azure_devops" = ps: with ps; [ aioazuredevops ];
7778 "azure_event_hub" = ps: with ps; [ azure-eventhub ];
7879 "azure_service_bus" = ps: with ps; [ azure-servicebus ];
80+ "backup" = ps: with ps; [ aiohttp-cors ]; # missing inputs: securetar
7981 "baidu" = ps: with ps; [ ]; # missing inputs: baidu-aip
8082 "balboa" = ps: with ps; [ pybalboa ];
8183 "bayesian" = ps: with ps; [ ];
82− "bbb_gpio" = ps: with ps; [ ]; # missing inputs: Adafruit_BBIO
8384 "bbox" = ps: with ps; [ ]; # missing inputs: pybbox
8485 "beewi_smartclim" = ps: with ps; [ ]; # missing inputs: beewi_smartclim
85− "bh1750" = ps: with ps; [ i2csense smbus-cffi ];
8686 "binary_sensor" = ps: with ps; [ ];
8787 "bitcoin" = ps: with ps; [ blockchain ];
8888 "bizkaibus" = ps: with ps; [ bizkaibus ];
@@ -90,16 +90,12 @@
9090 "blebox" = ps: with ps; [ blebox-uniapi ];
9191 "blink" = ps: with ps; [ blinkpy ];
9292 "blinksticklight" = ps: with ps; [ BlinkStick ];
93− "blinkt" = ps: with ps; [ ]; # missing inputs: blinkt
9493 "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api
9594 "bloomsky" = ps: with ps; [ ];
9695 "blueprint" = ps: with ps; [ ];
9796 "bluesound" = ps: with ps; [ xmltodict ];
9897 "bluetooth_le_tracker" = ps: with ps; [ pygatt ];
9998 "bluetooth_tracker" = ps: with ps; [ bt-proximity pybluez ];
100− "bme280" = ps: with ps; [ bme280spi i2csense smbus-cffi ];
101− "bme680" = ps: with ps; [ bme680 smbus-cffi ];
102− "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280
10399 "bmw_connected_drive" = ps: with ps; [ bimmer-connected ];
104100 "bond" = ps: with ps; [ bond-api ];
105101 "bosch_shc" = ps: with ps; [ aiohttp-cors boschshcpy ifaddr zeroconf ];
@@ -130,7 +126,7 @@
130126 "clickatell" = ps: with ps; [ ];
131127 "clicksend" = ps: with ps; [ ];
132128 "clicksend_tts" = ps: with ps; [ ];
133− "climacell" = ps: with ps; [ pyclimacell ];
129+ "climacell" = ps: with ps; [ pyclimacell ]; # missing inputs: pytomorrowio
134130 "climate" = ps: with ps; [ ];
135131 "cloud" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa ];
136132 "cloudflare" = ps: with ps; [ pycfdns ];
@@ -165,10 +161,10 @@
165161 "deconz" = ps: with ps; [ pydeconz ];
166162 "decora" = ps: with ps; [ bluepy ]; # missing inputs: decora
167163 "decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi
168− "default_config" = ps: with ps; [ pynacl pyturbojpeg aiodiscover aiohttp-cors async-upnp-client hass-nabucasa home-assistant-frontend ifaddr pillow pyserial pyudev scapy sqlalchemy zeroconf ];
164+ "default_config" = ps: with ps; [ pynacl pyturbojpeg aiodiscover aiohttp-cors async-upnp-client fnvhash hass-nabucasa home-assistant-frontend ifaddr lru-dict pillow pyserial pyudev scapy sqlalchemy zeroconf ];
169165 "delijn" = ps: with ps; [ pydelijn ];
170166 "deluge" = ps: with ps; [ deluge-client ];
171− "demo" = ps: with ps; [ aiohttp-cors sqlalchemy ];
167+ "demo" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ];
172168 "denon" = ps: with ps; [ ];
173169 "denonavr" = ps: with ps; [ denonavr ];
174170 "derivative" = ps: with ps; [ ];
@@ -180,7 +176,6 @@
180176 "devolo_home_network" = ps: with ps; [ devolo-plc-api ];
181177 "dexcom" = ps: with ps; [ pydexcom ];
182178 "dhcp" = ps: with ps; [ aiodiscover scapy ];
183− "dht" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-dht
184179 "diagnostics" = ps: with ps; [ aiohttp-cors ];
185180 "dialogflow" = ps: with ps; [ aiohttp-cors ];
186181 "digital_ocean" = ps: with ps; [ digital-ocean ];
@@ -234,13 +229,12 @@
234229 "emulated_hue" = ps: with ps; [ aiohttp-cors ifaddr ];
235230 "emulated_kasa" = ps: with ps; [ sense-energy ];
236231 "emulated_roku" = ps: with ps; [ aiohttp-cors emulated-roku ifaddr ];
237− "energy" = ps: with ps; [ aiohttp-cors sqlalchemy ];
232+ "energy" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ];
238233 "enigma2" = ps: with ps; [ openwebifpy ];
239234 "enocean" = ps: with ps; [ enocean ];
240235 "enphase_envoy" = ps: with ps; [ envoy-reader ];
241236 "entur_public_transport" = ps: with ps; [ enturclient ];
242237 "environment_canada" = ps: with ps; [ env-canada ];
243− "envirophat" = ps: with ps; [ smbus-cffi ]; # missing inputs: envirophat
244238 "envisalink" = ps: with ps; [ pyenvisalink ];
245239 "ephember" = ps: with ps; [ pyephember ];
246240 "epson" = ps: with ps; [ epson-projector ];
@@ -268,7 +262,7 @@
268262 "fido" = ps: with ps; [ pyfido ];
269263 "file" = ps: with ps; [ ];
270264 "filesize" = ps: with ps; [ ];
271− "filter" = ps: with ps; [ sqlalchemy ];
265+ "filter" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
272266 "fints" = ps: with ps; [ fints ];
273267 "fireservicerota" = ps: with ps; [ pyfireservicerota ];
274268 "firmata" = ps: with ps; [ pymata-express ];
@@ -303,18 +297,18 @@
303297 "fritzbox" = ps: with ps; [ pyfritzhome ];
304298 "fritzbox_callmonitor" = ps: with ps; [ fritzconnection ];
305299 "fronius" = ps: with ps; [ pyfronius ];
306− "frontend" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
300+ "frontend" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
307301 "frontier_silicon" = ps: with ps; [ afsapi ];
308302 "futurenow" = ps: with ps; [ pyfnip ];
309303 "garadget" = ps: with ps; [ ];
310304 "garages_amsterdam" = ps: with ps; [ garages-amsterdam ];
311305 "gc100" = ps: with ps; [ ]; # missing inputs: python-gc100
312306 "gdacs" = ps: with ps; [ aio-georss-gdacs ];
313− "generic" = ps: with ps; [ ];
307+ "generic" = ps: with ps; [ av pillow ];
314308 "generic_hygrostat" = ps: with ps; [ ];
315− "generic_thermostat" = ps: with ps; [ sqlalchemy ];
309+ "generic_thermostat" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
316310 "geniushub" = ps: with ps; [ geniushub-client ];
317− "geo_json_events" = ps: with ps; [ geojson-client ];
311+ "geo_json_events" = ps: with ps; [ ]; # missing inputs: aio_geojson_generic_client
318312 "geo_location" = ps: with ps; [ ];
319313 "geo_rss_events" = ps: with ps; [ georss-generic-client ];
320314 "geofency" = ps: with ps; [ aiohttp-cors ];
@@ -329,7 +323,7 @@
329323 "goalzero" = ps: with ps; [ goalzero ];
330324 "gogogate2" = ps: with ps; [ ismartgate ];
331325 "goodwe" = ps: with ps; [ goodwe ];
332− "google" = ps: with ps; [ google-api-python-client httplib2 oauth2client ];
326+ "google" = ps: with ps; [ aiohttp-cors google-api-python-client httplib2 oauth2client ];
333327 "google_assistant" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
334328 "google_cloud" = ps: with ps; [ google-cloud-texttospeech ];
335329 "google_domains" = ps: with ps; [ ];
@@ -353,7 +347,7 @@
353347 "hangouts" = ps: with ps; [ hangups ];
354348 "harman_kardon_avr" = ps: with ps; [ ]; # missing inputs: hkavr
355349 "harmony" = ps: with ps; [ aioharmony ];
356− "hassio" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
350+ "hassio" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
357351 "haveibeenpwned" = ps: with ps; [ ];
358352 "hddtemp" = ps: with ps; [ ];
359353 "hdmi_cec" = ps: with ps; [ pycec ];
@@ -363,8 +357,8 @@
363357 "hikvision" = ps: with ps; [ ]; # missing inputs: pyhik
364358 "hikvisioncam" = ps: with ps; [ hikvision ];
365359 "hisense_aehw4a1" = ps: with ps; [ pyaehw4a1 ];
366− "history" = ps: with ps; [ aiohttp-cors sqlalchemy ];
367− "history_stats" = ps: with ps; [ sqlalchemy ];
360+ "history" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ];
361+ "history_stats" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
368362 "hitron_coda" = ps: with ps; [ ];
369363 "hive" = ps: with ps; [ pyhiveapi ];
370364 "hlk_sw16" = ps: with ps; [ hlk-sw16 ];
@@ -382,7 +376,6 @@
382376 "hp_ilo" = ps: with ps; [ python-hpilo ];
383377 "html5" = ps: with ps; [ aiohttp-cors pywebpush ];
384378 "http" = ps: with ps; [ aiohttp-cors ];
385− "htu21d" = ps: with ps; [ i2csense smbus-cffi ];
386379 "huawei_lte" = ps: with ps; [ huawei-lte-api stringcase url-normalize ];
387380 "hue" = ps: with ps; [ aiohue ];
388381 "huisbaasje" = ps: with ps; [ huisbaasje-client ];
@@ -436,6 +429,7 @@
436429 "joaoapps_join" = ps: with ps; [ ]; # missing inputs: python-join-api
437430 "juicenet" = ps: with ps; [ python-juicenet ];
438431 "kaiterra" = ps: with ps; [ ]; # missing inputs: kaiterra-async-client
432+ "kaleidescape" = ps: with ps; [ ]; # missing inputs: pykaleidescape
439433 "kankun" = ps: with ps; [ ];
440434 "keba" = ps: with ps; [ ]; # missing inputs: keba-kecontact
441435 "keenetic_ndms2" = ps: with ps; [ ndms2-client ];
@@ -477,7 +471,7 @@
477471 "local_ip" = ps: with ps; [ aiohttp-cors ifaddr ];
478472 "locative" = ps: with ps; [ aiohttp-cors ];
479473 "lock" = ps: with ps; [ ];
480− "logbook" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
474+ "logbook" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
481475 "logentries" = ps: with ps; [ ];
482476 "logger" = ps: with ps; [ ];
483477 "logi_circle" = ps: with ps; [ aiohttp-cors ha-ffmpeg ]; # missing inputs: logi_circle
@@ -497,13 +491,12 @@
497491 "mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner
498492 "manual" = ps: with ps; [ ];
499493 "manual_mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
500− "map" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
494+ "map" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
501495 "marytts" = ps: with ps; [ ]; # missing inputs: speak2mary
502496 "mastodon" = ps: with ps; [ mastodon-py ];
503497 "matrix" = ps: with ps; [ matrix-client ];
504498 "maxcube" = ps: with ps; [ maxcube-api ];
505499 "mazda" = ps: with ps; [ pymazda ];
506− "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx
507500 "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ];
508501 "media_player" = ps: with ps; [ aiohttp-cors ];
509502 "media_source" = ps: with ps; [ aiohttp-cors ];
@@ -519,7 +512,6 @@
519512 "meteoclimatic" = ps: with ps; [ pymeteoclimatic ];
520513 "metoffice" = ps: with ps; [ ]; # missing inputs: datapoint
521514 "mfi" = ps: with ps; [ ]; # missing inputs: mficlient
522− "mhz19" = ps: with ps; [ pmsensor ];
523515 "microsoft" = ps: with ps; [ ]; # missing inputs: pycsspeechtts
524516 "microsoft_face" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
525517 "microsoft_face_detect" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
@@ -543,7 +535,6 @@
543535 "moon" = ps: with ps; [ ];
544536 "motion_blinds" = ps: with ps; [ aiohttp-cors ifaddr motionblinds ];
545537 "motioneye" = ps: with ps; [ aiohttp-cors motioneye-client ];
546− "mpchc" = ps: with ps; [ ];
547538 "mpd" = ps: with ps; [ mpd2 ];
548539 "mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
549540 "mqtt_eventstream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
@@ -554,7 +545,7 @@
554545 "mullvad" = ps: with ps; [ mullvad-api ];
555546 "mutesync" = ps: with ps; [ mutesync ];
556547 "mvglive" = ps: with ps; [ PyMVGLive ];
557− "my" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
548+ "my" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
558549 "mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi
559550 "myq" = ps: with ps; [ pymyq ];
560551 "mysensors" = ps: with ps; [ aiohttp-cors paho-mqtt pymysensors ];
@@ -609,7 +600,7 @@
609600 "ohmconnect" = ps: with ps; [ defusedxml ];
610601 "ombi" = ps: with ps; [ pyombi ];
611602 "omnilogic" = ps: with ps; [ omnilogic ];
612− "onboarding" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
603+ "onboarding" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
613604 "oncue" = ps: with ps; [ aiooncue ];
614605 "ondilo_ico" = ps: with ps; [ aiohttp-cors ondilo ];
615606 "onewire" = ps: with ps; [ pi1wire pyownet ];
@@ -632,7 +623,6 @@
632623 "openweathermap" = ps: with ps; [ pyowm ];
633624 "opnsense" = ps: with ps; [ pyopnsense ];
634625 "opple" = ps: with ps; [ ]; # missing inputs: pyoppleio
635− "orangepi_gpio" = ps: with ps; [ ]; # missing inputs: OPi.GPIO
636626 "oru" = ps: with ps; [ ]; # missing inputs: oru
637627 "orvibo" = ps: with ps; [ orvibo ];
638628 "osramlightify" = ps: with ps; [ ]; # missing inputs: lightify
@@ -640,29 +630,26 @@
640630 "overkiz" = ps: with ps; [ pyoverkiz ];
641631 "ovo_energy" = ps: with ps; [ ovoenergy ];
642632 "owntracks" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa paho-mqtt ];
643− "ozw" = ps: with ps; [ aiohttp-cors paho-mqtt python-openzwave-mqtt ];
644633 "p1_monitor" = ps: with ps; [ p1monitor ];
645634 "panasonic_bluray" = ps: with ps; [ panacotta ];
646635 "panasonic_viera" = ps: with ps; [ ]; # missing inputs: panasonic_viera
647636 "pandora" = ps: with ps; [ pexpect ];
648− "panel_custom" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
649− "panel_iframe" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
650− "pcal9535a" = ps: with ps; [ ]; # missing inputs: pcal9535a
637+ "panel_custom" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
638+ "panel_iframe" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ];
639+ "peco" = ps: with ps; [ ]; # missing inputs: peco
651640 "pencom" = ps: with ps; [ ]; # missing inputs: pencompy
652641 "persistent_notification" = ps: with ps; [ ];
653642 "person" = ps: with ps; [ aiohttp-cors pillow ];
654643 "philips_js" = ps: with ps; [ ha-philipsjs ];
655− "pi4ioe5v9xxxx" = ps: with ps; [ ]; # missing inputs: pi4ioe5v9xxxx
656644 "pi_hole" = ps: with ps; [ hole ];
657645 "picnic" = ps: with ps; [ python-picnic-api ];
658646 "picotts" = ps: with ps; [ ];
659− "piglow" = ps: with ps; [ ]; # missing inputs: piglow
660647 "pilight" = ps: with ps; [ ]; # missing inputs: pilight
661648 "ping" = ps: with ps; [ icmplib ];
662649 "pioneer" = ps: with ps; [ ];
663650 "pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2
664651 "plaato" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyplaato ];
665− "plant" = ps: with ps; [ sqlalchemy ];
652+ "plant" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
666653 "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ];
667654 "plugwise" = ps: with ps; [ plugwise ];
668655 "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
@@ -706,11 +693,10 @@
706693 "rainforest_eagle" = ps: with ps; [ aioeagle ueagle ];
707694 "rainmachine" = ps: with ps; [ regenmaschine ];
708695 "random" = ps: with ps; [ ];
709− "raspihats" = ps: with ps; [ smbus-cffi ]; # missing inputs: raspihats
710696 "raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client
711697 "rdw" = ps: with ps; [ vehicle ];
712698 "recollect_waste" = ps: with ps; [ aiorecollect ];
713− "recorder" = ps: with ps; [ sqlalchemy ];
699+ "recorder" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
714700 "recswitch" = ps: with ps; [ ]; # missing inputs: pyrecswitch
715701 "reddit" = ps: with ps; [ praw ];
716702 "rejseplanen" = ps: with ps; [ ]; # missing inputs: rjpl
@@ -737,10 +723,7 @@
737723 "rova" = ps: with ps; [ ]; # missing inputs: rova
738724 "rpi_camera" = ps: with ps; [ ];
739725 "rpi_gpio" = ps: with ps; [ ]; # missing inputs: RPi.GPIO
740− "rpi_gpio_pwm" = ps: with ps; [ ]; # missing inputs: pwmled
741− "rpi_pfio" = ps: with ps; [ ]; # missing inputs: pifacecommon pifacedigitalio
742726 "rpi_power" = ps: with ps; [ rpi-bad-power ];
743− "rpi_rf" = ps: with ps; [ ]; # missing inputs: RPi.GPIO rpi-rf
744727 "rss_feed_template" = ps: with ps; [ aiohttp-cors ];
745728 "rtorrent" = ps: with ps; [ ];
746729 "rtsp_to_webrtc" = ps: with ps; [ pyturbojpeg aiohttp-cors rtsp-to-webrtc ];
@@ -748,9 +731,9 @@
748731 "russound_rio" = ps: with ps; [ ]; # missing inputs: russound_rio
749732 "russound_rnet" = ps: with ps; [ ]; # missing inputs: russound
750733 "sabnzbd" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ]; # missing inputs: pysabnzbd
751− "safe_mode" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa home-assistant-frontend pillow sqlalchemy ];
734+ "safe_mode" = ps: with ps; [ pyturbojpeg aiohttp-cors fnvhash hass-nabucasa home-assistant-frontend lru-dict pillow sqlalchemy ];
752735 "saj" = ps: with ps; [ ]; # missing inputs: pysaj
753− "samsungtv" = ps: with ps; [ getmac samsungctl samsungtvws wakeonlan ];
736+ "samsungtv" = ps: with ps; [ aiohttp-cors async-upnp-client getmac ifaddr samsungctl samsungtvws wakeonlan zeroconf ];
754737 "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra
755738 "scene" = ps: with ps; [ ];
756739 "schluter" = ps: with ps; [ ]; # missing inputs: py-schluter
@@ -763,23 +746,21 @@
763746 "select" = ps: with ps; [ ];
764747 "sendgrid" = ps: with ps; [ sendgrid ];
765748 "sense" = ps: with ps; [ sense-energy ];
766− "sensehat" = ps: with ps; [ ]; # missing inputs: sense-hat
767749 "senseme" = ps: with ps; [ aiosenseme ];
768750 "sensibo" = ps: with ps; [ ]; # missing inputs: pysensibo
769− "sensor" = ps: with ps; [ sqlalchemy ];
751+ "sensor" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
770752 "sentry" = ps: with ps; [ sentry-sdk ];
771753 "serial" = ps: with ps; [ pyserial-asyncio ];
772754 "serial_pm" = ps: with ps; [ pmsensor ];
773755 "sesame" = ps: with ps; [ ]; # missing inputs: pysesame2
774756 "seven_segments" = ps: with ps; [ pillow ];
775757 "seventeentrack" = ps: with ps; [ py17track ];
776− "sharkiq" = ps: with ps; [ sharkiqpy ];
758+ "sharkiq" = ps: with ps; [ ]; # missing inputs: sharkiq
777759 "shell_command" = ps: with ps; [ ];
778760 "shelly" = ps: with ps; [ aioshelly ];
779761 "shiftr" = ps: with ps; [ paho-mqtt ];
780762 "shodan" = ps: with ps; [ shodan ];
781763 "shopping_list" = ps: with ps; [ aiohttp-cors ];
782− "sht31" = ps: with ps; [ ]; # missing inputs: Adafruit-GPIO Adafruit-SHT31
783764 "sia" = ps: with ps; [ pysiaalarm ];
784765 "sigfox" = ps: with ps; [ ];
785766 "sighthound" = ps: with ps; [ pillow simplehound ];
@@ -799,7 +780,6 @@
799780 "sma" = ps: with ps; [ pysma ];
800781 "smappee" = ps: with ps; [ aiohttp-cors pysmappee ];
801782 "smart_meter_texas" = ps: with ps; [ smart-meter-texas ];
802− "smarthab" = ps: with ps; [ smarthab ];
803783 "smartthings" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pysmartapp pysmartthings ];
804784 "smarttub" = ps: with ps; [ python-smarttub ];
805785 "smarty" = ps: with ps; [ ]; # missing inputs: pysmarty
@@ -809,7 +789,6 @@
809789 "snapcast" = ps: with ps; [ snapcast ];
810790 "snips" = ps: with ps; [ aiohttp-cors paho-mqtt ];
811791 "snmp" = ps: with ps; [ pysnmp ];
812− "sochain" = ps: with ps; [ ]; # missing inputs: python-sochain-api
813792 "solaredge" = ps: with ps; [ solaredge stringcase ];
814793 "solaredge_local" = ps: with ps; [ ]; # missing inputs: solaredge-local
815794 "solarlog" = ps: with ps; [ sunwatcher ];
@@ -835,7 +814,7 @@
835814 "starline" = ps: with ps; [ starline ];
836815 "starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank
837816 "startca" = ps: with ps; [ xmltodict ];
838− "statistics" = ps: with ps; [ sqlalchemy ];
817+ "statistics" = ps: with ps; [ fnvhash lru-dict sqlalchemy ];
839818 "statsd" = ps: with ps; [ statsd ];
840819 "steam_online" = ps: with ps; [ ]; # missing inputs: steamodd
841820 "steamist" = ps: with ps; [ aiohttp-cors aiosteamist discovery30303 ifaddr ];
@@ -854,6 +833,7 @@
854833 "swiss_public_transport" = ps: with ps; [ python-opendata-transport ];
855834 "swisscom" = ps: with ps; [ ];
856835 "switch" = ps: with ps; [ ];
836+ "switch_as_x" = ps: with ps; [ ];
857837 "switchbot" = ps: with ps; [ pyswitchbot ];
858838 "switcher_kis" = ps: with ps; [ aioswitcher ];
859839 "switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate
@@ -893,7 +873,7 @@
893873 "thinkingcleaner" = ps: with ps; [ ]; # missing inputs: pythinkingcleaner
894874 "thomson" = ps: with ps; [ ];
895875 "threshold" = ps: with ps; [ ];
896− "tibber" = ps: with ps; [ pytibber sqlalchemy ];
876+ "tibber" = ps: with ps; [ fnvhash lru-dict pytibber sqlalchemy ];
897877 "tikteck" = ps: with ps; [ ]; # missing inputs: tikteck
898878 "tile" = ps: with ps; [ pytile ];
899879 "time_date" = ps: with ps; [ ];
@@ -901,9 +881,9 @@
901881 "tmb" = ps: with ps; [ tmb ];
902882 "tod" = ps: with ps; [ ];
903883 "todoist" = ps: with ps; [ todoist ];
904− "tof" = ps: with ps; [ ]; # missing inputs: RPi.GPIO VL53L1X2
905884 "tolo" = ps: with ps; [ tololib ];
906885 "tomato" = ps: with ps; [ ];
886+ "tomorrowio" = ps: with ps; [ ]; # missing inputs: pytomorrowio
907887 "toon" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa toonapi ];
908888 "torque" = ps: with ps; [ aiohttp-cors ];
909889 "totalconnect" = ps: with ps; [ total-connect-client ];
@@ -940,6 +920,7 @@
940920 "upb" = ps: with ps; [ upb-lib ];
941921 "upc_connect" = ps: with ps; [ connect-box ];
942922 "upcloud" = ps: with ps; [ upcloud-api ];
923+ "update" = ps: with ps; [ ];
943924 "updater" = ps: with ps; [ ];
944925 "upnp" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
945926 "uptime" = ps: with ps; [ ];
@@ -971,6 +952,7 @@
971952 "volkszaehler" = ps: with ps; [ volkszaehler ];
972953 "volumio" = ps: with ps; [ pyvolumio ];
973954 "volvooncall" = ps: with ps; [ volvooncall ];
955+ "vulcan" = ps: with ps; [ vulcan-api ];
974956 "vultr" = ps: with ps; [ vultr ];
975957 "w800rf32" = ps: with ps; [ ]; # missing inputs: pyW800rf32
976958 "wake_on_lan" = ps: with ps; [ wakeonlan ];
@@ -984,7 +966,7 @@
984966 "waze_travel_time" = ps: with ps; [ wazeroutecalculator ];
985967 "weather" = ps: with ps; [ ];
986968 "webhook" = ps: with ps; [ aiohttp-cors ];
987− "webostv" = ps: with ps; [ aiowebostv sqlalchemy ];
969+ "webostv" = ps: with ps; [ aiowebostv ];
988970 "websocket_api" = ps: with ps; [ aiohttp-cors ];
989971 "wemo" = ps: with ps; [ pywemo ];
990972 "whirlpool" = ps: with ps; [ whirlpool-sixth-sense ];
@@ -1022,7 +1004,7 @@
10221004 "youless" = ps: with ps; [ youless-api ];
10231005 "zabbix" = ps: with ps; [ py-zabbix ];
10241006 "zamg" = ps: with ps; [ ];
1025− "zengge" = ps: with ps; [ ]; # missing inputs: zengge
1007+ "zengge" = ps: with ps; [ bluepy ]; # missing inputs: zengge
10261008 "zeroconf" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ];
10271009 "zerproc" = ps: with ps; [ pyzerproc ];
10281010 "zestimate" = ps: with ps; [ xmltodict ];
@@ -1032,7 +1014,6 @@
10321014 "zodiac" = ps: with ps; [ ];
10331015 "zone" = ps: with ps; [ ];
10341016 "zoneminder" = ps: with ps; [ zm-py ];
1035− "zwave" = ps: with ps; [ homeassistant-pyozw pydispatcher ];
10361017 "zwave_js" = ps: with ps; [ aiohttp-cors pyserial pyudev zwave-js-server-python ];
10371018 "zwave_me" = ps: with ps; [ aiohttp-cors ifaddr url-normalize zeroconf ]; # missing inputs: zwave_me_ws
10381019 };
@@ -1052,6 +1033,7 @@
10521033 "airthings"
10531034 "airtouch4"
10541035 "airvisual"
1036+ "airzone"
10551037 "alarm_control_panel"
10561038 "alarmdecoder"
10571039 "alert"
@@ -1107,7 +1089,6 @@
11071089 "canary"
11081090 "cast"
11091091 "cert_expiry"
1110− "climacell"
11111092 "climate"
11121093 "cloud"
11131094 "cloudflare"
@@ -1132,6 +1113,7 @@
11321113 "debugpy"
11331114 "deconz"
11341115 "default_config"
1116+ "deluge"
11351117 "demo"
11361118 "denonavr"
11371119 "derivative"
@@ -1145,6 +1127,7 @@
11451127 "diagnostics"
11461128 "dialogflow"
11471129 "directv"
1130+ "discord"
11481131 "discovery"
11491132 "dlna_dmr"
11501133 "dlna_dms"
@@ -1182,6 +1165,7 @@
11821165 "fan"
11831166 "feedreader"
11841167 "ffmpeg"
1168+ "fibaro"
11851169 "fido"
11861170 "file"
11871171 "filesize"
@@ -1215,7 +1199,6 @@
12151199 "generic"
12161200 "generic_hygrostat"
12171201 "generic_thermostat"
1218− "geo_json_events"
12191202 "geo_location"
12201203 "geo_rss_events"
12211204 "geofency"
@@ -1339,7 +1322,6 @@
13391322 "met"
13401323 "met_eireann"
13411324 "meteoclimatic"
1342− "mhz19"
13431325 "microsoft_face"
13441326 "microsoft_face_detect"
13451327 "microsoft_face_identify"
@@ -1409,7 +1391,6 @@
14091391 "overkiz"
14101392 "ovo_energy"
14111393 "owntracks"
1412− "ozw"
14131394 "p1_monitor"
14141395 "panel_custom"
14151396 "panel_iframe"
@@ -1478,7 +1459,6 @@
14781459 "sensor"
14791460 "sentry"
14801461 "seventeentrack"
1481− "sharkiq"
14821462 "shell_command"
14831463 "shelly"
14841464 "shopping_list"
@@ -1494,7 +1474,6 @@
14941474 "sma"
14951475 "smappee"
14961476 "smart_meter_texas"
1497− "smarthab"
14981477 "smartthings"
14991478 "smarttub"
15001479 "smhi"
@@ -1530,6 +1509,7 @@
15301509 "sun"
15311510 "surepetcare"
15321511 "switch"
1512+ "switch_as_x"
15331513 "switchbot"
15341514 "switcher_kis"
15351515 "syncthing"
@@ -1541,9 +1521,11 @@
15411521 "tado"
15421522 "tag"
15431523 "tailscale"
1524+ "tankerkoenig"
15441525 "tasmota"
15451526 "tcp"
15461527 "telegram"
1528+ "telegram_bot"
15471529 "tellduslive"
15481530 "template"
15491531 "tesla_wall_connector"
@@ -1553,6 +1535,7 @@
15531535 "time_date"
15541536 "timer"
15551537 "tod"
1538+ "todoist"
15561539 "tolo"
15571540 "tomato"
15581541 "toon"
@@ -1562,6 +1545,7 @@
15621545 "trace"
15631546 "tractive"
15641547 "tradfri"
1548+ "trafikverket_train"
15651549 "trafikverket_weatherstation"
15661550 "transmission"
15671551 "transport_nsw"
@@ -1578,6 +1562,7 @@
15781562 "universal"
15791563 "upb"
15801564 "upcloud"
1565+ "update"
15811566 "updater"
15821567 "upnp"
15831568 "uptime"
@@ -1599,6 +1584,7 @@
15991584 "vlc_telnet"
16001585 "voicerss"
16011586 "volumio"
1587+ "vulcan"
16021588 "vultr"
16031589 "wake_on_lan"
16041590 "wallbox"
@@ -1635,7 +1621,6 @@
16351621 "zha"
16361622 "zodiac"
16371623 "zone"
1638− "zwave"
16391624 "zwave_js"
16401625 ];
16411626}
pkgs/servers/home-assistant/default.nix+12−9
@@ -59,17 +59,18 @@ let
5959 })
6060
6161 (self: super: {
62− hatasmota = super.hatasmota.overridePythonAttrs (oldAttrs: {
63− version = "0.3.1";
62+ aioairzone = super.aioairzone.overridePythonAttrs (oldAttrs: rec {
63+ version = "0.2.3";
6464 src = fetchFromGitHub {
65− owner = "emontnemery";
66− repo = "hatasmota";
67− rev = "0.3.1";
68− sha256 = "sha256-/am6cRhAdiqMq0u7Ed4qhIA+Em2O0gIt7HfP19+2XHw=";
65+ owner = "Noltari";
66+ repo = "aioairzone";
67+ rev = version;
68+ hash = "sha256-vy6NqtlWv2El259rC+Nm0gs/rsY+s8xe7Z+wXvT1Ing=";
6969 };
7070 });
7171 })
7272
73+
7374 (self: super: {
7475 huawei-lte-api = super.huawei-lte-api.overridePythonAttrs (oldAttrs: rec {
7576 version = "1.4.18";
@@ -177,7 +178,7 @@ let
177178 extraPackagesFile = writeText "home-assistant-packages" (lib.concatMapStringsSep "\n" (pkg: pkg.pname) extraBuildInputs);
178179
179180 # Don't forget to run parse-requirements.py after updating
180− hassVersion = "2022.3.8";
181+ hassVersion = "2022.4.0";
181182
182183in python.pkgs.buildPythonApplication rec {
183184 pname = "homeassistant";
@@ -195,7 +196,7 @@ in python.pkgs.buildPythonApplication rec {
195196 owner = "home-assistant";
196197 repo = "core";
197198 rev = version;
198− hash = "sha256-FGsMFt/EEokaast81iiwKHqSsB1E4Si5ejTw+MV1MnQ=";
199+ hash = "sha256-b/YwcbcQuRIue4fr4+yF2EEXLvmnI7e3xfyz52flwJw=";
199200 };
200201
201202 # leave this in, so users don't have to constantly update their downstream patch handling
@@ -215,8 +216,8 @@ in python.pkgs.buildPythonApplication rec {
215216 "bcrypt"
216217 "cryptography"
217218 "httpx"
219+ "jinja2"
218220 "pip"
219− "PyJWT"
220221 "requests"
221222 "yarl"
222223 ];
@@ -319,6 +320,8 @@ in python.pkgs.buildPythonApplication rec {
319320 "test_merge"
320321 # Tests are flaky
321322 "test_config_platform_valid"
323+ # Test requires pylint>=2.13.0
324+ "test_invalid_discovery_info"
322325 ];
323326
324327 preCheck = ''
pkgs/servers/home-assistant/frontend.nix+2−2
@@ -4,7 +4,7 @@ buildPythonPackage rec {
44 # the frontend version corresponding to a specific home-assistant version can be found here
55 # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
66 pname = "home-assistant-frontend";
7− version = "20220301.2";
7+ version = "20220405.0";
88 format = "wheel";
99
1010 src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
1212 pname = "home_assistant_frontend";
1313 dist = "py3";
1414 python = "py3";
15− sha256 = "sha256-iIywlG9ATLV/+bHtOQFx4mRwToelpPdE3DOKSp4yxN0=";
15+ sha256 = "sha256-M024uJJVhVSoGhJTc7d8NKItw0sAOGFuCsZNUe//vBg=";
1616 };
1717
1818 # there is nothing to strip in this package
pkgs/servers/home-assistant/tests.nix+8−5
@@ -5,14 +5,14 @@
55let
66 # some components' tests have additional dependencies
77 extraCheckInputs = with home-assistant.python.pkgs; {
8− alexa = [ ha-av ];
9− camera = [ ha-av ];
8+ alexa = [ av ];
9+ camera = [ av ];
1010 cloud = [ mutagen ];
1111 config = [ pydispatcher ];
12− generic = [ ha-av ];
12+ generic = [ av ];
1313 google_translate = [ mutagen ];
1414 lovelace = [ PyChromecast ];
15− nest = [ ha-av ];
15+ nest = [ av ];
1616 onboarding = [ pymetno radios rpi-bad-power ];
1717 version = [ aioaseko ];
1818 voicerss = [ mutagen ];
@@ -67,8 +67,11 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
6767 meta = old.meta // {
6868 broken = lib.elem component [
6969 "airtouch4"
70+ "bsblan"
7071 "dnsip"
71− "zwave"
72+ "efergy"
73+ "ssdp"
74+ "subaru"
7275 ];
7376 # upstream only tests on Linux, so do we.
7477 platforms = lib.platforms.linux;
pkgs/top-level/python-aliases.nix+1
@@ -66,6 +66,7 @@ mapAliases ({
6666 google_api_python_client = google-api-python-client; # added 2021-03-19
6767 googleapis_common_protos = googleapis-common-protos; # added 2021-03-19
6868 grpc_google_iam_v1 = grpc-google-iam-v1; # added 2021-08-21
69+ ha-av = throw "ha-av was removed, because it is no longer maintained"; # added 2022-04-06
6970 HAP-python = hap-python; # added 2021-06-01
7071 hbmqtt = throw "hbmqtt was removed because it is no longer maintained"; # added 2021-11-07
7172 hdlparse = throw "hdlparse has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
pkgs/top-level/python-packages.nix+9−3
@@ -3205,6 +3205,10 @@ in {
32053205
32063206 garages-amsterdam = callPackage ../development/python-modules/garages-amsterdam { };
32073207
3208+ gattlib = callPackage ../development/python-modules/gattlib {
3209+ inherit (pkgs) bluez glib pkg-config;
3210+ };
3211+
32083212 gbinder-python = callPackage ../development/python-modules/gbinder-python { };
32093213
32103214 gcovr = callPackage ../development/python-modules/gcovr { };
@@ -3701,8 +3705,6 @@ in {
37013705
37023706 hdate = callPackage ../development/python-modules/hdate { };
37033707
3704− ha-av = callPackage ../development/python-modules/ha-av { };
3705−
37063708 ha-ffmpeg = callPackage ../development/python-modules/ha-ffmpeg { };
37073709
37083710 ha-philipsjs = callPackage ../development/python-modules/ha-philipsjs{ };
@@ -4883,6 +4885,8 @@ in {
48834885
48844886 losant-rest = callPackage ../development/python-modules/losant-rest { };
48854887
4888+ lru-dict = callPackage ../development/python-modules/lru-dict { };
4889+
48864890 lsassy = callPackage ../development/python-modules/lsassy { };
48874891
48884892 luddite = callPackage ../development/python-modules/luddite { };
@@ -6761,7 +6765,9 @@ in {
67616765
67626766 pyblock = callPackage ../development/python-modules/pyblock { };
67636767
6764− pybluez = callPackage ../development/python-modules/pybluez { };
6768+ pybluez = callPackage ../development/python-modules/pybluez {
6769+ inherit (pkgs) bluez;
6770+ };
67656771
67666772 pybotvac = callPackage ../development/python-modules/pybotvac { };
67676773