nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge master into staging-next

authored by

github-actions[bot] and committed by
GitHub
f6d51151 ce196af7

+3480 -1087
+50
pkgs/applications/audio/pipecontrol/default.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , pipewire 5 + , cmake 6 + , extra-cmake-modules 7 + , gnumake 8 + , wrapQtAppsHook 9 + , qtbase 10 + , qttools 11 + , kirigami2 12 + , kcoreaddons 13 + , ki18n 14 + , qtquickcontrols2 15 + }: 16 + 17 + stdenv.mkDerivation rec { 18 + pname = "pipecontrol"; 19 + version = "0.2.2"; 20 + 21 + src = fetchFromGitHub { 22 + owner = "portaloffreedom"; 23 + repo = pname; 24 + rev = "v${version}"; 25 + sha256 = "sha256-BeubRDx82MQX1gB7GnGJlQ2FyYX1S83C3gqPZgIjgoM="; 26 + }; 27 + 28 + nativeBuildInputs = [ 29 + cmake 30 + extra-cmake-modules 31 + wrapQtAppsHook 32 + qttools 33 + ]; 34 + 35 + buildInputs = [ 36 + pipewire 37 + qtbase 38 + kirigami2 39 + kcoreaddons 40 + ki18n 41 + qtquickcontrols2 42 + ]; 43 + 44 + meta = with lib; { 45 + description = "Pipewire control GUI program in Qt (Kirigami2)"; 46 + homepage = "https://github.com/portaloffreedom/pipecontrol"; 47 + license = licenses.gpl3Only; 48 + maintainers = with maintainers; [ tilcreator ]; 49 + }; 50 + }
+27
pkgs/applications/audio/sonixd/default.nix
··· 1 + { lib 2 + , fetchurl 3 + , appimageTools 4 + }: 5 + 6 + appimageTools.wrapType2 rec { 7 + pname = "sonixd"; 8 + version = "0.14.0"; 9 + 10 + src = fetchurl { 11 + url = "https://github.com/jeffvli/sonixd/releases/download/v${version}/Sonixd-${version}-linux-x86_64.AppImage"; 12 + sha256 = "sha256-q+26Ut5wN9gFDBdqirR+he/ppu/b1wiqq23WkcRAQd4="; 13 + }; 14 + 15 + extraInstallCommands = '' 16 + mv $out/bin/sonixd-${version} $out/bin/sonixd 17 + ''; 18 + 19 + meta = with lib; { 20 + description = "Full-featured Subsonic/Jellyfin compatible desktop music player"; 21 + homepage = "https://github.com/jeffvli/sonixd"; 22 + license = licenses.gpl3Only; 23 + maintainers = with maintainers; [ onny ]; 24 + platforms = [ "x86_64-linux" ]; 25 + }; 26 + } 27 +
+2 -2
pkgs/applications/misc/otpclient/default.nix
··· 15 15 16 16 stdenv.mkDerivation rec { 17 17 pname = "otpclient"; 18 - version = "2.4.9.1"; 18 + version = "2.5.1"; 19 19 20 20 src = fetchFromGitHub { 21 21 owner = "paolostivanin"; 22 22 repo = pname; 23 23 rev = "v${version}"; 24 - sha256 = "sha256-QcdPyuwbGK12Kul+gGTfRGmXfghr0qugpBEcrgATOT4="; 24 + sha256 = "sha256-VUrLbGaDfPE+Ak20ZCJDmO/sgBzdf4S+SqvyQ7F6SQU="; 25 25 }; 26 26 27 27 buildInputs = [ gtk3 jansson libgcrypt libzip libpng libcotp zbar ];
+3 -3
pkgs/applications/misc/toipe/default.nix
··· 2 2 3 3 rustPlatform.buildRustPackage rec { 4 4 pname = "toipe"; 5 - version = "0.3.1"; 5 + version = "0.4.0"; 6 6 7 7 src = fetchCrate { 8 8 inherit pname version; 9 - sha256 = "sha256-/vO5ABMldw3soh7mscjhN5TAZOcs+iMTaMxcdMmV0Xo="; 9 + sha256 = "sha256-lAvFCvNm55SjRmrhIkMBiM0nSlAG+jUEKLlLaGs1RkY="; 10 10 }; 11 11 12 - cargoSha256 = "sha256-AsRQ8kvDy1cH4/kaFAoU7en3dzDiG1T+O+4r6PKa0hM="; 12 + cargoSha256 = "sha256-WmWH/x69H17uHQEB0+GRUtApJnSEkoeFLLweP8NoBrk="; 13 13 14 14 meta = with lib; { 15 15 description = "Trusty terminal typing tester";
+2 -2
pkgs/applications/networking/cluster/arkade/default.nix
··· 6 6 7 7 buildGoModule rec { 8 8 pname = "arkade"; 9 - version = "0.8.20"; 9 + version = "0.8.22"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "alexellis"; 13 13 repo = "arkade"; 14 14 rev = version; 15 - sha256 = "sha256-DIXvsYYckNlxFzeJqk3TYRQIAtafAfylyDc/a20kl+0="; 15 + sha256 = "sha256-mn/UX2xNMthCtXYFUXqiiPnMltwO2Hk/qveudEYAOZ0="; 16 16 }; 17 17 18 18 CGO_ENABLED = 0;
+1 -1
pkgs/development/libraries/netcdf/default.nix
··· 60 60 remove-references-to -t ${stdenv.cc} "$(readlink -f $out/lib/libnetcdf.settings)" 61 61 ''; 62 62 63 - doCheck = !mpiSupport; 63 + doCheck = !(mpiSupport || (stdenv.isDarwin && stdenv.isAarch64)); 64 64 65 65 meta = { 66 66 description = "Libraries for the Unidata network Common Data Format";
+12 -3
pkgs/development/python-modules/adb-shell/default.nix
··· 28 28 }; 29 29 30 30 propagatedBuildInputs = [ 31 - aiofiles 32 31 cryptography 33 - libusb1 34 32 pyasn1 35 33 rsa 36 34 ]; 35 + 36 + passthru.extras-require = { 37 + async = [ 38 + aiofiles 39 + ]; 40 + usb = [ 41 + libusb1 42 + ]; 43 + }; 37 44 38 45 checkInputs = [ 39 46 mock 40 47 pycryptodome 41 48 pytestCheckHook 42 - ]; 49 + ] 50 + ++ passthru.extras-require.async 51 + ++ passthru.extras-require.usb; 43 52 44 53 disabledTests = lib.optionals (pythonAtLeast "3.10") [ 45 54 # Tests are failing with Python 3.10
+10 -2
pkgs/development/python-modules/androidtv/default.nix
··· 25 25 26 26 propagatedBuildInputs = [ 27 27 adb-shell 28 - aiofiles 29 28 pure-python-adb 30 29 ]; 30 + 31 + passthru.extras-require = { 32 + async = [ 33 + aiofiles 34 + ]; 35 + inherit (adb-shell.extras-require) usb; 36 + }; 31 37 32 38 checkInputs = [ 33 39 mock 34 40 pytestCheckHook 35 - ]; 41 + ] 42 + ++ passthru.extras-require.async 43 + ++ passthru.extras-require.usb; 36 44 37 45 disabledTests = [ 38 46 # Requires git but fails anyway
+25 -6
pkgs/development/python-modules/pure-python-adb/default.nix
··· 1 - { aiofiles, buildPythonPackage, fetchPypi, lib, pythonOlder }: 1 + { aiofiles 2 + , buildPythonPackage 3 + , fetchPypi 4 + , lib 5 + , pythonOlder 6 + , pytestCheckHook 7 + }: 2 8 3 9 buildPythonPackage rec { 4 10 pname = "pure-python-adb"; ··· 17 11 sha256 = "0kdr7w2fhgjpcf1k3l6an9im583iqkr6v8hb4q1zw30nh3bqkk0f"; 18 12 }; 19 13 20 - propagatedBuildInputs = [ aiofiles ]; 21 - # Disable tests as they require docker, docker-compose and a dedicated 22 - # android emulator 23 - doCheck = false; 24 - pythonImportsCheck = [ "ppadb.client" "ppadb.client_async" ]; 14 + passthru.extras-require = { 15 + async = [ 16 + aiofiles 17 + ]; 18 + }; 19 + 20 + doCheck = pythonOlder "3.10"; # all tests result in RuntimeError on 3.10 21 + 22 + checkInputs = [ 23 + pytestCheckHook 24 + ] 25 + ++ passthru.extras-require.async; 26 + 27 + pythonImportsCheck = [ 28 + "ppadb.client" 29 + ] ++ lib.optionals doCheck [ 30 + "ppadb.client_async" 31 + ]; 25 32 26 33 meta = with lib; { 27 34 description = "Pure python implementation of the adb client";
+30
pkgs/development/python-modules/py3rijndael/default.nix
··· 1 + { lib 2 + , buildPythonPackage 3 + , fetchPypi 4 + , pytestCheckHook 5 + }: 6 + 7 + let 8 + pname = "py3rijndael"; 9 + version = "0.3.3"; 10 + in 11 + buildPythonPackage { 12 + inherit pname version; 13 + format = "setuptools"; 14 + 15 + src = fetchPypi { 16 + inherit pname version; 17 + hash = "sha256-tmVaPr/zoQVA6u0EnoeI7qOsk9a3GzpqwrACJLvs6ag="; 18 + }; 19 + 20 + checkInputs = [ 21 + pytestCheckHook 22 + ]; 23 + 24 + meta = with lib; { 25 + description = "Rijndael algorithm library"; 26 + homepage = "https://github.com/meyt/py3rijndael"; 27 + license = licenses.mit; 28 + maintainers = with maintainers; [ hexa ]; 29 + }; 30 + }
+6 -2
pkgs/development/python-modules/pygatt/default.nix
··· 22 22 }; 23 23 24 24 propagatedBuildInputs = [ 25 - pexpect 26 25 pyserial 26 + ]; 27 + 28 + passthru.extras-require.GATTTOOL = [ 29 + pexpect 27 30 ]; 28 31 29 32 checkInputs = [ 30 33 mock 31 34 nose 32 35 pytestCheckHook 33 - ]; 36 + ] 37 + ++ passthru.extras-require.GATTTOOL; 34 38 35 39 postPatch = '' 36 40 # Not support for Python < 3.4
+8 -5
pkgs/development/python-modules/pytradfri/default.nix
··· 21 21 hash = "sha256-12ol+2CnoPfkxmDGJJAkoafHGpQuWC4lh0N7lSvx2DE="; 22 22 }; 23 23 24 - propagatedBuildInputs = [ 25 - aiocoap 26 - dtlssocket 27 - ]; 24 + passthru.extras-require = { 25 + async = [ 26 + aiocoap 27 + dtlssocket 28 + ]; 29 + }; 28 30 29 31 checkInputs = [ 30 32 pytestCheckHook 31 - ]; 33 + ] 34 + ++ passthru.extras-require.async; 32 35 33 36 pythonImportsCheck = [ 34 37 "pytradfri"
+11 -4
pkgs/development/python-modules/samsungctl/default.nix
··· 1 - { lib, buildPythonPackage, fetchPypi 1 + { lib 2 + , buildPythonPackage 3 + , fetchPypi 4 + 5 + # extra: websocket 2 6 , websocket-client 3 7 }: 4 8 ··· 15 11 sha256 = "0ipz3fd65rqkxlb02sql0awc3vnslrwb2pfrsnpfnf8bfgxpbh9g"; 16 12 }; 17 13 18 - propagatedBuildInputs = [ 19 - websocket-client 20 - ]; 14 + passthru.extras-require = { 15 + websocket = [ 16 + websocket-client 17 + ]; 18 + # interactive_ui requires curses package 19 + }; 21 20 22 21 # no tests 23 22 doCheck = false;
+42 -9
pkgs/development/python-modules/samsungtvws/default.nix
··· 1 - { lib, buildPythonPackage, fetchPypi, isPy27 2 - , aiohttp 1 + { lib 2 + , buildPythonPackage 3 + , fetchFromGitHub 4 + , isPy27 5 + 6 + # propagates: 3 7 , requests 4 8 , websocket-client 9 + 10 + # extras: async 11 + , aiohttp 5 12 , websockets 13 + 14 + # extras: encrypted 15 + , cryptography 16 + , py3rijndael 17 + 18 + # tests 19 + , aioresponses 20 + , pytest-asyncio 21 + , pytestCheckHook 6 22 }: 7 23 8 24 buildPythonPackage rec { 9 25 pname = "samsungtvws"; 10 26 version = "2.5.0"; 27 + format = "setuptools"; 11 28 disabled = isPy27; 12 29 13 - src = fetchPypi { 14 - inherit pname version; 15 - sha256 = "sha256-AFCN1b80GZ24g3oWe1qqc72yWQy4+/sorL8zwOYM7vo="; 30 + src = fetchFromGitHub { 31 + owner = "xchwarze"; 32 + repo = "samsung-tv-ws-api"; 33 + rev = "v${version}"; 34 + hash = "sha256-AimG5tyTRBETpivC2BwCuoR4o7y98YT6u5sogJlcmoo="; 16 35 }; 17 36 18 37 propagatedBuildInputs = [ 19 - aiohttp 20 38 requests 21 39 websocket-client 22 - websockets 23 40 ]; 24 41 25 - # no tests 26 - doCheck = false; 42 + passthru.extras-require = { 43 + async = [ 44 + aiohttp 45 + websockets 46 + ]; 47 + encrypted = [ 48 + cryptography 49 + py3rijndael 50 + ]; 51 + }; 52 + 53 + checkInputs = [ 54 + aioresponses 55 + pytest-asyncio 56 + pytestCheckHook 57 + ] 58 + ++ passthru.extras-require.async 59 + ++ passthru.extras-require.encrypted; 27 60 28 61 pythonImportsCheck = [ "samsungtvws" ]; 29 62
+5 -4
pkgs/development/tools/database/beekeeper-studio/default.nix
··· 2 2 3 3 let 4 4 pname = "beekeeper-studio"; 5 - version = "3.1.0"; 5 + version = "3.3.8"; 6 6 name = "${pname}-${version}"; 7 7 8 8 src = fetchurl { 9 9 url = "https://github.com/beekeeper-studio/beekeeper-studio/releases/download/v${version}/Beekeeper-Studio-${version}.AppImage"; 10 - name="${pname}-${version}.AppImage"; 11 - sha512 = "sha512:1zv4fclac94fzzhgqmjgc5pllxcxajjx6yjf3zblj53cc7m4sp4ydjx3wh4db57j75x8vh7xc3q1xpq6q3sj1dafnap0j0icfi6wznk"; 10 + name = "${pname}-${version}.AppImage"; 11 + sha512 = "sha512-riBKlvOzBovJhXUf7YX6SJKshxwGiQR0jyWHfJRkq9+WMspPkpXg4sJMXziARHaa6durXZtqCfzQ08HrfqA4Qg=="; 12 12 }; 13 13 14 14 appimageContents = appimageTools.extractType2 { 15 15 inherit name src; 16 16 }; 17 - in appimageTools.wrapType2 { 17 + in 18 + appimageTools.wrapType2 { 18 19 inherit name src; 19 20 20 21 multiPkgs = null; # no 32bit needed
+33
pkgs/development/tools/misc/acr/default.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + }: 5 + 6 + stdenv.mkDerivation rec { 7 + pname = "acr"; 8 + version = "2.0.0"; 9 + 10 + src = fetchFromGitHub { 11 + owner = "radareorg"; 12 + repo = "acr"; 13 + rev = version; 14 + hash = "sha256-ma4KhwGFlLCfRQvQ11OdyovgGbKQUBo6qVRrE7V2pNo="; 15 + }; 16 + 17 + preConfigure = '' 18 + chmod +x ./autogen.sh && ./autogen.sh 19 + ''; 20 + 21 + meta = with lib; { 22 + homepage = "https://github.com/radareorg/acr/"; 23 + description = "Pure shell autoconf replacement"; 24 + longDescription = '' 25 + ACR tries to replace autoconf functionality generating a full-compatible 26 + 'configure' script (runtime flags). But using shell-script instead of 27 + m4. This means that ACR is faster, smaller and easy to use. 28 + ''; 29 + license = licenses.gpl2Plus; 30 + maintainers = with maintainers; [ AndersonTorres ]; 31 + platforms = with platforms; all; 32 + }; 33 + }
+3 -3
pkgs/development/tools/rust/rust-analyzer/default.nix
··· 11 11 12 12 rustPlatform.buildRustPackage rec { 13 13 pname = "rust-analyzer-unwrapped"; 14 - version = "2022-04-04"; 15 - cargoSha256 = "sha256-5PA4EHCwuRO3uOK+Q+Lkp8Fs4MMlmOSOqdcEctkME4A="; 14 + version = "2022-04-11"; 15 + cargoSha256 = "sha256-pc8S+5g67vN9170ABiHGe1t4Go0F63UiOeLd71USYCI="; 16 16 17 17 src = fetchFromGitHub { 18 18 owner = "rust-analyzer"; 19 19 repo = "rust-analyzer"; 20 20 rev = version; 21 - sha256 = "sha256-ZzghqbLHMxAabG+RDu7Zniy8bJQMdtQVn3oLTnP3jLc="; 21 + sha256 = "sha256-miMIrDawSS1zXh6EuX03x5ACM2NTabksssSyutSNpjY="; 22 22 }; 23 23 24 24 patches = [
+3 -3
pkgs/development/tools/stylua/default.nix
··· 7 7 8 8 rustPlatform.buildRustPackage rec { 9 9 pname = "stylua"; 10 - version = "0.13.0"; 10 + version = "0.13.1"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "johnnymorganz"; 14 14 repo = pname; 15 15 rev = "v${version}"; 16 - sha256 = "sha256-Ecv6am4JT4cJKAApieOWQZG3XZkeCpmLrs6K7+4c8xA="; 16 + sha256 = "sha256-0Pl8SogCSZcboLHVAI45JqCLojAqIWBFuoZAK4gTzrs="; 17 17 }; 18 18 19 - cargoSha256 = "sha256-r09fTZTmOZQCI3qIWcnQnhUXYLVK8pF5y0y/dQl88CI="; 19 + cargoSha256 = "sha256-VFgA5kOwUJG0GgKU4AUYCB/psAPM2GdTz5oRFgkrNi8="; 20 20 21 21 buildFeatures = lib.optional lua52Support "lua52" 22 22 ++ lib.optional luauSupport "luau";
+1 -1
pkgs/os-specific/linux/plymouth/default.nix
··· 96 96 homepage = "https://www.freedesktop.org/wiki/Software/Plymouth/"; 97 97 description = "Boot splash and boot logger"; 98 98 license = licenses.gpl2Plus; 99 - maintainers = [ maintainers.goibhniu teams.gnome.members ]; 99 + maintainers = [ maintainers.goibhniu ] ++ teams.gnome.members; 100 100 platforms = platforms.linux; 101 101 }; 102 102 }
+3107 -1012
pkgs/servers/home-assistant/component-packages.nix
··· 4 4 { 5 5 version = "2022.4.0"; 6 6 components = { 7 - "abode" = ps: with ps; [ abodepy ]; 8 - "accuweather" = ps: with ps; [ accuweather ]; 9 - "acer_projector" = ps: with ps; [ pyserial ]; 10 - "acmeda" = ps: with ps; [ aiopulse ]; 11 - "actiontec" = ps: with ps; [ ]; 12 - "adax" = ps: with ps; [ adax-local adax ]; 13 - "adguard" = ps: with ps; [ adguardhome ]; 14 - "ads" = ps: with ps; [ pyads ]; 15 - "advantage_air" = ps: with ps; [ advantage-air ]; 16 - "aemet" = ps: with ps; [ aemet-opendata ]; 17 - "aftership" = ps: with ps; [ pyaftership ]; 18 - "agent_dvr" = ps: with ps; [ agent-py ]; 19 - "air_quality" = ps: with ps; [ ]; 20 - "airly" = ps: with ps; [ airly ]; 21 - "airnow" = ps: with ps; [ pyairnow ]; 22 - "airthings" = ps: with ps; [ airthings-cloud ]; 23 - "airtouch4" = ps: with ps; [ airtouch4pyapi ]; 24 - "airvisual" = ps: with ps; [ pyairvisual ]; 25 - "airzone" = ps: with ps; [ aioairzone ]; 26 - "aladdin_connect" = ps: with ps; [ aladdin-connect ]; 27 - "alarm_control_panel" = ps: with ps; [ ]; 28 - "alarmdecoder" = ps: with ps; [ adext ]; 29 - "alert" = ps: with ps; [ ]; 30 - "alexa" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 31 - "almond" = ps: with ps; [ aiohttp-cors pyalmond ]; 32 - "alpha_vantage" = ps: with ps; [ alpha-vantage ]; 33 - "amazon_polly" = ps: with ps; [ boto3 ]; 34 - "ambee" = ps: with ps; [ ambee ]; 35 - "amberelectric" = ps: with ps; [ amberelectric ]; 36 - "ambiclimate" = ps: with ps; [ aiohttp-cors ambiclimate ]; 37 - "ambient_station" = ps: with ps; [ aioambient ]; 38 - "amcrest" = ps: with ps; [ amcrest ha-ffmpeg ]; 39 - "ampio" = ps: with ps; [ asmog ]; 40 - "analytics" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ]; 41 - "android_ip_webcam" = ps: with ps; [ pydroid-ipcam ]; 42 - "androidtv" = ps: with ps; [ adb-shell androidtv pure-python-adb ]; 43 - "anel_pwrctrl" = ps: with ps; [ ]; # missing inputs: anel_pwrctrl-homeassistant 44 - "anthemav" = ps: with ps; [ ]; # missing inputs: anthemav 45 - "apache_kafka" = ps: with ps; [ aiokafka ]; 46 - "apcupsd" = ps: with ps; [ apcaccess ]; 47 - "api" = ps: with ps; [ aiohttp-cors ]; 48 - "apple_tv" = ps: with ps; [ aiohttp-cors ifaddr pyatv zeroconf ]; 49 - "apprise" = ps: with ps; [ apprise ]; 50 - "aprs" = ps: with ps; [ aprslib geopy ]; 51 - "aqualogic" = ps: with ps; [ aqualogic ]; 52 - "aquostv" = ps: with ps; [ ]; # missing inputs: sharp_aquos_rc 53 - "arcam_fmj" = ps: with ps; [ arcam-fmj ]; 54 - "arest" = ps: with ps; [ ]; 55 - "arlo" = ps: with ps; [ ha-ffmpeg pyarlo ]; 56 - "arris_tg2492lg" = ps: with ps; [ ]; # missing inputs: arris-tg2492lg 57 - "aruba" = ps: with ps; [ pexpect ]; 58 - "arwn" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 59 - "aseko_pool_live" = ps: with ps; [ aioaseko ]; 60 - "asterisk_cdr" = ps: with ps; [ asterisk-mbox ]; 61 - "asterisk_mbox" = ps: with ps; [ asterisk-mbox ]; 62 - "asuswrt" = ps: with ps; [ aioasuswrt ]; 63 - "atag" = ps: with ps; [ pyatag ]; 64 - "aten_pe" = ps: with ps; [ atenpdu ]; 65 - "atome" = ps: with ps; [ pyatome ]; 66 - "august" = ps: with ps; [ yalexs ]; 67 - "aurora" = ps: with ps; [ auroranoaa ]; 68 - "aurora_abb_powerone" = ps: with ps; [ aurorapy ]; 69 - "aussie_broadband" = ps: with ps; [ pyaussiebb ]; 70 - "auth" = ps: with ps; [ aiohttp-cors ]; 71 - "automation" = ps: with ps; [ aiohttp-cors ]; 72 - "avea" = ps: with ps; [ avea ]; 73 - "avion" = ps: with ps; [ avion ]; 74 - "awair" = ps: with ps; [ python-awair ]; 75 - "aws" = ps: with ps; [ aiobotocore ]; 76 - "axis" = ps: with ps; [ aiohttp-cors axis paho-mqtt ]; 77 - "azure_devops" = ps: with ps; [ aioazuredevops ]; 78 - "azure_event_hub" = ps: with ps; [ azure-eventhub ]; 79 - "azure_service_bus" = ps: with ps; [ azure-servicebus ]; 80 - "backup" = ps: with ps; [ aiohttp-cors ]; # missing inputs: securetar 81 - "baidu" = ps: with ps; [ ]; # missing inputs: baidu-aip 82 - "balboa" = ps: with ps; [ pybalboa ]; 83 - "bayesian" = ps: with ps; [ ]; 84 - "bbox" = ps: with ps; [ ]; # missing inputs: pybbox 85 - "beewi_smartclim" = ps: with ps; [ ]; # missing inputs: beewi_smartclim 86 - "binary_sensor" = ps: with ps; [ ]; 87 - "bitcoin" = ps: with ps; [ blockchain ]; 88 - "bizkaibus" = ps: with ps; [ bizkaibus ]; 89 - "blackbird" = ps: with ps; [ pyblackbird ]; 90 - "blebox" = ps: with ps; [ blebox-uniapi ]; 91 - "blink" = ps: with ps; [ blinkpy ]; 92 - "blinksticklight" = ps: with ps; [ BlinkStick ]; 93 - "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api 94 - "bloomsky" = ps: with ps; [ ]; 95 - "blueprint" = ps: with ps; [ ]; 96 - "bluesound" = ps: with ps; [ xmltodict ]; 97 - "bluetooth_le_tracker" = ps: with ps; [ pygatt ]; 98 - "bluetooth_tracker" = ps: with ps; [ bt-proximity pybluez ]; 99 - "bmw_connected_drive" = ps: with ps; [ bimmer-connected ]; 100 - "bond" = ps: with ps; [ bond-api ]; 101 - "bosch_shc" = ps: with ps; [ aiohttp-cors boschshcpy ifaddr zeroconf ]; 102 - "braviatv" = ps: with ps; [ bravia-tv ]; 103 - "broadlink" = ps: with ps; [ broadlink ]; 104 - "brother" = ps: with ps; [ brother ]; 105 - "brottsplatskartan" = ps: with ps; [ brottsplatskartan ]; 106 - "browser" = ps: with ps; [ ]; 107 - "brunt" = ps: with ps; [ ]; # missing inputs: brunt 108 - "bsblan" = ps: with ps; [ bsblan ]; 109 - "bt_home_hub_5" = ps: with ps; [ ]; # missing inputs: bthomehub5-devicelist 110 - "bt_smarthub" = ps: with ps; [ ]; # missing inputs: btsmarthub_devicelist 111 - "buienradar" = ps: with ps; [ buienradar ]; 112 - "button" = ps: with ps; [ ]; 113 - "caldav" = ps: with ps; [ caldav ]; 114 - "calendar" = ps: with ps; [ aiohttp-cors ]; 115 - "camera" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 116 - "canary" = ps: with ps; [ ha-ffmpeg py-canary ]; 117 - "cast" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa ifaddr mutagen plexapi plexauth plexwebsocket PyChromecast zeroconf ]; 118 - "cert_expiry" = ps: with ps; [ ]; 119 - "channels" = ps: with ps; [ pychannels ]; 120 - "circuit" = ps: with ps; [ circuit-webhook ]; 121 - "cisco_ios" = ps: with ps; [ pexpect ]; 122 - "cisco_mobility_express" = ps: with ps; [ ciscomobilityexpress ]; 123 - "cisco_webex_teams" = ps: with ps; [ webexteamssdk ]; 124 - "citybikes" = ps: with ps; [ ]; 125 - "clementine" = ps: with ps; [ ]; # missing inputs: python-clementine-remote 126 - "clickatell" = ps: with ps; [ ]; 127 - "clicksend" = ps: with ps; [ ]; 128 - "clicksend_tts" = ps: with ps; [ ]; 129 - "climacell" = ps: with ps; [ pyclimacell ]; # missing inputs: pytomorrowio 130 - "climate" = ps: with ps; [ ]; 131 - "cloud" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa ]; 132 - "cloudflare" = ps: with ps; [ pycfdns ]; 133 - "cmus" = ps: with ps; [ ]; # missing inputs: pycmus 134 - "co2signal" = ps: with ps; [ co2signal ]; 135 - "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase 136 - "color_extractor" = ps: with ps; [ colorthief ]; 137 - "comed_hourly_pricing" = ps: with ps; [ ]; 138 - "comfoconnect" = ps: with ps; [ pycomfoconnect ]; 139 - "command_line" = ps: with ps; [ ]; 140 - "compensation" = ps: with ps; [ numpy ]; 141 - "concord232" = ps: with ps; [ ]; # missing inputs: concord232 142 - "config" = ps: with ps; [ aiohttp-cors ]; 143 - "configurator" = ps: with ps; [ ]; 144 - "control4" = ps: with ps; [ pycontrol4 ]; 145 - "conversation" = ps: with ps; [ aiohttp-cors ]; 146 - "coolmaster" = ps: with ps; [ pycoolmasternet-async ]; 147 - "coronavirus" = ps: with ps; [ coronavirus ]; 148 - "counter" = ps: with ps; [ ]; 149 - "cover" = ps: with ps; [ ]; 150 - "cppm_tracker" = ps: with ps; [ ]; # missing inputs: clearpasspy 151 - "cpuspeed" = ps: with ps; [ py-cpuinfo ]; 152 - "crownstone" = ps: with ps; [ aiohttp-cors crownstone-cloud crownstone-sse crownstone-uart pyserial pyudev ]; 153 - "cups" = ps: with ps; [ pycups ]; 154 - "currencylayer" = ps: with ps; [ ]; 155 - "daikin" = ps: with ps; [ pydaikin ]; 156 - "danfoss_air" = ps: with ps; [ pydanfossair ]; 157 - "darksky" = ps: with ps; [ python-forecastio ]; 158 - "datadog" = ps: with ps; [ datadog ]; 159 - "ddwrt" = ps: with ps; [ ]; 160 - "debugpy" = ps: with ps; [ debugpy ]; 161 - "deconz" = ps: with ps; [ pydeconz ]; 162 - "decora" = ps: with ps; [ bluepy ]; # missing inputs: decora 163 - "decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi 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 ]; 165 - "delijn" = ps: with ps; [ pydelijn ]; 166 - "deluge" = ps: with ps; [ deluge-client ]; 167 - "demo" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ]; 168 - "denon" = ps: with ps; [ ]; 169 - "denonavr" = ps: with ps; [ denonavr ]; 170 - "derivative" = ps: with ps; [ ]; 171 - "deutsche_bahn" = ps: with ps; [ schiene ]; 172 - "device_automation" = ps: with ps; [ ]; 173 - "device_sun_light_trigger" = ps: with ps; [ aiohttp-cors pillow ]; 174 - "device_tracker" = ps: with ps; [ ]; 175 - "devolo_home_control" = ps: with ps; [ aiohttp-cors devolo-home-control-api ifaddr zeroconf ]; 176 - "devolo_home_network" = ps: with ps; [ devolo-plc-api ]; 177 - "dexcom" = ps: with ps; [ pydexcom ]; 178 - "dhcp" = ps: with ps; [ aiodiscover scapy ]; 179 - "diagnostics" = ps: with ps; [ aiohttp-cors ]; 180 - "dialogflow" = ps: with ps; [ aiohttp-cors ]; 181 - "digital_ocean" = ps: with ps; [ digital-ocean ]; 182 - "digitalloggers" = ps: with ps; [ ]; # missing inputs: dlipower 183 - "directv" = ps: with ps; [ directv ]; 184 - "discogs" = ps: with ps; [ discogs-client ]; 185 - "discord" = ps: with ps; [ nextcord ]; 186 - "discovery" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ]; 187 - "dlib_face_detect" = ps: with ps; [ face_recognition ]; 188 - "dlib_face_identify" = ps: with ps; [ face_recognition ]; 189 - "dlink" = ps: with ps; [ ]; # missing inputs: pyW215 190 - "dlna_dmr" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ]; 191 - "dlna_dms" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ]; 192 - "dnsip" = ps: with ps; [ aiodns ]; 193 - "dominos" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pizzapi 194 - "doods" = ps: with ps; [ pillow pydoods ]; 195 - "doorbird" = ps: with ps; [ aiohttp-cors doorbirdpy ]; 196 - "dovado" = ps: with ps; [ ]; # missing inputs: dovado 197 - "downloader" = ps: with ps; [ ]; 198 - "dsmr" = ps: with ps; [ dsmr-parser ]; 199 - "dsmr_reader" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 200 - "dte_energy_bridge" = ps: with ps; [ ]; 201 - "dublin_bus_transport" = ps: with ps; [ ]; 202 - "duckdns" = ps: with ps; [ ]; 203 - "dunehd" = ps: with ps; [ pdunehd ]; 204 - "dwd_weather_warnings" = ps: with ps; [ dwdwfsapi ]; 205 - "dweet" = ps: with ps; [ ]; # missing inputs: dweepy 206 - "dynalite" = ps: with ps; [ dynalite-devices ]; 207 - "eafm" = ps: with ps; [ aioeafm ]; 208 - "ebox" = ps: with ps; [ ]; # missing inputs: pyebox 209 - "ebusd" = ps: with ps; [ ]; # missing inputs: ebusdpy 210 - "ecoal_boiler" = ps: with ps; [ ecoaliface ]; 211 - "ecobee" = ps: with ps; [ python-ecobee-api ]; 212 - "econet" = ps: with ps; [ pyeconet ]; 213 - "ecovacs" = ps: with ps; [ ]; # missing inputs: sucks 214 - "eddystone_temperature" = ps: with ps; [ construct ]; # missing inputs: beacontools 215 - "edimax" = ps: with ps; [ pyedimax ]; 216 - "edl21" = ps: with ps; [ pysml ]; 217 - "efergy" = ps: with ps; [ pyefergy ]; 218 - "egardia" = ps: with ps; [ pythonegardia ]; 219 - "eight_sleep" = ps: with ps; [ pyeight ]; 220 - "elgato" = ps: with ps; [ elgato ]; 221 - "eliqonline" = ps: with ps; [ eliqonline ]; 222 - "elkm1" = ps: with ps; [ aiohttp-cors elkm1-lib ifaddr ]; 223 - "elmax" = ps: with ps; [ elmax-api ]; 224 - "elv" = ps: with ps; [ pypca ]; 225 - "emby" = ps: with ps; [ pyemby ]; 226 - "emoncms" = ps: with ps; [ ]; 227 - "emoncms_history" = ps: with ps; [ ]; 228 - "emonitor" = ps: with ps; [ aioemonitor ]; 229 - "emulated_hue" = ps: with ps; [ aiohttp-cors ifaddr ]; 230 - "emulated_kasa" = ps: with ps; [ sense-energy ]; 231 - "emulated_roku" = ps: with ps; [ aiohttp-cors emulated-roku ifaddr ]; 232 - "energy" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ]; 233 - "enigma2" = ps: with ps; [ openwebifpy ]; 234 - "enocean" = ps: with ps; [ enocean ]; 235 - "enphase_envoy" = ps: with ps; [ envoy-reader ]; 236 - "entur_public_transport" = ps: with ps; [ enturclient ]; 237 - "environment_canada" = ps: with ps; [ env-canada ]; 238 - "envisalink" = ps: with ps; [ pyenvisalink ]; 239 - "ephember" = ps: with ps; [ pyephember ]; 240 - "epson" = ps: with ps; [ epson-projector ]; 241 - "epsonworkforce" = ps: with ps; [ ]; # missing inputs: epsonprinter 242 - "eq3btsmart" = ps: with ps; [ construct ]; # missing inputs: python-eq3bt 243 - "esphome" = ps: with ps; [ aioesphomeapi aiohttp-cors ifaddr zeroconf ]; 244 - "etherscan" = ps: with ps; [ ]; # missing inputs: python-etherscan-api 245 - "eufy" = ps: with ps; [ ]; # missing inputs: lakeside 246 - "everlights" = ps: with ps; [ pyeverlights ]; 247 - "evil_genius_labs" = ps: with ps; [ pyevilgenius ]; 248 - "evohome" = ps: with ps; [ evohome-async ]; 249 - "ezviz" = ps: with ps; [ ha-ffmpeg pyezviz ]; 250 - "faa_delays" = ps: with ps; [ faadelays ]; 251 - "facebook" = ps: with ps; [ ]; 252 - "facebox" = ps: with ps; [ ]; 253 - "fail2ban" = ps: with ps; [ ]; 254 - "familyhub" = ps: with ps; [ ]; # missing inputs: python-family-hub-local 255 - "fan" = ps: with ps; [ ]; 256 - "fastdotcom" = ps: with ps; [ ]; # missing inputs: fastdotcom 257 - "feedreader" = ps: with ps; [ feedparser ]; 258 - "ffmpeg" = ps: with ps; [ ha-ffmpeg ]; 259 - "ffmpeg_motion" = ps: with ps; [ ha-ffmpeg ]; 260 - "ffmpeg_noise" = ps: with ps; [ ha-ffmpeg ]; 261 - "fibaro" = ps: with ps; [ fiblary3-fork ]; 262 - "fido" = ps: with ps; [ pyfido ]; 263 - "file" = ps: with ps; [ ]; 264 - "filesize" = ps: with ps; [ ]; 265 - "filter" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 266 - "fints" = ps: with ps; [ fints ]; 267 - "fireservicerota" = ps: with ps; [ pyfireservicerota ]; 268 - "firmata" = ps: with ps; [ pymata-express ]; 269 - "fitbit" = ps: with ps; [ aiohttp-cors fitbit ]; 270 - "fivem" = ps: with ps; [ ]; # missing inputs: fivem-api 271 - "fixer" = ps: with ps; [ fixerio ]; 272 - "fjaraskupan" = ps: with ps; [ fjaraskupan ]; 273 - "fleetgo" = ps: with ps; [ ritassist ]; 274 - "flexit" = ps: with ps; [ pymodbus ]; 275 - "flic" = ps: with ps; [ pyflic ]; 276 - "flick_electric" = ps: with ps; [ pyflick ]; 277 - "flipr" = ps: with ps; [ flipr-api ]; 278 - "flo" = ps: with ps; [ aioflo ]; 279 - "flock" = ps: with ps; [ ]; 280 - "flume" = ps: with ps; [ pyflume ]; 281 - "flunearyou" = ps: with ps; [ pyflunearyou ]; 282 - "flux" = ps: with ps; [ ]; 283 - "flux_led" = ps: with ps; [ aiohttp-cors flux-led ifaddr ]; 284 - "folder" = ps: with ps; [ ]; 285 - "folder_watcher" = ps: with ps; [ watchdog ]; 286 - "foobot" = ps: with ps; [ foobot-async ]; 287 - "forecast_solar" = ps: with ps; [ forecast-solar ]; 288 - "forked_daapd" = ps: with ps; [ ]; # missing inputs: pyforked-daapd pylibrespot-java 289 - "fortios" = ps: with ps; [ fortiosapi ]; 290 - "foscam" = ps: with ps; [ libpyfoscam ]; 291 - "foursquare" = ps: with ps; [ aiohttp-cors ]; 292 - "free_mobile" = ps: with ps; [ ]; # missing inputs: freesms 293 - "freebox" = ps: with ps; [ freebox-api ]; 294 - "freedns" = ps: with ps; [ ]; 295 - "freedompro" = ps: with ps; [ pyfreedompro ]; 296 - "fritz" = ps: with ps; [ aiohttp-cors fritzconnection ifaddr xmltodict ]; 297 - "fritzbox" = ps: with ps; [ pyfritzhome ]; 298 - "fritzbox_callmonitor" = ps: with ps; [ fritzconnection ]; 299 - "fronius" = ps: with ps; [ pyfronius ]; 300 - "frontend" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 301 - "frontier_silicon" = ps: with ps; [ afsapi ]; 302 - "futurenow" = ps: with ps; [ pyfnip ]; 303 - "garadget" = ps: with ps; [ ]; 304 - "garages_amsterdam" = ps: with ps; [ garages-amsterdam ]; 305 - "gc100" = ps: with ps; [ ]; # missing inputs: python-gc100 306 - "gdacs" = ps: with ps; [ aio-georss-gdacs ]; 307 - "generic" = ps: with ps; [ av pillow ]; 308 - "generic_hygrostat" = ps: with ps; [ ]; 309 - "generic_thermostat" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 310 - "geniushub" = ps: with ps; [ geniushub-client ]; 311 - "geo_json_events" = ps: with ps; [ ]; # missing inputs: aio_geojson_generic_client 312 - "geo_location" = ps: with ps; [ ]; 313 - "geo_rss_events" = ps: with ps; [ georss-generic-client ]; 314 - "geofency" = ps: with ps; [ aiohttp-cors ]; 315 - "geonetnz_quakes" = ps: with ps; [ aio-geojson-geonetnz-quakes ]; 316 - "geonetnz_volcano" = ps: with ps; [ aio-geojson-geonetnz-volcano ]; 317 - "gios" = ps: with ps; [ gios ]; 318 - "github" = ps: with ps; [ aiogithubapi ]; 319 - "gitlab_ci" = ps: with ps; [ python-gitlab ]; 320 - "gitter" = ps: with ps; [ ]; # missing inputs: gitterpy 321 - "glances" = ps: with ps; [ glances-api ]; 322 - "goalfeed" = ps: with ps; [ ]; # missing inputs: pysher 323 - "goalzero" = ps: with ps; [ goalzero ]; 324 - "gogogate2" = ps: with ps; [ ismartgate ]; 325 - "goodwe" = ps: with ps; [ goodwe ]; 326 - "google" = ps: with ps; [ aiohttp-cors google-api-python-client httplib2 oauth2client ]; 327 - "google_assistant" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 328 - "google_cloud" = ps: with ps; [ google-cloud-texttospeech ]; 329 - "google_domains" = ps: with ps; [ ]; 330 - "google_maps" = ps: with ps; [ locationsharinglib ]; 331 - "google_pubsub" = ps: with ps; [ google-cloud-pubsub ]; 332 - "google_translate" = ps: with ps; [ gtts ]; 333 - "google_travel_time" = ps: with ps; [ googlemaps ]; 334 - "google_wifi" = ps: with ps; [ ]; 335 - "gpsd" = ps: with ps; [ gps3 ]; 336 - "gpslogger" = ps: with ps; [ aiohttp-cors ]; 337 - "graphite" = ps: with ps; [ ]; 338 - "gree" = ps: with ps; [ greeclimate ]; 339 - "greeneye_monitor" = ps: with ps; [ ]; # missing inputs: greeneye_monitor 340 - "greenwave" = ps: with ps; [ ]; # missing inputs: greenwavereality 341 - "group" = ps: with ps; [ ]; 342 - "growatt_server" = ps: with ps; [ growattserver ]; 343 - "gstreamer" = ps: with ps; [ ]; # missing inputs: gstreamer-player 344 - "gtfs" = ps: with ps; [ pygtfs ]; 345 - "guardian" = ps: with ps; [ aioguardian ]; 346 - "habitica" = ps: with ps; [ habitipy ]; 347 - "hangouts" = ps: with ps; [ hangups ]; 348 - "harman_kardon_avr" = ps: with ps; [ ]; # missing inputs: hkavr 349 - "harmony" = ps: with ps; [ aioharmony ]; 350 - "hassio" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 351 - "haveibeenpwned" = ps: with ps; [ ]; 352 - "hddtemp" = ps: with ps; [ ]; 353 - "hdmi_cec" = ps: with ps; [ pycec ]; 354 - "heatmiser" = ps: with ps; [ ]; # missing inputs: heatmiserV3 355 - "heos" = ps: with ps; [ pyheos ]; 356 - "here_travel_time" = ps: with ps; [ herepy ]; 357 - "hikvision" = ps: with ps; [ ]; # missing inputs: pyhik 358 - "hikvisioncam" = ps: with ps; [ hikvision ]; 359 - "hisense_aehw4a1" = ps: with ps; [ pyaehw4a1 ]; 360 - "history" = ps: with ps; [ aiohttp-cors fnvhash lru-dict sqlalchemy ]; 361 - "history_stats" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 362 - "hitron_coda" = ps: with ps; [ ]; 363 - "hive" = ps: with ps; [ pyhiveapi ]; 364 - "hlk_sw16" = ps: with ps; [ hlk-sw16 ]; 365 - "home_connect" = ps: with ps; [ aiohttp-cors homeconnect ]; 366 - "home_plus_control" = ps: with ps; [ aiohttp-cors homepluscontrol ]; 367 - "homeassistant" = ps: with ps; [ ]; 368 - "homekit" = ps: with ps; [ hap-python pyqrcode pyturbojpeg aiohttp-cors base36 fnvhash ha-ffmpeg ifaddr zeroconf ]; 369 - "homekit_controller" = ps: with ps; [ aiohomekit aiohttp-cors ifaddr zeroconf ]; 370 - "homematic" = ps: with ps; [ pyhomematic ]; 371 - "homematicip_cloud" = ps: with ps; [ homematicip ]; 372 - "homewizard" = ps: with ps; [ aiohwenergy ]; 373 - "homeworks" = ps: with ps; [ pyhomeworks ]; 374 - "honeywell" = ps: with ps; [ somecomfort ]; 375 - "horizon" = ps: with ps; [ ]; # missing inputs: horimote 376 - "hp_ilo" = ps: with ps; [ python-hpilo ]; 377 - "html5" = ps: with ps; [ aiohttp-cors pywebpush ]; 378 - "http" = ps: with ps; [ aiohttp-cors ]; 379 - "huawei_lte" = ps: with ps; [ huawei-lte-api stringcase url-normalize ]; 380 - "hue" = ps: with ps; [ aiohue ]; 381 - "huisbaasje" = ps: with ps; [ huisbaasje-client ]; 382 - "humidifier" = ps: with ps; [ ]; 383 - "hunterdouglas_powerview" = ps: with ps; [ aiopvapi ]; 384 - "hvv_departures" = ps: with ps; [ pygti ]; 385 - "hydrawise" = ps: with ps; [ hydrawiser ]; 386 - "hyperion" = ps: with ps; [ hyperion-py ]; 387 - "ialarm" = ps: with ps; [ pyialarm ]; 388 - "iammeter" = ps: with ps; [ ]; # missing inputs: iammeter 389 - "iaqualink" = ps: with ps; [ iaqualink ]; 390 - "icloud" = ps: with ps; [ pyicloud ]; 391 - "idteck_prox" = ps: with ps; [ ]; # missing inputs: rfk101py 392 - "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ]; 393 - "iglo" = ps: with ps; [ ]; # missing inputs: iglo 394 - "ign_sismologia" = ps: with ps; [ georss-ign-sismologia-client ]; 395 - "ihc" = ps: with ps; [ defusedxml ]; # missing inputs: ihcsdk 396 - "image" = ps: with ps; [ aiohttp-cors pillow ]; 397 - "image_processing" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 398 - "imap" = ps: with ps; [ aioimaplib ]; 399 - "imap_email_content" = ps: with ps; [ ]; 400 - "incomfort" = ps: with ps; [ incomfort-client ]; 401 - "influxdb" = ps: with ps; [ influxdb-client influxdb ]; 402 - "input_boolean" = ps: with ps; [ ]; 403 - "input_button" = ps: with ps; [ ]; 404 - "input_datetime" = ps: with ps; [ ]; 405 - "input_number" = ps: with ps; [ ]; 406 - "input_select" = ps: with ps; [ ]; 407 - "input_text" = ps: with ps; [ ]; 408 - "insteon" = ps: with ps; [ pyinsteon ]; 409 - "integration" = ps: with ps; [ ]; 410 - "intellifire" = ps: with ps; [ intellifire4py ]; 411 - "intent" = ps: with ps; [ aiohttp-cors ]; 412 - "intent_script" = ps: with ps; [ ]; 413 - "intesishome" = ps: with ps; [ pyintesishome ]; 414 - "ios" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ]; 415 - "iotawatt" = ps: with ps; [ iotawattpy ]; 416 - "iperf3" = ps: with ps; [ ]; # missing inputs: iperf3 417 - "ipma" = ps: with ps; [ pyipma ]; 418 - "ipp" = ps: with ps; [ pyipp ]; 419 - "iqvia" = ps: with ps; [ numpy pyiqvia ]; 420 - "irish_rail_transport" = ps: with ps; [ ]; # missing inputs: pyirishrail 421 - "islamic_prayer_times" = ps: with ps; [ prayer-times-calculator ]; 422 - "iss" = ps: with ps; [ ]; # missing inputs: pyiss 423 - "isy994" = ps: with ps; [ pyisy ]; 424 - "itach" = ps: with ps; [ ]; # missing inputs: pyitachip2ir 425 - "itunes" = ps: with ps; [ ]; 426 - "izone" = ps: with ps; [ python-izone ]; 427 - "jellyfin" = ps: with ps; [ jellyfin-apiclient-python ]; 428 - "jewish_calendar" = ps: with ps; [ hdate ]; 429 - "joaoapps_join" = ps: with ps; [ ]; # missing inputs: python-join-api 430 - "juicenet" = ps: with ps; [ python-juicenet ]; 431 - "kaiterra" = ps: with ps; [ ]; # missing inputs: kaiterra-async-client 432 - "kaleidescape" = ps: with ps; [ ]; # missing inputs: pykaleidescape 433 - "kankun" = ps: with ps; [ ]; 434 - "keba" = ps: with ps; [ ]; # missing inputs: keba-kecontact 435 - "keenetic_ndms2" = ps: with ps; [ ndms2-client ]; 436 - "kef" = ps: with ps; [ aiokef getmac ]; 437 - "keyboard" = ps: with ps; [ ]; # missing inputs: pyuserinput 438 - "keyboard_remote" = ps: with ps; [ aionotify evdev ]; 439 - "kira" = ps: with ps; [ pykira ]; 440 - "kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client 441 - "kmtronic" = ps: with ps; [ pykmtronic ]; 442 - "knx" = ps: with ps; [ xknx ]; 443 - "kodi" = ps: with ps; [ aiohttp-cors pykodi ]; 444 - "konnected" = ps: with ps; [ aiohttp-cors konnected ]; 445 - "kostal_plenticore" = ps: with ps; [ ]; # missing inputs: kostal_plenticore 446 - "kraken" = ps: with ps; [ krakenex pykrakenapi ]; 447 - "kulersky" = ps: with ps; [ pykulersky ]; 448 - "kwb" = ps: with ps; [ ]; # missing inputs: pykwb 449 - "lacrosse" = ps: with ps; [ pylacrosse ]; 450 - "lametric" = ps: with ps; [ lmnotify ]; 451 - "lannouncer" = ps: with ps; [ ]; 452 - "lastfm" = ps: with ps; [ pylast ]; 453 - "launch_library" = ps: with ps; [ pylaunches ]; 454 - "lcn" = ps: with ps; [ pypck ]; 455 - "lg_netcast" = ps: with ps; [ pylgnetcast ]; 456 - "lg_soundbar" = ps: with ps; [ temescal ]; 457 - "life360" = ps: with ps; [ life360 ]; 458 - "lifx" = ps: with ps; [ aiolifx aiolifx-effects ]; 459 - "lifx_cloud" = ps: with ps; [ ]; 460 - "light" = ps: with ps; [ ]; 461 - "lightwave" = ps: with ps; [ lightwave ]; 462 - "limitlessled" = ps: with ps; [ limitlessled ]; 463 - "linksys_smart" = ps: with ps; [ ]; 464 - "linode" = ps: with ps; [ linode-api ]; 465 - "linux_battery" = ps: with ps; [ batinfo ]; 466 - "lirc" = ps: with ps; [ ]; # missing inputs: python-lirc 467 - "litejet" = ps: with ps; [ ]; # missing inputs: pylitejet 468 - "litterrobot" = ps: with ps; [ pylitterbot ]; 469 - "llamalab_automate" = ps: with ps; [ ]; 470 - "local_file" = ps: with ps; [ ]; 471 - "local_ip" = ps: with ps; [ aiohttp-cors ifaddr ]; 472 - "locative" = ps: with ps; [ aiohttp-cors ]; 473 - "lock" = ps: with ps; [ ]; 474 - "logbook" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 475 - "logentries" = ps: with ps; [ ]; 476 - "logger" = ps: with ps; [ ]; 477 - "logi_circle" = ps: with ps; [ aiohttp-cors ha-ffmpeg ]; # missing inputs: logi_circle 478 - "london_air" = ps: with ps; [ ]; 479 - "london_underground" = ps: with ps; [ ]; # missing inputs: london-tube-status 480 - "lookin" = ps: with ps; [ aiolookin ]; 481 - "lovelace" = ps: with ps; [ ]; 482 - "luci" = ps: with ps; [ openwrt-luci-rpc ]; 483 - "luftdaten" = ps: with ps; [ luftdaten ]; 484 - "lupusec" = ps: with ps; [ lupupy ]; 485 - "lutron" = ps: with ps; [ pylutron ]; 486 - "lutron_caseta" = ps: with ps; [ pylutron-caseta ]; 487 - "lw12wifi" = ps: with ps; [ ]; # missing inputs: lw12 488 - "lyric" = ps: with ps; [ aiohttp-cors aiolyric ]; 489 - "magicseaweed" = ps: with ps; [ ]; # missing inputs: magicseaweed 490 - "mailbox" = ps: with ps; [ aiohttp-cors ]; 491 - "mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner 492 - "manual" = ps: with ps; [ ]; 493 - "manual_mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 494 - "map" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 495 - "marytts" = ps: with ps; [ ]; # missing inputs: speak2mary 496 - "mastodon" = ps: with ps; [ mastodon-py ]; 497 - "matrix" = ps: with ps; [ matrix-client ]; 498 - "maxcube" = ps: with ps; [ maxcube-api ]; 499 - "mazda" = ps: with ps; [ pymazda ]; 500 - "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ]; 501 - "media_player" = ps: with ps; [ aiohttp-cors ]; 502 - "media_source" = ps: with ps; [ aiohttp-cors ]; 503 - "mediaroom" = ps: with ps; [ pymediaroom ]; 504 - "melcloud" = ps: with ps; [ pymelcloud ]; 505 - "melissa" = ps: with ps; [ ]; # missing inputs: py-melissa-climate 506 - "meraki" = ps: with ps; [ aiohttp-cors ]; 507 - "message_bird" = ps: with ps; [ ]; # missing inputs: messagebird 508 - "met" = ps: with ps; [ pymetno ]; 509 - "met_eireann" = ps: with ps; [ pymeteireann ]; 510 - "meteo_france" = ps: with ps; [ ]; # missing inputs: meteofrance-api 511 - "meteoalarm" = ps: with ps; [ meteoalertapi ]; 512 - "meteoclimatic" = ps: with ps; [ pymeteoclimatic ]; 513 - "metoffice" = ps: with ps; [ ]; # missing inputs: datapoint 514 - "mfi" = ps: with ps; [ ]; # missing inputs: mficlient 515 - "microsoft" = ps: with ps; [ ]; # missing inputs: pycsspeechtts 516 - "microsoft_face" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 517 - "microsoft_face_detect" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 518 - "microsoft_face_identify" = ps: with ps; [ pyturbojpeg aiohttp-cors ]; 519 - "miflora" = ps: with ps; [ bluepy ]; # missing inputs: miflora 520 - "mikrotik" = ps: with ps; [ librouteros ]; 521 - "mill" = ps: with ps; [ mill-local millheater ]; 522 - "min_max" = ps: with ps; [ ]; 523 - "minecraft_server" = ps: with ps; [ aiodns getmac mcstatus ]; 524 - "minio" = ps: with ps; [ minio ]; 525 - "mitemp_bt" = ps: with ps; [ ]; # missing inputs: mitemp_bt 526 - "mjpeg" = ps: with ps; [ ]; 527 - "mobile_app" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa pillow ]; 528 - "mochad" = ps: with ps; [ ]; # missing inputs: pymochad 529 - "modbus" = ps: with ps; [ pymodbus ]; 530 - "modem_callerid" = ps: with ps; [ aiohttp-cors phone-modem pyserial pyudev ]; 531 - "modern_forms" = ps: with ps; [ aiomodernforms ]; 532 - "moehlenhoff_alpha2" = ps: with ps; [ ]; # missing inputs: moehlenhoff-alpha2 533 - "mold_indicator" = ps: with ps; [ ]; 534 - "monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice 535 - "moon" = ps: with ps; [ ]; 536 - "motion_blinds" = ps: with ps; [ aiohttp-cors ifaddr motionblinds ]; 537 - "motioneye" = ps: with ps; [ aiohttp-cors motioneye-client ]; 538 - "mpd" = ps: with ps; [ mpd2 ]; 539 - "mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 540 - "mqtt_eventstream" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 541 - "mqtt_json" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 542 - "mqtt_room" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 543 - "mqtt_statestream" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 544 - "msteams" = ps: with ps; [ pymsteams ]; 545 - "mullvad" = ps: with ps; [ mullvad-api ]; 546 - "mutesync" = ps: with ps; [ mutesync ]; 547 - "mvglive" = ps: with ps; [ PyMVGLive ]; 548 - "my" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 549 - "mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi 550 - "myq" = ps: with ps; [ pymyq ]; 551 - "mysensors" = ps: with ps; [ aiohttp-cors paho-mqtt pymysensors ]; 552 - "mystrom" = ps: with ps; [ aiohttp-cors python-mystrom ]; 553 - "mythicbeastsdns" = ps: with ps; [ mbddns ]; 554 - "nad" = ps: with ps; [ nad-receiver ]; 555 - "nam" = ps: with ps; [ nettigo-air-monitor ]; 556 - "namecheapdns" = ps: with ps; [ defusedxml ]; 557 - "nanoleaf" = ps: with ps; [ aionanoleaf ]; 558 - "neato" = ps: with ps; [ aiohttp-cors pybotvac ]; 559 - "nederlandse_spoorwegen" = ps: with ps; [ nsapi ]; 560 - "ness_alarm" = ps: with ps; [ nessclient ]; 561 - "nest" = ps: with ps; [ aiohttp-cors google-nest-sdm ha-ffmpeg python-nest ]; 562 - "netatmo" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyatmo ]; 563 - "netdata" = ps: with ps; [ netdata ]; 564 - "netgear" = ps: with ps; [ pynetgear ]; 565 - "netgear_lte" = ps: with ps; [ eternalegypt ]; 566 - "netio" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pynetio 567 - "network" = ps: with ps; [ aiohttp-cors ifaddr ]; 568 - "neurio_energy" = ps: with ps; [ ]; # missing inputs: neurio 569 - "nexia" = ps: with ps; [ nexia ]; 570 - "nextbus" = ps: with ps; [ ]; # missing inputs: py_nextbusnext 571 - "nextcloud" = ps: with ps; [ nextcloudmonitor ]; 572 - "nfandroidtv" = ps: with ps; [ ]; # missing inputs: notifications-android-tv 573 - "nightscout" = ps: with ps; [ py-nightscout ]; 574 - "niko_home_control" = ps: with ps; [ niko-home-control ]; 575 - "nilu" = ps: with ps; [ niluclient ]; 576 - "nina" = ps: with ps; [ pynina ]; 577 - "nissan_leaf" = ps: with ps; [ pycarwings2 ]; 578 - "nmap_tracker" = ps: with ps; [ aiohttp-cors getmac ifaddr netmap ]; # missing inputs: mac-vendor-lookup 579 - "nmbs" = ps: with ps; [ ]; # missing inputs: pyrail 580 - "no_ip" = ps: with ps; [ ]; 581 - "noaa_tides" = ps: with ps; [ ]; # missing inputs: noaa-coops 582 - "norway_air" = ps: with ps; [ pymetno ]; 583 - "notify" = ps: with ps; [ ]; 584 - "notify_events" = ps: with ps; [ ]; # missing inputs: notify-events 585 - "notion" = ps: with ps; [ aionotion ]; 586 - "nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client 587 - "nsw_rural_fire_service_feed" = ps: with ps; [ aio-geojson-nsw-rfs-incidents ]; 588 - "nuheat" = ps: with ps; [ ]; # missing inputs: nuheat 589 - "nuki" = ps: with ps; [ pynuki ]; 590 - "numato" = ps: with ps; [ ]; # missing inputs: numato-gpio 591 - "number" = ps: with ps; [ ]; 592 - "nut" = ps: with ps; [ pynut2 ]; 593 - "nws" = ps: with ps; [ pynws ]; 594 - "nx584" = ps: with ps; [ pynx584 ]; 595 - "nzbget" = ps: with ps; [ ]; # missing inputs: pynzbgetapi 596 - "oasa_telematics" = ps: with ps; [ ]; # missing inputs: oasatelematics 597 - "obihai" = ps: with ps; [ pyobihai ]; 598 - "octoprint" = ps: with ps; [ pyoctoprintapi ]; 599 - "oem" = ps: with ps; [ oemthermostat ]; 600 - "ohmconnect" = ps: with ps; [ defusedxml ]; 601 - "ombi" = ps: with ps; [ pyombi ]; 602 - "omnilogic" = ps: with ps; [ omnilogic ]; 603 - "onboarding" = ps: with ps; [ aiohttp-cors fnvhash home-assistant-frontend lru-dict pillow sqlalchemy ]; 604 - "oncue" = ps: with ps; [ aiooncue ]; 605 - "ondilo_ico" = ps: with ps; [ aiohttp-cors ondilo ]; 606 - "onewire" = ps: with ps; [ pi1wire pyownet ]; 607 - "onkyo" = ps: with ps; [ onkyo-eiscp ]; 608 - "onvif" = ps: with ps; [ wsdiscovery ha-ffmpeg onvif-zeep-async ]; 609 - "open_meteo" = ps: with ps; [ open-meteo ]; 610 - "openalpr_cloud" = ps: with ps; [ ]; 611 - "openalpr_local" = ps: with ps; [ ]; 612 - "opencv" = ps: with ps; [ numpy ]; # missing inputs: opencv-python-headless 613 - "openerz" = ps: with ps; [ openerz-api ]; 614 - "openevse" = ps: with ps; [ openevsewifi ]; 615 - "openexchangerates" = ps: with ps; [ ]; 616 - "opengarage" = ps: with ps; [ open-garage ]; 617 - "openhardwaremonitor" = ps: with ps; [ ]; 618 - "openhome" = ps: with ps; [ openhomedevice ]; 619 - "opensensemap" = ps: with ps; [ opensensemap-api ]; 620 - "opensky" = ps: with ps; [ ]; 621 - "opentherm_gw" = ps: with ps; [ pyotgw ]; 622 - "openuv" = ps: with ps; [ pyopenuv ]; 623 - "openweathermap" = ps: with ps; [ pyowm ]; 624 - "opnsense" = ps: with ps; [ pyopnsense ]; 625 - "opple" = ps: with ps; [ ]; # missing inputs: pyoppleio 626 - "oru" = ps: with ps; [ ]; # missing inputs: oru 627 - "orvibo" = ps: with ps; [ orvibo ]; 628 - "osramlightify" = ps: with ps; [ ]; # missing inputs: lightify 629 - "otp" = ps: with ps; [ pyotp ]; 630 - "overkiz" = ps: with ps; [ pyoverkiz ]; 631 - "ovo_energy" = ps: with ps; [ ovoenergy ]; 632 - "owntracks" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa paho-mqtt ]; 633 - "p1_monitor" = ps: with ps; [ p1monitor ]; 634 - "panasonic_bluray" = ps: with ps; [ panacotta ]; 635 - "panasonic_viera" = ps: with ps; [ ]; # missing inputs: panasonic_viera 636 - "pandora" = ps: with ps; [ pexpect ]; 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 640 - "pencom" = ps: with ps; [ ]; # missing inputs: pencompy 641 - "persistent_notification" = ps: with ps; [ ]; 642 - "person" = ps: with ps; [ aiohttp-cors pillow ]; 643 - "philips_js" = ps: with ps; [ ha-philipsjs ]; 644 - "pi_hole" = ps: with ps; [ hole ]; 645 - "picnic" = ps: with ps; [ python-picnic-api ]; 646 - "picotts" = ps: with ps; [ ]; 647 - "pilight" = ps: with ps; [ ]; # missing inputs: pilight 648 - "ping" = ps: with ps; [ icmplib ]; 649 - "pioneer" = ps: with ps; [ ]; 650 - "pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2 651 - "plaato" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyplaato ]; 652 - "plant" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 653 - "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ]; 654 - "plugwise" = ps: with ps; [ plugwise ]; 655 - "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad 656 - "pocketcasts" = ps: with ps; [ ]; # missing inputs: pycketcasts 657 - "point" = ps: with ps; [ aiohttp-cors pypoint ]; 658 - "poolsense" = ps: with ps; [ poolsense ]; 659 - "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall 660 - "profiler" = ps: with ps; [ guppy3 objgraph pyprof2calltree ]; 661 - "progettihwsw" = ps: with ps; [ ]; # missing inputs: progettihwsw 662 - "proliphix" = ps: with ps; [ ]; # missing inputs: proliphix 663 - "prometheus" = ps: with ps; [ aiohttp-cors prometheus-client ]; 664 - "prosegur" = ps: with ps; [ pyprosegur ]; 665 - "prowl" = ps: with ps; [ ]; 666 - "proximity" = ps: with ps; [ ]; 667 - "proxmoxve" = ps: with ps; [ proxmoxer ]; 668 - "proxy" = ps: with ps; [ pillow ]; 669 - "ps4" = ps: with ps; [ ]; # missing inputs: pyps4-2ndscreen 670 - "pulseaudio_loopback" = ps: with ps; [ pulsectl ]; 671 - "pure_energie" = ps: with ps; [ gridnet ]; 672 - "push" = ps: with ps; [ aiohttp-cors ]; 673 - "pushbullet" = ps: with ps; [ pushbullet ]; 674 - "pushover" = ps: with ps; [ pushover-complete ]; 675 - "pushsafer" = ps: with ps; [ ]; 676 - "pvoutput" = ps: with ps; [ pvo ]; 677 - "pvpc_hourly_pricing" = ps: with ps; [ aiopvpc ]; 678 - "pyload" = ps: with ps; [ ]; 679 - "python_script" = ps: with ps; [ restrictedpython ]; 680 - "qbittorrent" = ps: with ps; [ ]; # missing inputs: python-qbittorrent 681 - "qld_bushfire" = ps: with ps; [ georss-qld-bushfire-alert-client ]; 682 - "qnap" = ps: with ps; [ ]; # missing inputs: qnapstats 683 - "qrcode" = ps: with ps; [ pillow pyzbar ]; 684 - "quantum_gateway" = ps: with ps; [ quantum-gateway ]; 685 - "qvr_pro" = ps: with ps; [ pyqvrpro ]; 686 - "qwikswitch" = ps: with ps; [ ]; # missing inputs: pyqwikswitch 687 - "rachio" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa rachiopy ]; 688 - "radarr" = ps: with ps; [ ]; 689 - "radio_browser" = ps: with ps; [ radios ]; 690 - "radiotherm" = ps: with ps; [ radiotherm ]; 691 - "rainbird" = ps: with ps; [ ]; # missing inputs: pyrainbird 692 - "raincloud" = ps: with ps; [ ]; # missing inputs: raincloudy 693 - "rainforest_eagle" = ps: with ps; [ aioeagle ueagle ]; 694 - "rainmachine" = ps: with ps; [ regenmaschine ]; 695 - "random" = ps: with ps; [ ]; 696 - "raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client 697 - "rdw" = ps: with ps; [ vehicle ]; 698 - "recollect_waste" = ps: with ps; [ aiorecollect ]; 699 - "recorder" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 700 - "recswitch" = ps: with ps; [ ]; # missing inputs: pyrecswitch 701 - "reddit" = ps: with ps; [ praw ]; 702 - "rejseplanen" = ps: with ps; [ ]; # missing inputs: rjpl 703 - "remember_the_milk" = ps: with ps; [ httplib2 ]; # missing inputs: RtmAPI 704 - "remote" = ps: with ps; [ ]; 705 - "remote_rpi_gpio" = ps: with ps; [ ]; # missing inputs: gpiozero 706 - "renault" = ps: with ps; [ renault-api ]; 707 - "repetier" = ps: with ps; [ ]; # missing inputs: pyrepetierng 708 - "rest" = ps: with ps; [ jsonpath xmltodict ]; 709 - "rest_command" = ps: with ps; [ ]; 710 - "rflink" = ps: with ps; [ rflink ]; 711 - "rfxtrx" = ps: with ps; [ pyrfxtrx ]; 712 - "ridwell" = ps: with ps; [ aioridwell ]; 713 - "ring" = ps: with ps; [ ha-ffmpeg ring-doorbell ]; 714 - "ripple" = ps: with ps; [ ]; # missing inputs: python-ripple-api 715 - "risco" = ps: with ps; [ pyrisco ]; 716 - "rituals_perfume_genie" = ps: with ps; [ pyrituals ]; 717 - "rmvtransport" = ps: with ps; [ pyrmvtransport ]; 718 - "rocketchat" = ps: with ps; [ ]; # missing inputs: rocketchat-API 719 - "roku" = ps: with ps; [ rokuecp ]; 720 - "roomba" = ps: with ps; [ roombapy ]; 721 - "roon" = ps: with ps; [ roonapi ]; 722 - "route53" = ps: with ps; [ boto3 ]; 723 - "rova" = ps: with ps; [ ]; # missing inputs: rova 724 - "rpi_camera" = ps: with ps; [ ]; 725 - "rpi_gpio" = ps: with ps; [ ]; # missing inputs: RPi.GPIO 726 - "rpi_power" = ps: with ps; [ rpi-bad-power ]; 727 - "rss_feed_template" = ps: with ps; [ aiohttp-cors ]; 728 - "rtorrent" = ps: with ps; [ ]; 729 - "rtsp_to_webrtc" = ps: with ps; [ pyturbojpeg aiohttp-cors rtsp-to-webrtc ]; 730 - "ruckus_unleashed" = ps: with ps; [ pyruckus ]; 731 - "russound_rio" = ps: with ps; [ ]; # missing inputs: russound_rio 732 - "russound_rnet" = ps: with ps; [ ]; # missing inputs: russound 733 - "sabnzbd" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ]; # missing inputs: pysabnzbd 734 - "safe_mode" = ps: with ps; [ pyturbojpeg aiohttp-cors fnvhash hass-nabucasa home-assistant-frontend lru-dict pillow sqlalchemy ]; 735 - "saj" = ps: with ps; [ ]; # missing inputs: pysaj 736 - "samsungtv" = ps: with ps; [ aiohttp-cors async-upnp-client getmac ifaddr samsungctl samsungtvws wakeonlan zeroconf ]; 737 - "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra 738 - "scene" = ps: with ps; [ ]; 739 - "schluter" = ps: with ps; [ ]; # missing inputs: py-schluter 740 - "scrape" = ps: with ps; [ beautifulsoup4 jsonpath xmltodict ]; 741 - "screenlogic" = ps: with ps; [ screenlogicpy ]; 742 - "script" = ps: with ps; [ ]; 743 - "scsgate" = ps: with ps; [ ]; # missing inputs: scsgate 744 - "search" = ps: with ps; [ aiohttp-cors ]; 745 - "season" = ps: with ps; [ ephem ]; 746 - "select" = ps: with ps; [ ]; 747 - "sendgrid" = ps: with ps; [ sendgrid ]; 748 - "sense" = ps: with ps; [ sense-energy ]; 749 - "senseme" = ps: with ps; [ aiosenseme ]; 750 - "sensibo" = ps: with ps; [ ]; # missing inputs: pysensibo 751 - "sensor" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 752 - "sentry" = ps: with ps; [ sentry-sdk ]; 753 - "serial" = ps: with ps; [ pyserial-asyncio ]; 754 - "serial_pm" = ps: with ps; [ pmsensor ]; 755 - "sesame" = ps: with ps; [ ]; # missing inputs: pysesame2 756 - "seven_segments" = ps: with ps; [ pillow ]; 757 - "seventeentrack" = ps: with ps; [ py17track ]; 758 - "sharkiq" = ps: with ps; [ ]; # missing inputs: sharkiq 759 - "shell_command" = ps: with ps; [ ]; 760 - "shelly" = ps: with ps; [ aioshelly ]; 761 - "shiftr" = ps: with ps; [ paho-mqtt ]; 762 - "shodan" = ps: with ps; [ shodan ]; 763 - "shopping_list" = ps: with ps; [ aiohttp-cors ]; 764 - "sia" = ps: with ps; [ pysiaalarm ]; 765 - "sigfox" = ps: with ps; [ ]; 766 - "sighthound" = ps: with ps; [ pillow simplehound ]; 767 - "signal_messenger" = ps: with ps; [ pysignalclirestapi ]; 768 - "simplepush" = ps: with ps; [ ]; # missing inputs: simplepush 769 - "simplisafe" = ps: with ps; [ simplisafe-python ]; 770 - "simulated" = ps: with ps; [ ]; 771 - "sinch" = ps: with ps; [ ]; # missing inputs: clx-sdk-xms 772 - "siren" = ps: with ps; [ ]; 773 - "sisyphus" = ps: with ps; [ ]; # missing inputs: sisyphus-control 774 - "sky_hub" = ps: with ps; [ pyskyqhub ]; 775 - "skybeacon" = ps: with ps; [ pygatt ]; 776 - "skybell" = ps: with ps; [ skybellpy ]; 777 - "slack" = ps: with ps; [ slackclient ]; 778 - "sleepiq" = ps: with ps; [ asyncsleepiq ]; 779 - "slide" = ps: with ps; [ ]; # missing inputs: goslide-api 780 - "sma" = ps: with ps; [ pysma ]; 781 - "smappee" = ps: with ps; [ aiohttp-cors pysmappee ]; 782 - "smart_meter_texas" = ps: with ps; [ smart-meter-texas ]; 783 - "smartthings" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pysmartapp pysmartthings ]; 784 - "smarttub" = ps: with ps; [ python-smarttub ]; 785 - "smarty" = ps: with ps; [ ]; # missing inputs: pysmarty 786 - "smhi" = ps: with ps; [ smhi-pkg ]; 787 - "sms" = ps: with ps; [ python-gammu ]; 788 - "smtp" = ps: with ps; [ ]; 789 - "snapcast" = ps: with ps; [ snapcast ]; 790 - "snips" = ps: with ps; [ aiohttp-cors paho-mqtt ]; 791 - "snmp" = ps: with ps; [ pysnmp ]; 792 - "solaredge" = ps: with ps; [ solaredge stringcase ]; 793 - "solaredge_local" = ps: with ps; [ ]; # missing inputs: solaredge-local 794 - "solarlog" = ps: with ps; [ sunwatcher ]; 795 - "solax" = ps: with ps; [ solax ]; 796 - "soma" = ps: with ps; [ pysoma ]; 797 - "somfy" = ps: with ps; [ aiohttp-cors pymfy ]; 798 - "somfy_mylink" = ps: with ps; [ somfy-mylink-synergy ]; 799 - "sonarr" = ps: with ps; [ aiopyarr ]; 800 - "songpal" = ps: with ps; [ python-songpal ]; 801 - "sonos" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr plexapi plexauth plexwebsocket soco spotipy zeroconf ]; 802 - "sony_projector" = ps: with ps; [ pysdcp ]; 803 - "soundtouch" = ps: with ps; [ aiohttp-cors ifaddr libsoundtouch zeroconf ]; 804 - "spaceapi" = ps: with ps; [ aiohttp-cors ]; 805 - "spc" = ps: with ps; [ pyspcwebgw ]; 806 - "speedtestdotnet" = ps: with ps; [ speedtest-cli ]; 807 - "spider" = ps: with ps; [ spiderpy ]; 808 - "splunk" = ps: with ps; [ ]; # missing inputs: hass_splunk 809 - "spotify" = ps: with ps; [ aiohttp-cors spotipy ]; 810 - "sql" = ps: with ps; [ sqlalchemy ]; 811 - "squeezebox" = ps: with ps; [ pysqueezebox ]; 812 - "srp_energy" = ps: with ps; [ srpenergy ]; 813 - "ssdp" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ]; 814 - "starline" = ps: with ps; [ starline ]; 815 - "starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank 816 - "startca" = ps: with ps; [ xmltodict ]; 817 - "statistics" = ps: with ps; [ fnvhash lru-dict sqlalchemy ]; 818 - "statsd" = ps: with ps; [ statsd ]; 819 - "steam_online" = ps: with ps; [ ]; # missing inputs: steamodd 820 - "steamist" = ps: with ps; [ aiohttp-cors aiosteamist discovery30303 ifaddr ]; 821 - "stiebel_eltron" = ps: with ps; [ pymodbus ]; # missing inputs: pystiebeleltron 822 - "stookalert" = ps: with ps; [ ]; # missing inputs: stookalert 823 - "stream" = ps: with ps; [ pyturbojpeg aiohttp-cors av ]; 824 - "streamlabswater" = ps: with ps; [ streamlabswater ]; 825 - "stt" = ps: with ps; [ aiohttp-cors ]; 826 - "subaru" = ps: with ps; [ subarulink ]; 827 - "suez_water" = ps: with ps; [ ]; # missing inputs: pysuez 828 - "sun" = ps: with ps; [ ]; 829 - "supervisord" = ps: with ps; [ ]; 830 - "supla" = ps: with ps; [ ]; # missing inputs: asyncpysupla 831 - "surepetcare" = ps: with ps; [ surepy ]; 832 - "swiss_hydrological_data" = ps: with ps; [ swisshydrodata ]; 833 - "swiss_public_transport" = ps: with ps; [ python-opendata-transport ]; 834 - "swisscom" = ps: with ps; [ ]; 835 - "switch" = ps: with ps; [ ]; 836 - "switch_as_x" = ps: with ps; [ ]; 837 - "switchbot" = ps: with ps; [ pyswitchbot ]; 838 - "switcher_kis" = ps: with ps; [ aioswitcher ]; 839 - "switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate 840 - "syncthing" = ps: with ps; [ aiosyncthing ]; 841 - "syncthru" = ps: with ps; [ pysyncthru url-normalize ]; 842 - "synology_chat" = ps: with ps; [ ]; 843 - "synology_dsm" = ps: with ps; [ py-synologydsm-api ]; 844 - "synology_srm" = ps: with ps; [ ]; # missing inputs: synology-srm 845 - "syslog" = ps: with ps; [ ]; 846 - "system_bridge" = ps: with ps; [ aiohttp-cors ifaddr systembridge zeroconf ]; 847 - "system_health" = ps: with ps; [ aiohttp-cors ]; 848 - "system_log" = ps: with ps; [ ]; 849 - "systemmonitor" = ps: with ps; [ psutil ]; 850 - "tado" = ps: with ps; [ python-tado ]; 851 - "tag" = ps: with ps; [ ]; 852 - "tailscale" = ps: with ps; [ tailscale ]; 853 - "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility 854 - "tankerkoenig" = ps: with ps; [ pytankerkoenig ]; 855 - "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff 856 - "tasmota" = ps: with ps; [ aiohttp-cors hatasmota paho-mqtt ]; 857 - "tautulli" = ps: with ps; [ pytautulli ]; 858 - "tcp" = ps: with ps; [ ]; 859 - "ted5000" = ps: with ps; [ xmltodict ]; 860 - "telegram" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ]; 861 - "telegram_bot" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ]; 862 - "tellduslive" = ps: with ps; [ tellduslive ]; 863 - "tellstick" = ps: with ps; [ ]; # missing inputs: tellcore-net tellcore-py 864 - "telnet" = ps: with ps; [ ]; 865 - "temper" = ps: with ps; [ ]; # missing inputs: temperusb 866 - "template" = ps: with ps; [ ]; 867 - "tensorflow" = ps: with ps; [ numpy pillow pycocotools tensorflow ]; # missing inputs: tf-models-official 868 - "tesla_wall_connector" = ps: with ps; [ tesla-wall-connector ]; 869 - "tfiac" = ps: with ps; [ ]; # missing inputs: pytfiac 870 - "thermoworks_smoke" = ps: with ps; [ stringcase ]; # missing inputs: thermoworks_smoke 871 - "thethingsnetwork" = ps: with ps; [ ]; 872 - "thingspeak" = ps: with ps; [ ]; # missing inputs: thingspeak 873 - "thinkingcleaner" = ps: with ps; [ ]; # missing inputs: pythinkingcleaner 874 - "thomson" = ps: with ps; [ ]; 875 - "threshold" = ps: with ps; [ ]; 876 - "tibber" = ps: with ps; [ fnvhash lru-dict pytibber sqlalchemy ]; 877 - "tikteck" = ps: with ps; [ ]; # missing inputs: tikteck 878 - "tile" = ps: with ps; [ pytile ]; 879 - "time_date" = ps: with ps; [ ]; 880 - "timer" = ps: with ps; [ ]; 881 - "tmb" = ps: with ps; [ tmb ]; 882 - "tod" = ps: with ps; [ ]; 883 - "todoist" = ps: with ps; [ todoist ]; 884 - "tolo" = ps: with ps; [ tololib ]; 885 - "tomato" = ps: with ps; [ ]; 886 - "tomorrowio" = ps: with ps; [ ]; # missing inputs: pytomorrowio 887 - "toon" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa toonapi ]; 888 - "torque" = ps: with ps; [ aiohttp-cors ]; 889 - "totalconnect" = ps: with ps; [ total-connect-client ]; 890 - "touchline" = ps: with ps; [ ]; # missing inputs: pytouchline 891 - "tplink" = ps: with ps; [ aiohttp-cors ifaddr python-kasa ]; 892 - "tplink_lte" = ps: with ps; [ ]; # missing inputs: tp-connected 893 - "traccar" = ps: with ps; [ aiohttp-cors pytraccar stringcase ]; 894 - "trace" = ps: with ps; [ ]; 895 - "tractive" = ps: with ps; [ aiotractive ]; 896 - "tradfri" = ps: with ps; [ pytradfri ]; 897 - "trafikverket_train" = ps: with ps; [ pytrafikverket ]; 898 - "trafikverket_weatherstation" = ps: with ps; [ pytrafikverket ]; 899 - "transmission" = ps: with ps; [ transmissionrpc ]; 900 - "transport_nsw" = ps: with ps; [ pytransportnsw ]; 901 - "travisci" = ps: with ps; [ ]; # missing inputs: TravisPy 902 - "trend" = ps: with ps; [ numpy ]; 903 - "tts" = ps: with ps; [ aiohttp-cors mutagen ]; 904 - "tuya" = ps: with ps; [ ha-ffmpeg tuya-iot-py-sdk ]; 905 - "twentemilieu" = ps: with ps; [ twentemilieu ]; 906 - "twilio" = ps: with ps; [ aiohttp-cors twilio ]; 907 - "twilio_call" = ps: with ps; [ aiohttp-cors twilio ]; 908 - "twilio_sms" = ps: with ps; [ aiohttp-cors twilio ]; 909 - "twinkly" = ps: with ps; [ ttls ]; 910 - "twitch" = ps: with ps; [ twitchapi ]; 911 - "twitter" = ps: with ps; [ twitterapi ]; 912 - "ubus" = ps: with ps; [ openwrt-ubus-rpc ]; 913 - "ue_smart_radio" = ps: with ps; [ ]; 914 - "uk_transport" = ps: with ps; [ ]; 915 - "unifi" = ps: with ps; [ aiounifi ]; 916 - "unifi_direct" = ps: with ps; [ pexpect ]; 917 - "unifiled" = ps: with ps; [ unifiled ]; 918 - "unifiprotect" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pyunifiprotect unifi-discovery 919 - "universal" = ps: with ps; [ ]; 920 - "upb" = ps: with ps; [ upb-lib ]; 921 - "upc_connect" = ps: with ps; [ connect-box ]; 922 - "upcloud" = ps: with ps; [ upcloud-api ]; 923 - "update" = ps: with ps; [ ]; 924 - "updater" = ps: with ps; [ ]; 925 - "upnp" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ]; 926 - "uptime" = ps: with ps; [ ]; 927 - "uptimerobot" = ps: with ps; [ pyuptimerobot ]; 928 - "usb" = ps: with ps; [ aiohttp-cors pyserial pyudev ]; 929 - "uscis" = ps: with ps; [ ]; # missing inputs: uscisstatus 930 - "usgs_earthquakes_feed" = ps: with ps; [ geojson-client ]; 931 - "utility_meter" = ps: with ps; [ croniter ]; 932 - "uvc" = ps: with ps; [ uvcclient ]; 933 - "vacuum" = ps: with ps; [ ]; 934 - "vallox" = ps: with ps; [ ]; # missing inputs: vallox-websocket-api 935 - "vasttrafik" = ps: with ps; [ ]; # missing inputs: vtjp 936 - "velbus" = ps: with ps; [ aiohttp-cors pyserial pyudev velbus-aio ]; 937 - "velux" = ps: with ps; [ pyvlx ]; 938 - "venstar" = ps: with ps; [ venstarcolortouch ]; 939 - "vera" = ps: with ps; [ pyvera ]; 940 - "verisure" = ps: with ps; [ vsure ]; 941 - "versasense" = ps: with ps; [ pyversasense ]; 942 - "version" = ps: with ps; [ pyhaversion ]; 943 - "vesync" = ps: with ps; [ pyvesync ]; 944 - "viaggiatreno" = ps: with ps; [ ]; 945 - "vicare" = ps: with ps; [ pyvicare ]; 946 - "vilfo" = ps: with ps; [ vilfo-api-client ]; 947 - "vivotek" = ps: with ps; [ libpyvivotek ]; 948 - "vizio" = ps: with ps; [ pyvizio ]; 949 - "vlc" = ps: with ps; [ python-vlc ]; 950 - "vlc_telnet" = ps: with ps; [ aiovlc ]; 951 - "voicerss" = ps: with ps; [ ]; 952 - "volkszaehler" = ps: with ps; [ volkszaehler ]; 953 - "volumio" = ps: with ps; [ pyvolumio ]; 954 - "volvooncall" = ps: with ps; [ volvooncall ]; 955 - "vulcan" = ps: with ps; [ vulcan-api ]; 956 - "vultr" = ps: with ps; [ vultr ]; 957 - "w800rf32" = ps: with ps; [ ]; # missing inputs: pyW800rf32 958 - "wake_on_lan" = ps: with ps; [ wakeonlan ]; 959 - "wallbox" = ps: with ps; [ wallbox ]; 960 - "waqi" = ps: with ps; [ waqiasync ]; 961 - "water_heater" = ps: with ps; [ ]; 962 - "waterfurnace" = ps: with ps; [ waterfurnace ]; 963 - "watson_iot" = ps: with ps; [ ]; # missing inputs: ibmiotf 964 - "watson_tts" = ps: with ps; [ ibm-watson ]; 965 - "watttime" = ps: with ps; [ aiowatttime ]; 966 - "waze_travel_time" = ps: with ps; [ wazeroutecalculator ]; 967 - "weather" = ps: with ps; [ ]; 968 - "webhook" = ps: with ps; [ aiohttp-cors ]; 969 - "webostv" = ps: with ps; [ aiowebostv ]; 970 - "websocket_api" = ps: with ps; [ aiohttp-cors ]; 971 - "wemo" = ps: with ps; [ pywemo ]; 972 - "whirlpool" = ps: with ps; [ whirlpool-sixth-sense ]; 973 - "whois" = ps: with ps; [ whois ]; 974 - "wiffi" = ps: with ps; [ wiffi ]; 975 - "wilight" = ps: with ps; [ pywilight ]; 976 - "wirelesstag" = ps: with ps; [ ]; # missing inputs: wirelesstagpy 977 - "withings" = ps: with ps; [ aiohttp-cors ]; # missing inputs: withings-api 978 - "wiz" = ps: with ps; [ aiohttp-cors ifaddr pywizlight ]; 979 - "wled" = ps: with ps; [ wled ]; 980 - "wolflink" = ps: with ps; [ ]; # missing inputs: wolf_smartset 981 - "workday" = ps: with ps; [ holidays ]; 982 - "worldclock" = ps: with ps; [ ]; 983 - "worldtidesinfo" = ps: with ps; [ ]; 984 - "worxlandroid" = ps: with ps; [ ]; 985 - "wsdot" = ps: with ps; [ ]; 986 - "x10" = ps: with ps; [ ]; 987 - "xbox" = ps: with ps; [ aiohttp-cors xbox-webapi ]; 988 - "xbox_live" = ps: with ps; [ xboxapi ]; 989 - "xeoma" = ps: with ps; [ pyxeoma ]; 990 - "xiaomi" = ps: with ps; [ ha-ffmpeg ]; 991 - "xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors ifaddr netdisco zeroconf ]; 992 - "xiaomi_miio" = ps: with ps; [ construct micloud python-miio ]; 993 - "xiaomi_tv" = ps: with ps; [ pymitv ]; 994 - "xmpp" = ps: with ps; [ slixmpp ]; 995 - "xs1" = ps: with ps; [ ]; # missing inputs: xs1-api-client 996 - "yale_smart_alarm" = ps: with ps; [ yalesmartalarmclient ]; 997 - "yamaha" = ps: with ps; [ rxv ]; 998 - "yamaha_musiccast" = ps: with ps; [ aiohttp-cors aiomusiccast async-upnp-client ifaddr zeroconf ]; 999 - "yandex_transport" = ps: with ps; [ aioymaps ]; 1000 - "yandextts" = ps: with ps; [ ]; 1001 - "yeelight" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr yeelight zeroconf ]; 1002 - "yeelightsunflower" = ps: with ps; [ ]; # missing inputs: yeelightsunflower 1003 - "yi" = ps: with ps; [ aioftp ha-ffmpeg ]; 1004 - "youless" = ps: with ps; [ youless-api ]; 1005 - "zabbix" = ps: with ps; [ py-zabbix ]; 1006 - "zamg" = ps: with ps; [ ]; 1007 - "zengge" = ps: with ps; [ bluepy ]; # missing inputs: zengge 1008 - "zeroconf" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ]; 1009 - "zerproc" = ps: with ps; [ pyzerproc ]; 1010 - "zestimate" = ps: with ps; [ xmltodict ]; 1011 - "zha" = ps: with ps; [ aiohttp-cors bellows ifaddr pyserial-asyncio pyserial pyudev zeroconf zha-quirks zigpy-deconz zigpy-xbee zigpy-zigate zigpy-znp zigpy ]; 1012 - "zhong_hong" = ps: with ps; [ ]; # missing inputs: zhong_hong_hvac 1013 - "ziggo_mediabox_xl" = ps: with ps; [ ]; # missing inputs: ziggo-mediabox-xl 1014 - "zodiac" = ps: with ps; [ ]; 1015 - "zone" = ps: with ps; [ ]; 1016 - "zoneminder" = ps: with ps; [ zm-py ]; 1017 - "zwave_js" = ps: with ps; [ aiohttp-cors pyserial pyudev zwave-js-server-python ]; 1018 - "zwave_me" = ps: with ps; [ aiohttp-cors ifaddr url-normalize zeroconf ]; # missing inputs: zwave_me_ws 7 + "abode" = ps: with ps; [ 8 + abodepy 9 + ]; 10 + "accuweather" = ps: with ps; [ 11 + accuweather 12 + ]; 13 + "acer_projector" = ps: with ps; [ 14 + pyserial 15 + ]; 16 + "acmeda" = ps: with ps; [ 17 + aiopulse 18 + ]; 19 + "actiontec" = ps: with ps; [ 20 + ]; 21 + "adax" = ps: with ps; [ 22 + adax-local 23 + adax 24 + ]; 25 + "adguard" = ps: with ps; [ 26 + adguardhome 27 + ]; 28 + "ads" = ps: with ps; [ 29 + pyads 30 + ]; 31 + "advantage_air" = ps: with ps; [ 32 + advantage-air 33 + ]; 34 + "aemet" = ps: with ps; [ 35 + aemet-opendata 36 + ]; 37 + "aftership" = ps: with ps; [ 38 + pyaftership 39 + ]; 40 + "agent_dvr" = ps: with ps; [ 41 + agent-py 42 + ]; 43 + "air_quality" = ps: with ps; [ 44 + ]; 45 + "airly" = ps: with ps; [ 46 + airly 47 + ]; 48 + "airnow" = ps: with ps; [ 49 + pyairnow 50 + ]; 51 + "airthings" = ps: with ps; [ 52 + airthings-cloud 53 + ]; 54 + "airtouch4" = ps: with ps; [ 55 + airtouch4pyapi 56 + ]; 57 + "airvisual" = ps: with ps; [ 58 + pyairvisual 59 + ]; 60 + "airzone" = ps: with ps; [ 61 + aioairzone 62 + ]; 63 + "aladdin_connect" = ps: with ps; [ 64 + aladdin-connect 65 + ]; 66 + "alarm_control_panel" = ps: with ps; [ 67 + ]; 68 + "alarmdecoder" = ps: with ps; [ 69 + adext 70 + ]; 71 + "alert" = ps: with ps; [ 72 + ]; 73 + "alexa" = ps: with ps; [ 74 + pyturbojpeg 75 + aiohttp-cors 76 + ]; 77 + "almond" = ps: with ps; [ 78 + aiohttp-cors 79 + pyalmond 80 + ]; 81 + "alpha_vantage" = ps: with ps; [ 82 + alpha-vantage 83 + ]; 84 + "amazon_polly" = ps: with ps; [ 85 + boto3 86 + ]; 87 + "ambee" = ps: with ps; [ 88 + ambee 89 + ]; 90 + "amberelectric" = ps: with ps; [ 91 + amberelectric 92 + ]; 93 + "ambiclimate" = ps: with ps; [ 94 + aiohttp-cors 95 + ambiclimate 96 + ]; 97 + "ambient_station" = ps: with ps; [ 98 + aioambient 99 + ]; 100 + "amcrest" = ps: with ps; [ 101 + amcrest 102 + ha-ffmpeg 103 + ]; 104 + "ampio" = ps: with ps; [ 105 + asmog 106 + ]; 107 + "analytics" = ps: with ps; [ 108 + aiohttp-cors 109 + fnvhash 110 + lru-dict 111 + sqlalchemy 112 + ]; 113 + "android_ip_webcam" = ps: with ps; [ 114 + pydroid-ipcam 115 + ]; 116 + "androidtv" = ps: with ps; [ 117 + adb-shell 118 + androidtv 119 + pure-python-adb 120 + ] 121 + ++ adb-shell.extras-require.async 122 + ++ androidtv.extras-require.async 123 + ++ pure-python-adb.extras-require.async; 124 + "anel_pwrctrl" = ps: with ps; [ 125 + ]; # missing inputs: anel_pwrctrl-homeassistant 126 + "anthemav" = ps: with ps; [ 127 + ]; # missing inputs: anthemav 128 + "apache_kafka" = ps: with ps; [ 129 + aiokafka 130 + ]; 131 + "apcupsd" = ps: with ps; [ 132 + apcaccess 133 + ]; 134 + "api" = ps: with ps; [ 135 + aiohttp-cors 136 + ]; 137 + "apple_tv" = ps: with ps; [ 138 + aiohttp-cors 139 + ifaddr 140 + pyatv 141 + zeroconf 142 + ]; 143 + "apprise" = ps: with ps; [ 144 + apprise 145 + ]; 146 + "aprs" = ps: with ps; [ 147 + aprslib 148 + geopy 149 + ]; 150 + "aqualogic" = ps: with ps; [ 151 + aqualogic 152 + ]; 153 + "aquostv" = ps: with ps; [ 154 + ]; # missing inputs: sharp_aquos_rc 155 + "arcam_fmj" = ps: with ps; [ 156 + arcam-fmj 157 + ]; 158 + "arest" = ps: with ps; [ 159 + ]; 160 + "arlo" = ps: with ps; [ 161 + ha-ffmpeg 162 + pyarlo 163 + ]; 164 + "arris_tg2492lg" = ps: with ps; [ 165 + ]; # missing inputs: arris-tg2492lg 166 + "aruba" = ps: with ps; [ 167 + pexpect 168 + ]; 169 + "arwn" = ps: with ps; [ 170 + aiohttp-cors 171 + paho-mqtt 172 + ]; 173 + "aseko_pool_live" = ps: with ps; [ 174 + aioaseko 175 + ]; 176 + "asterisk_cdr" = ps: with ps; [ 177 + asterisk-mbox 178 + ]; 179 + "asterisk_mbox" = ps: with ps; [ 180 + asterisk-mbox 181 + ]; 182 + "asuswrt" = ps: with ps; [ 183 + aioasuswrt 184 + ]; 185 + "atag" = ps: with ps; [ 186 + pyatag 187 + ]; 188 + "aten_pe" = ps: with ps; [ 189 + atenpdu 190 + ]; 191 + "atome" = ps: with ps; [ 192 + pyatome 193 + ]; 194 + "august" = ps: with ps; [ 195 + yalexs 196 + ]; 197 + "aurora" = ps: with ps; [ 198 + auroranoaa 199 + ]; 200 + "aurora_abb_powerone" = ps: with ps; [ 201 + aurorapy 202 + ]; 203 + "aussie_broadband" = ps: with ps; [ 204 + pyaussiebb 205 + ]; 206 + "auth" = ps: with ps; [ 207 + aiohttp-cors 208 + ]; 209 + "automation" = ps: with ps; [ 210 + aiohttp-cors 211 + ]; 212 + "avea" = ps: with ps; [ 213 + avea 214 + ]; 215 + "avion" = ps: with ps; [ 216 + avion 217 + ]; 218 + "awair" = ps: with ps; [ 219 + python-awair 220 + ]; 221 + "aws" = ps: with ps; [ 222 + aiobotocore 223 + ]; 224 + "axis" = ps: with ps; [ 225 + aiohttp-cors 226 + axis 227 + paho-mqtt 228 + ]; 229 + "azure_devops" = ps: with ps; [ 230 + aioazuredevops 231 + ]; 232 + "azure_event_hub" = ps: with ps; [ 233 + azure-eventhub 234 + ]; 235 + "azure_service_bus" = ps: with ps; [ 236 + azure-servicebus 237 + ]; 238 + "backup" = ps: with ps; [ 239 + aiohttp-cors 240 + ]; # missing inputs: securetar 241 + "baidu" = ps: with ps; [ 242 + ]; # missing inputs: baidu-aip 243 + "balboa" = ps: with ps; [ 244 + pybalboa 245 + ]; 246 + "bayesian" = ps: with ps; [ 247 + ]; 248 + "bbox" = ps: with ps; [ 249 + ]; # missing inputs: pybbox 250 + "beewi_smartclim" = ps: with ps; [ 251 + ]; # missing inputs: beewi_smartclim 252 + "binary_sensor" = ps: with ps; [ 253 + ]; 254 + "bitcoin" = ps: with ps; [ 255 + blockchain 256 + ]; 257 + "bizkaibus" = ps: with ps; [ 258 + bizkaibus 259 + ]; 260 + "blackbird" = ps: with ps; [ 261 + pyblackbird 262 + ]; 263 + "blebox" = ps: with ps; [ 264 + blebox-uniapi 265 + ]; 266 + "blink" = ps: with ps; [ 267 + blinkpy 268 + ]; 269 + "blinksticklight" = ps: with ps; [ 270 + BlinkStick 271 + ]; 272 + "blockchain" = ps: with ps; [ 273 + ]; # missing inputs: python-blockchain-api 274 + "bloomsky" = ps: with ps; [ 275 + ]; 276 + "blueprint" = ps: with ps; [ 277 + ]; 278 + "bluesound" = ps: with ps; [ 279 + xmltodict 280 + ]; 281 + "bluetooth_le_tracker" = ps: with ps; [ 282 + pygatt 283 + ] 284 + ++ pygatt.extras-require.GATTTOOL; 285 + "bluetooth_tracker" = ps: with ps; [ 286 + bt-proximity 287 + pybluez 288 + ]; 289 + "bmw_connected_drive" = ps: with ps; [ 290 + bimmer-connected 291 + ]; 292 + "bond" = ps: with ps; [ 293 + bond-api 294 + ]; 295 + "bosch_shc" = ps: with ps; [ 296 + aiohttp-cors 297 + boschshcpy 298 + ifaddr 299 + zeroconf 300 + ]; 301 + "braviatv" = ps: with ps; [ 302 + bravia-tv 303 + ]; 304 + "broadlink" = ps: with ps; [ 305 + broadlink 306 + ]; 307 + "brother" = ps: with ps; [ 308 + brother 309 + ]; 310 + "brottsplatskartan" = ps: with ps; [ 311 + brottsplatskartan 312 + ]; 313 + "browser" = ps: with ps; [ 314 + ]; 315 + "brunt" = ps: with ps; [ 316 + ]; # missing inputs: brunt 317 + "bsblan" = ps: with ps; [ 318 + bsblan 319 + ]; 320 + "bt_home_hub_5" = ps: with ps; [ 321 + ]; # missing inputs: bthomehub5-devicelist 322 + "bt_smarthub" = ps: with ps; [ 323 + ]; # missing inputs: btsmarthub_devicelist 324 + "buienradar" = ps: with ps; [ 325 + buienradar 326 + ]; 327 + "button" = ps: with ps; [ 328 + ]; 329 + "caldav" = ps: with ps; [ 330 + caldav 331 + ]; 332 + "calendar" = ps: with ps; [ 333 + aiohttp-cors 334 + ]; 335 + "camera" = ps: with ps; [ 336 + pyturbojpeg 337 + aiohttp-cors 338 + ]; 339 + "canary" = ps: with ps; [ 340 + ha-ffmpeg 341 + py-canary 342 + ]; 343 + "cast" = ps: with ps; [ 344 + pyturbojpeg 345 + aiohttp-cors 346 + hass-nabucasa 347 + ifaddr 348 + mutagen 349 + plexapi 350 + plexauth 351 + plexwebsocket 352 + PyChromecast 353 + zeroconf 354 + ]; 355 + "cert_expiry" = ps: with ps; [ 356 + ]; 357 + "channels" = ps: with ps; [ 358 + pychannels 359 + ]; 360 + "circuit" = ps: with ps; [ 361 + circuit-webhook 362 + ]; 363 + "cisco_ios" = ps: with ps; [ 364 + pexpect 365 + ]; 366 + "cisco_mobility_express" = ps: with ps; [ 367 + ciscomobilityexpress 368 + ]; 369 + "cisco_webex_teams" = ps: with ps; [ 370 + webexteamssdk 371 + ]; 372 + "citybikes" = ps: with ps; [ 373 + ]; 374 + "clementine" = ps: with ps; [ 375 + ]; # missing inputs: python-clementine-remote 376 + "clickatell" = ps: with ps; [ 377 + ]; 378 + "clicksend" = ps: with ps; [ 379 + ]; 380 + "clicksend_tts" = ps: with ps; [ 381 + ]; 382 + "climacell" = ps: with ps; [ 383 + pyclimacell 384 + ]; # missing inputs: pytomorrowio 385 + "climate" = ps: with ps; [ 386 + ]; 387 + "cloud" = ps: with ps; [ 388 + pyturbojpeg 389 + aiohttp-cors 390 + hass-nabucasa 391 + ]; 392 + "cloudflare" = ps: with ps; [ 393 + pycfdns 394 + ]; 395 + "cmus" = ps: with ps; [ 396 + ]; # missing inputs: pycmus 397 + "co2signal" = ps: with ps; [ 398 + co2signal 399 + ]; 400 + "coinbase" = ps: with ps; [ 401 + ]; # missing inputs: coinbase 402 + "color_extractor" = ps: with ps; [ 403 + colorthief 404 + ]; 405 + "comed_hourly_pricing" = ps: with ps; [ 406 + ]; 407 + "comfoconnect" = ps: with ps; [ 408 + pycomfoconnect 409 + ]; 410 + "command_line" = ps: with ps; [ 411 + ]; 412 + "compensation" = ps: with ps; [ 413 + numpy 414 + ]; 415 + "concord232" = ps: with ps; [ 416 + ]; # missing inputs: concord232 417 + "config" = ps: with ps; [ 418 + aiohttp-cors 419 + ]; 420 + "configurator" = ps: with ps; [ 421 + ]; 422 + "control4" = ps: with ps; [ 423 + pycontrol4 424 + ]; 425 + "conversation" = ps: with ps; [ 426 + aiohttp-cors 427 + ]; 428 + "coolmaster" = ps: with ps; [ 429 + pycoolmasternet-async 430 + ]; 431 + "coronavirus" = ps: with ps; [ 432 + coronavirus 433 + ]; 434 + "counter" = ps: with ps; [ 435 + ]; 436 + "cover" = ps: with ps; [ 437 + ]; 438 + "cppm_tracker" = ps: with ps; [ 439 + ]; # missing inputs: clearpasspy 440 + "cpuspeed" = ps: with ps; [ 441 + py-cpuinfo 442 + ]; 443 + "crownstone" = ps: with ps; [ 444 + aiohttp-cors 445 + crownstone-cloud 446 + crownstone-sse 447 + crownstone-uart 448 + pyserial 449 + pyudev 450 + ]; 451 + "cups" = ps: with ps; [ 452 + pycups 453 + ]; 454 + "currencylayer" = ps: with ps; [ 455 + ]; 456 + "daikin" = ps: with ps; [ 457 + pydaikin 458 + ]; 459 + "danfoss_air" = ps: with ps; [ 460 + pydanfossair 461 + ]; 462 + "darksky" = ps: with ps; [ 463 + python-forecastio 464 + ]; 465 + "datadog" = ps: with ps; [ 466 + datadog 467 + ]; 468 + "ddwrt" = ps: with ps; [ 469 + ]; 470 + "debugpy" = ps: with ps; [ 471 + debugpy 472 + ]; 473 + "deconz" = ps: with ps; [ 474 + pydeconz 475 + ]; 476 + "decora" = ps: with ps; [ 477 + bluepy 478 + ]; # missing inputs: decora 479 + "decora_wifi" = ps: with ps; [ 480 + ]; # missing inputs: decora_wifi 481 + "default_config" = ps: with ps; [ 482 + pynacl 483 + pyturbojpeg 484 + aiodiscover 485 + aiohttp-cors 486 + async-upnp-client 487 + fnvhash 488 + hass-nabucasa 489 + home-assistant-frontend 490 + ifaddr 491 + lru-dict 492 + pillow 493 + pyserial 494 + pyudev 495 + scapy 496 + sqlalchemy 497 + zeroconf 498 + ]; 499 + "delijn" = ps: with ps; [ 500 + pydelijn 501 + ]; 502 + "deluge" = ps: with ps; [ 503 + deluge-client 504 + ]; 505 + "demo" = ps: with ps; [ 506 + aiohttp-cors 507 + fnvhash 508 + lru-dict 509 + sqlalchemy 510 + ]; 511 + "denon" = ps: with ps; [ 512 + ]; 513 + "denonavr" = ps: with ps; [ 514 + denonavr 515 + ]; 516 + "derivative" = ps: with ps; [ 517 + ]; 518 + "deutsche_bahn" = ps: with ps; [ 519 + schiene 520 + ]; 521 + "device_automation" = ps: with ps; [ 522 + ]; 523 + "device_sun_light_trigger" = ps: with ps; [ 524 + aiohttp-cors 525 + pillow 526 + ]; 527 + "device_tracker" = ps: with ps; [ 528 + ]; 529 + "devolo_home_control" = ps: with ps; [ 530 + aiohttp-cors 531 + devolo-home-control-api 532 + ifaddr 533 + zeroconf 534 + ]; 535 + "devolo_home_network" = ps: with ps; [ 536 + devolo-plc-api 537 + ]; 538 + "dexcom" = ps: with ps; [ 539 + pydexcom 540 + ]; 541 + "dhcp" = ps: with ps; [ 542 + aiodiscover 543 + scapy 544 + ]; 545 + "diagnostics" = ps: with ps; [ 546 + aiohttp-cors 547 + ]; 548 + "dialogflow" = ps: with ps; [ 549 + aiohttp-cors 550 + ]; 551 + "digital_ocean" = ps: with ps; [ 552 + digital-ocean 553 + ]; 554 + "digitalloggers" = ps: with ps; [ 555 + ]; # missing inputs: dlipower 556 + "directv" = ps: with ps; [ 557 + directv 558 + ]; 559 + "discogs" = ps: with ps; [ 560 + discogs-client 561 + ]; 562 + "discord" = ps: with ps; [ 563 + nextcord 564 + ]; 565 + "discovery" = ps: with ps; [ 566 + aiohttp-cors 567 + ifaddr 568 + netdisco 569 + zeroconf 570 + ]; 571 + "dlib_face_detect" = ps: with ps; [ 572 + face_recognition 573 + ]; 574 + "dlib_face_identify" = ps: with ps; [ 575 + face_recognition 576 + ]; 577 + "dlink" = ps: with ps; [ 578 + ]; # missing inputs: pyW215 579 + "dlna_dmr" = ps: with ps; [ 580 + aiohttp-cors 581 + async-upnp-client 582 + ifaddr 583 + zeroconf 584 + ]; 585 + "dlna_dms" = ps: with ps; [ 586 + aiohttp-cors 587 + async-upnp-client 588 + ifaddr 589 + zeroconf 590 + ]; 591 + "dnsip" = ps: with ps; [ 592 + aiodns 593 + ]; 594 + "dominos" = ps: with ps; [ 595 + aiohttp-cors 596 + ]; # missing inputs: pizzapi 597 + "doods" = ps: with ps; [ 598 + pillow 599 + pydoods 600 + ]; 601 + "doorbird" = ps: with ps; [ 602 + aiohttp-cors 603 + doorbirdpy 604 + ]; 605 + "dovado" = ps: with ps; [ 606 + ]; # missing inputs: dovado 607 + "downloader" = ps: with ps; [ 608 + ]; 609 + "dsmr" = ps: with ps; [ 610 + dsmr-parser 611 + ]; 612 + "dsmr_reader" = ps: with ps; [ 613 + aiohttp-cors 614 + paho-mqtt 615 + ]; 616 + "dte_energy_bridge" = ps: with ps; [ 617 + ]; 618 + "dublin_bus_transport" = ps: with ps; [ 619 + ]; 620 + "duckdns" = ps: with ps; [ 621 + ]; 622 + "dunehd" = ps: with ps; [ 623 + pdunehd 624 + ]; 625 + "dwd_weather_warnings" = ps: with ps; [ 626 + dwdwfsapi 627 + ]; 628 + "dweet" = ps: with ps; [ 629 + ]; # missing inputs: dweepy 630 + "dynalite" = ps: with ps; [ 631 + dynalite-devices 632 + ]; 633 + "eafm" = ps: with ps; [ 634 + aioeafm 635 + ]; 636 + "ebox" = ps: with ps; [ 637 + ]; # missing inputs: pyebox 638 + "ebusd" = ps: with ps; [ 639 + ]; # missing inputs: ebusdpy 640 + "ecoal_boiler" = ps: with ps; [ 641 + ecoaliface 642 + ]; 643 + "ecobee" = ps: with ps; [ 644 + python-ecobee-api 645 + ]; 646 + "econet" = ps: with ps; [ 647 + pyeconet 648 + ]; 649 + "ecovacs" = ps: with ps; [ 650 + ]; # missing inputs: sucks 651 + "eddystone_temperature" = ps: with ps; [ 652 + construct 653 + ]; # missing inputs: beacontools 654 + "edimax" = ps: with ps; [ 655 + pyedimax 656 + ]; 657 + "edl21" = ps: with ps; [ 658 + pysml 659 + ]; 660 + "efergy" = ps: with ps; [ 661 + pyefergy 662 + ]; 663 + "egardia" = ps: with ps; [ 664 + pythonegardia 665 + ]; 666 + "eight_sleep" = ps: with ps; [ 667 + pyeight 668 + ]; 669 + "elgato" = ps: with ps; [ 670 + elgato 671 + ]; 672 + "eliqonline" = ps: with ps; [ 673 + eliqonline 674 + ]; 675 + "elkm1" = ps: with ps; [ 676 + aiohttp-cors 677 + elkm1-lib 678 + ifaddr 679 + ]; 680 + "elmax" = ps: with ps; [ 681 + elmax-api 682 + ]; 683 + "elv" = ps: with ps; [ 684 + pypca 685 + ]; 686 + "emby" = ps: with ps; [ 687 + pyemby 688 + ]; 689 + "emoncms" = ps: with ps; [ 690 + ]; 691 + "emoncms_history" = ps: with ps; [ 692 + ]; 693 + "emonitor" = ps: with ps; [ 694 + aioemonitor 695 + ]; 696 + "emulated_hue" = ps: with ps; [ 697 + aiohttp-cors 698 + ifaddr 699 + ]; 700 + "emulated_kasa" = ps: with ps; [ 701 + sense-energy 702 + ]; 703 + "emulated_roku" = ps: with ps; [ 704 + aiohttp-cors 705 + emulated-roku 706 + ifaddr 707 + ]; 708 + "energy" = ps: with ps; [ 709 + aiohttp-cors 710 + fnvhash 711 + lru-dict 712 + sqlalchemy 713 + ]; 714 + "enigma2" = ps: with ps; [ 715 + openwebifpy 716 + ]; 717 + "enocean" = ps: with ps; [ 718 + enocean 719 + ]; 720 + "enphase_envoy" = ps: with ps; [ 721 + envoy-reader 722 + ]; 723 + "entur_public_transport" = ps: with ps; [ 724 + enturclient 725 + ]; 726 + "environment_canada" = ps: with ps; [ 727 + env-canada 728 + ]; 729 + "envisalink" = ps: with ps; [ 730 + pyenvisalink 731 + ]; 732 + "ephember" = ps: with ps; [ 733 + pyephember 734 + ]; 735 + "epson" = ps: with ps; [ 736 + epson-projector 737 + ]; 738 + "epsonworkforce" = ps: with ps; [ 739 + ]; # missing inputs: epsonprinter 740 + "eq3btsmart" = ps: with ps; [ 741 + construct 742 + ]; # missing inputs: python-eq3bt 743 + "esphome" = ps: with ps; [ 744 + aioesphomeapi 745 + aiohttp-cors 746 + ifaddr 747 + zeroconf 748 + ]; 749 + "etherscan" = ps: with ps; [ 750 + ]; # missing inputs: python-etherscan-api 751 + "eufy" = ps: with ps; [ 752 + ]; # missing inputs: lakeside 753 + "everlights" = ps: with ps; [ 754 + pyeverlights 755 + ]; 756 + "evil_genius_labs" = ps: with ps; [ 757 + pyevilgenius 758 + ]; 759 + "evohome" = ps: with ps; [ 760 + evohome-async 761 + ]; 762 + "ezviz" = ps: with ps; [ 763 + ha-ffmpeg 764 + pyezviz 765 + ]; 766 + "faa_delays" = ps: with ps; [ 767 + faadelays 768 + ]; 769 + "facebook" = ps: with ps; [ 770 + ]; 771 + "facebox" = ps: with ps; [ 772 + ]; 773 + "fail2ban" = ps: with ps; [ 774 + ]; 775 + "familyhub" = ps: with ps; [ 776 + ]; # missing inputs: python-family-hub-local 777 + "fan" = ps: with ps; [ 778 + ]; 779 + "fastdotcom" = ps: with ps; [ 780 + ]; # missing inputs: fastdotcom 781 + "feedreader" = ps: with ps; [ 782 + feedparser 783 + ]; 784 + "ffmpeg" = ps: with ps; [ 785 + ha-ffmpeg 786 + ]; 787 + "ffmpeg_motion" = ps: with ps; [ 788 + ha-ffmpeg 789 + ]; 790 + "ffmpeg_noise" = ps: with ps; [ 791 + ha-ffmpeg 792 + ]; 793 + "fibaro" = ps: with ps; [ 794 + fiblary3-fork 795 + ]; 796 + "fido" = ps: with ps; [ 797 + pyfido 798 + ]; 799 + "file" = ps: with ps; [ 800 + ]; 801 + "filesize" = ps: with ps; [ 802 + ]; 803 + "filter" = ps: with ps; [ 804 + fnvhash 805 + lru-dict 806 + sqlalchemy 807 + ]; 808 + "fints" = ps: with ps; [ 809 + fints 810 + ]; 811 + "fireservicerota" = ps: with ps; [ 812 + pyfireservicerota 813 + ]; 814 + "firmata" = ps: with ps; [ 815 + pymata-express 816 + ]; 817 + "fitbit" = ps: with ps; [ 818 + aiohttp-cors 819 + fitbit 820 + ]; 821 + "fivem" = ps: with ps; [ 822 + ]; # missing inputs: fivem-api 823 + "fixer" = ps: with ps; [ 824 + fixerio 825 + ]; 826 + "fjaraskupan" = ps: with ps; [ 827 + fjaraskupan 828 + ]; 829 + "fleetgo" = ps: with ps; [ 830 + ritassist 831 + ]; 832 + "flexit" = ps: with ps; [ 833 + pymodbus 834 + ]; 835 + "flic" = ps: with ps; [ 836 + pyflic 837 + ]; 838 + "flick_electric" = ps: with ps; [ 839 + pyflick 840 + ]; 841 + "flipr" = ps: with ps; [ 842 + flipr-api 843 + ]; 844 + "flo" = ps: with ps; [ 845 + aioflo 846 + ]; 847 + "flock" = ps: with ps; [ 848 + ]; 849 + "flume" = ps: with ps; [ 850 + pyflume 851 + ]; 852 + "flunearyou" = ps: with ps; [ 853 + pyflunearyou 854 + ]; 855 + "flux" = ps: with ps; [ 856 + ]; 857 + "flux_led" = ps: with ps; [ 858 + aiohttp-cors 859 + flux-led 860 + ifaddr 861 + ]; 862 + "folder" = ps: with ps; [ 863 + ]; 864 + "folder_watcher" = ps: with ps; [ 865 + watchdog 866 + ]; 867 + "foobot" = ps: with ps; [ 868 + foobot-async 869 + ]; 870 + "forecast_solar" = ps: with ps; [ 871 + forecast-solar 872 + ]; 873 + "forked_daapd" = ps: with ps; [ 874 + ]; # missing inputs: pyforked-daapd pylibrespot-java 875 + "fortios" = ps: with ps; [ 876 + fortiosapi 877 + ]; 878 + "foscam" = ps: with ps; [ 879 + libpyfoscam 880 + ]; 881 + "foursquare" = ps: with ps; [ 882 + aiohttp-cors 883 + ]; 884 + "free_mobile" = ps: with ps; [ 885 + ]; # missing inputs: freesms 886 + "freebox" = ps: with ps; [ 887 + freebox-api 888 + ]; 889 + "freedns" = ps: with ps; [ 890 + ]; 891 + "freedompro" = ps: with ps; [ 892 + pyfreedompro 893 + ]; 894 + "fritz" = ps: with ps; [ 895 + aiohttp-cors 896 + fritzconnection 897 + ifaddr 898 + xmltodict 899 + ]; 900 + "fritzbox" = ps: with ps; [ 901 + pyfritzhome 902 + ]; 903 + "fritzbox_callmonitor" = ps: with ps; [ 904 + fritzconnection 905 + ]; 906 + "fronius" = ps: with ps; [ 907 + pyfronius 908 + ]; 909 + "frontend" = ps: with ps; [ 910 + aiohttp-cors 911 + fnvhash 912 + home-assistant-frontend 913 + lru-dict 914 + pillow 915 + sqlalchemy 916 + ]; 917 + "frontier_silicon" = ps: with ps; [ 918 + afsapi 919 + ]; 920 + "futurenow" = ps: with ps; [ 921 + pyfnip 922 + ]; 923 + "garadget" = ps: with ps; [ 924 + ]; 925 + "garages_amsterdam" = ps: with ps; [ 926 + garages-amsterdam 927 + ]; 928 + "gc100" = ps: with ps; [ 929 + ]; # missing inputs: python-gc100 930 + "gdacs" = ps: with ps; [ 931 + aio-georss-gdacs 932 + ]; 933 + "generic" = ps: with ps; [ 934 + av 935 + pillow 936 + ]; 937 + "generic_hygrostat" = ps: with ps; [ 938 + ]; 939 + "generic_thermostat" = ps: with ps; [ 940 + fnvhash 941 + lru-dict 942 + sqlalchemy 943 + ]; 944 + "geniushub" = ps: with ps; [ 945 + geniushub-client 946 + ]; 947 + "geo_json_events" = ps: with ps; [ 948 + ]; # missing inputs: aio_geojson_generic_client 949 + "geo_location" = ps: with ps; [ 950 + ]; 951 + "geo_rss_events" = ps: with ps; [ 952 + georss-generic-client 953 + ]; 954 + "geofency" = ps: with ps; [ 955 + aiohttp-cors 956 + ]; 957 + "geonetnz_quakes" = ps: with ps; [ 958 + aio-geojson-geonetnz-quakes 959 + ]; 960 + "geonetnz_volcano" = ps: with ps; [ 961 + aio-geojson-geonetnz-volcano 962 + ]; 963 + "gios" = ps: with ps; [ 964 + gios 965 + ]; 966 + "github" = ps: with ps; [ 967 + aiogithubapi 968 + ]; 969 + "gitlab_ci" = ps: with ps; [ 970 + python-gitlab 971 + ]; 972 + "gitter" = ps: with ps; [ 973 + ]; # missing inputs: gitterpy 974 + "glances" = ps: with ps; [ 975 + glances-api 976 + ]; 977 + "goalfeed" = ps: with ps; [ 978 + ]; # missing inputs: pysher 979 + "goalzero" = ps: with ps; [ 980 + goalzero 981 + ]; 982 + "gogogate2" = ps: with ps; [ 983 + ismartgate 984 + ]; 985 + "goodwe" = ps: with ps; [ 986 + goodwe 987 + ]; 988 + "google" = ps: with ps; [ 989 + aiohttp-cors 990 + google-api-python-client 991 + httplib2 992 + oauth2client 993 + ]; 994 + "google_assistant" = ps: with ps; [ 995 + pyturbojpeg 996 + aiohttp-cors 997 + ]; 998 + "google_cloud" = ps: with ps; [ 999 + google-cloud-texttospeech 1000 + ]; 1001 + "google_domains" = ps: with ps; [ 1002 + ]; 1003 + "google_maps" = ps: with ps; [ 1004 + locationsharinglib 1005 + ]; 1006 + "google_pubsub" = ps: with ps; [ 1007 + google-cloud-pubsub 1008 + ]; 1009 + "google_translate" = ps: with ps; [ 1010 + gtts 1011 + ]; 1012 + "google_travel_time" = ps: with ps; [ 1013 + googlemaps 1014 + ]; 1015 + "google_wifi" = ps: with ps; [ 1016 + ]; 1017 + "gpsd" = ps: with ps; [ 1018 + gps3 1019 + ]; 1020 + "gpslogger" = ps: with ps; [ 1021 + aiohttp-cors 1022 + ]; 1023 + "graphite" = ps: with ps; [ 1024 + ]; 1025 + "gree" = ps: with ps; [ 1026 + greeclimate 1027 + ]; 1028 + "greeneye_monitor" = ps: with ps; [ 1029 + ]; # missing inputs: greeneye_monitor 1030 + "greenwave" = ps: with ps; [ 1031 + ]; # missing inputs: greenwavereality 1032 + "group" = ps: with ps; [ 1033 + ]; 1034 + "growatt_server" = ps: with ps; [ 1035 + growattserver 1036 + ]; 1037 + "gstreamer" = ps: with ps; [ 1038 + ]; # missing inputs: gstreamer-player 1039 + "gtfs" = ps: with ps; [ 1040 + pygtfs 1041 + ]; 1042 + "guardian" = ps: with ps; [ 1043 + aioguardian 1044 + ]; 1045 + "habitica" = ps: with ps; [ 1046 + habitipy 1047 + ]; 1048 + "hangouts" = ps: with ps; [ 1049 + hangups 1050 + ]; 1051 + "harman_kardon_avr" = ps: with ps; [ 1052 + ]; # missing inputs: hkavr 1053 + "harmony" = ps: with ps; [ 1054 + aioharmony 1055 + ]; 1056 + "hassio" = ps: with ps; [ 1057 + aiohttp-cors 1058 + fnvhash 1059 + home-assistant-frontend 1060 + lru-dict 1061 + pillow 1062 + sqlalchemy 1063 + ]; 1064 + "haveibeenpwned" = ps: with ps; [ 1065 + ]; 1066 + "hddtemp" = ps: with ps; [ 1067 + ]; 1068 + "hdmi_cec" = ps: with ps; [ 1069 + pycec 1070 + ]; 1071 + "heatmiser" = ps: with ps; [ 1072 + ]; # missing inputs: heatmiserV3 1073 + "heos" = ps: with ps; [ 1074 + pyheos 1075 + ]; 1076 + "here_travel_time" = ps: with ps; [ 1077 + herepy 1078 + ]; 1079 + "hikvision" = ps: with ps; [ 1080 + ]; # missing inputs: pyhik 1081 + "hikvisioncam" = ps: with ps; [ 1082 + hikvision 1083 + ]; 1084 + "hisense_aehw4a1" = ps: with ps; [ 1085 + pyaehw4a1 1086 + ]; 1087 + "history" = ps: with ps; [ 1088 + aiohttp-cors 1089 + fnvhash 1090 + lru-dict 1091 + sqlalchemy 1092 + ]; 1093 + "history_stats" = ps: with ps; [ 1094 + fnvhash 1095 + lru-dict 1096 + sqlalchemy 1097 + ]; 1098 + "hitron_coda" = ps: with ps; [ 1099 + ]; 1100 + "hive" = ps: with ps; [ 1101 + pyhiveapi 1102 + ]; 1103 + "hlk_sw16" = ps: with ps; [ 1104 + hlk-sw16 1105 + ]; 1106 + "home_connect" = ps: with ps; [ 1107 + aiohttp-cors 1108 + homeconnect 1109 + ]; 1110 + "home_plus_control" = ps: with ps; [ 1111 + aiohttp-cors 1112 + homepluscontrol 1113 + ]; 1114 + "homeassistant" = ps: with ps; [ 1115 + ]; 1116 + "homekit" = ps: with ps; [ 1117 + hap-python 1118 + pyqrcode 1119 + pyturbojpeg 1120 + aiohttp-cors 1121 + base36 1122 + fnvhash 1123 + ha-ffmpeg 1124 + ifaddr 1125 + zeroconf 1126 + ]; 1127 + "homekit_controller" = ps: with ps; [ 1128 + aiohomekit 1129 + aiohttp-cors 1130 + ifaddr 1131 + zeroconf 1132 + ]; 1133 + "homematic" = ps: with ps; [ 1134 + pyhomematic 1135 + ]; 1136 + "homematicip_cloud" = ps: with ps; [ 1137 + homematicip 1138 + ]; 1139 + "homewizard" = ps: with ps; [ 1140 + aiohwenergy 1141 + ]; 1142 + "homeworks" = ps: with ps; [ 1143 + pyhomeworks 1144 + ]; 1145 + "honeywell" = ps: with ps; [ 1146 + somecomfort 1147 + ]; 1148 + "horizon" = ps: with ps; [ 1149 + ]; # missing inputs: horimote 1150 + "hp_ilo" = ps: with ps; [ 1151 + python-hpilo 1152 + ]; 1153 + "html5" = ps: with ps; [ 1154 + aiohttp-cors 1155 + pywebpush 1156 + ]; 1157 + "http" = ps: with ps; [ 1158 + aiohttp-cors 1159 + ]; 1160 + "huawei_lte" = ps: with ps; [ 1161 + huawei-lte-api 1162 + stringcase 1163 + url-normalize 1164 + ]; 1165 + "hue" = ps: with ps; [ 1166 + aiohue 1167 + ]; 1168 + "huisbaasje" = ps: with ps; [ 1169 + huisbaasje-client 1170 + ]; 1171 + "humidifier" = ps: with ps; [ 1172 + ]; 1173 + "hunterdouglas_powerview" = ps: with ps; [ 1174 + aiopvapi 1175 + ]; 1176 + "hvv_departures" = ps: with ps; [ 1177 + pygti 1178 + ]; 1179 + "hydrawise" = ps: with ps; [ 1180 + hydrawiser 1181 + ]; 1182 + "hyperion" = ps: with ps; [ 1183 + hyperion-py 1184 + ]; 1185 + "ialarm" = ps: with ps; [ 1186 + pyialarm 1187 + ]; 1188 + "iammeter" = ps: with ps; [ 1189 + ]; # missing inputs: iammeter 1190 + "iaqualink" = ps: with ps; [ 1191 + iaqualink 1192 + ]; 1193 + "icloud" = ps: with ps; [ 1194 + pyicloud 1195 + ]; 1196 + "idteck_prox" = ps: with ps; [ 1197 + ]; # missing inputs: rfk101py 1198 + "ifttt" = ps: with ps; [ 1199 + aiohttp-cors 1200 + pyfttt 1201 + ]; 1202 + "iglo" = ps: with ps; [ 1203 + ]; # missing inputs: iglo 1204 + "ign_sismologia" = ps: with ps; [ 1205 + georss-ign-sismologia-client 1206 + ]; 1207 + "ihc" = ps: with ps; [ 1208 + defusedxml 1209 + ]; # missing inputs: ihcsdk 1210 + "image" = ps: with ps; [ 1211 + aiohttp-cors 1212 + pillow 1213 + ]; 1214 + "image_processing" = ps: with ps; [ 1215 + pyturbojpeg 1216 + aiohttp-cors 1217 + ]; 1218 + "imap" = ps: with ps; [ 1219 + aioimaplib 1220 + ]; 1221 + "imap_email_content" = ps: with ps; [ 1222 + ]; 1223 + "incomfort" = ps: with ps; [ 1224 + incomfort-client 1225 + ]; 1226 + "influxdb" = ps: with ps; [ 1227 + influxdb-client 1228 + influxdb 1229 + ]; 1230 + "input_boolean" = ps: with ps; [ 1231 + ]; 1232 + "input_button" = ps: with ps; [ 1233 + ]; 1234 + "input_datetime" = ps: with ps; [ 1235 + ]; 1236 + "input_number" = ps: with ps; [ 1237 + ]; 1238 + "input_select" = ps: with ps; [ 1239 + ]; 1240 + "input_text" = ps: with ps; [ 1241 + ]; 1242 + "insteon" = ps: with ps; [ 1243 + pyinsteon 1244 + ]; 1245 + "integration" = ps: with ps; [ 1246 + ]; 1247 + "intellifire" = ps: with ps; [ 1248 + intellifire4py 1249 + ]; 1250 + "intent" = ps: with ps; [ 1251 + aiohttp-cors 1252 + ]; 1253 + "intent_script" = ps: with ps; [ 1254 + ]; 1255 + "intesishome" = ps: with ps; [ 1256 + pyintesishome 1257 + ]; 1258 + "ios" = ps: with ps; [ 1259 + aiohttp-cors 1260 + ifaddr 1261 + zeroconf 1262 + ]; 1263 + "iotawatt" = ps: with ps; [ 1264 + iotawattpy 1265 + ]; 1266 + "iperf3" = ps: with ps; [ 1267 + ]; # missing inputs: iperf3 1268 + "ipma" = ps: with ps; [ 1269 + pyipma 1270 + ]; 1271 + "ipp" = ps: with ps; [ 1272 + pyipp 1273 + ]; 1274 + "iqvia" = ps: with ps; [ 1275 + numpy 1276 + pyiqvia 1277 + ]; 1278 + "irish_rail_transport" = ps: with ps; [ 1279 + ]; # missing inputs: pyirishrail 1280 + "islamic_prayer_times" = ps: with ps; [ 1281 + prayer-times-calculator 1282 + ]; 1283 + "iss" = ps: with ps; [ 1284 + ]; # missing inputs: pyiss 1285 + "isy994" = ps: with ps; [ 1286 + pyisy 1287 + ]; 1288 + "itach" = ps: with ps; [ 1289 + ]; # missing inputs: pyitachip2ir 1290 + "itunes" = ps: with ps; [ 1291 + ]; 1292 + "izone" = ps: with ps; [ 1293 + python-izone 1294 + ]; 1295 + "jellyfin" = ps: with ps; [ 1296 + jellyfin-apiclient-python 1297 + ]; 1298 + "jewish_calendar" = ps: with ps; [ 1299 + hdate 1300 + ]; 1301 + "joaoapps_join" = ps: with ps; [ 1302 + ]; # missing inputs: python-join-api 1303 + "juicenet" = ps: with ps; [ 1304 + python-juicenet 1305 + ]; 1306 + "kaiterra" = ps: with ps; [ 1307 + ]; # missing inputs: kaiterra-async-client 1308 + "kaleidescape" = ps: with ps; [ 1309 + ]; # missing inputs: pykaleidescape 1310 + "kankun" = ps: with ps; [ 1311 + ]; 1312 + "keba" = ps: with ps; [ 1313 + ]; # missing inputs: keba-kecontact 1314 + "keenetic_ndms2" = ps: with ps; [ 1315 + ndms2-client 1316 + ]; 1317 + "kef" = ps: with ps; [ 1318 + aiokef 1319 + getmac 1320 + ]; 1321 + "keyboard" = ps: with ps; [ 1322 + ]; # missing inputs: pyuserinput 1323 + "keyboard_remote" = ps: with ps; [ 1324 + aionotify 1325 + evdev 1326 + ]; 1327 + "kira" = ps: with ps; [ 1328 + pykira 1329 + ]; 1330 + "kiwi" = ps: with ps; [ 1331 + ]; # missing inputs: kiwiki-client 1332 + "kmtronic" = ps: with ps; [ 1333 + pykmtronic 1334 + ]; 1335 + "knx" = ps: with ps; [ 1336 + xknx 1337 + ]; 1338 + "kodi" = ps: with ps; [ 1339 + aiohttp-cors 1340 + pykodi 1341 + ]; 1342 + "konnected" = ps: with ps; [ 1343 + aiohttp-cors 1344 + konnected 1345 + ]; 1346 + "kostal_plenticore" = ps: with ps; [ 1347 + ]; # missing inputs: kostal_plenticore 1348 + "kraken" = ps: with ps; [ 1349 + krakenex 1350 + pykrakenapi 1351 + ]; 1352 + "kulersky" = ps: with ps; [ 1353 + pykulersky 1354 + ]; 1355 + "kwb" = ps: with ps; [ 1356 + ]; # missing inputs: pykwb 1357 + "lacrosse" = ps: with ps; [ 1358 + pylacrosse 1359 + ]; 1360 + "lametric" = ps: with ps; [ 1361 + lmnotify 1362 + ]; 1363 + "lannouncer" = ps: with ps; [ 1364 + ]; 1365 + "lastfm" = ps: with ps; [ 1366 + pylast 1367 + ]; 1368 + "launch_library" = ps: with ps; [ 1369 + pylaunches 1370 + ]; 1371 + "lcn" = ps: with ps; [ 1372 + pypck 1373 + ]; 1374 + "lg_netcast" = ps: with ps; [ 1375 + pylgnetcast 1376 + ]; 1377 + "lg_soundbar" = ps: with ps; [ 1378 + temescal 1379 + ]; 1380 + "life360" = ps: with ps; [ 1381 + life360 1382 + ]; 1383 + "lifx" = ps: with ps; [ 1384 + aiolifx 1385 + aiolifx-effects 1386 + ]; 1387 + "lifx_cloud" = ps: with ps; [ 1388 + ]; 1389 + "light" = ps: with ps; [ 1390 + ]; 1391 + "lightwave" = ps: with ps; [ 1392 + lightwave 1393 + ]; 1394 + "limitlessled" = ps: with ps; [ 1395 + limitlessled 1396 + ]; 1397 + "linksys_smart" = ps: with ps; [ 1398 + ]; 1399 + "linode" = ps: with ps; [ 1400 + linode-api 1401 + ]; 1402 + "linux_battery" = ps: with ps; [ 1403 + batinfo 1404 + ]; 1405 + "lirc" = ps: with ps; [ 1406 + ]; # missing inputs: python-lirc 1407 + "litejet" = ps: with ps; [ 1408 + ]; # missing inputs: pylitejet 1409 + "litterrobot" = ps: with ps; [ 1410 + pylitterbot 1411 + ]; 1412 + "llamalab_automate" = ps: with ps; [ 1413 + ]; 1414 + "local_file" = ps: with ps; [ 1415 + ]; 1416 + "local_ip" = ps: with ps; [ 1417 + aiohttp-cors 1418 + ifaddr 1419 + ]; 1420 + "locative" = ps: with ps; [ 1421 + aiohttp-cors 1422 + ]; 1423 + "lock" = ps: with ps; [ 1424 + ]; 1425 + "logbook" = ps: with ps; [ 1426 + aiohttp-cors 1427 + fnvhash 1428 + home-assistant-frontend 1429 + lru-dict 1430 + pillow 1431 + sqlalchemy 1432 + ]; 1433 + "logentries" = ps: with ps; [ 1434 + ]; 1435 + "logger" = ps: with ps; [ 1436 + ]; 1437 + "logi_circle" = ps: with ps; [ 1438 + aiohttp-cors 1439 + ha-ffmpeg 1440 + ]; # missing inputs: logi_circle 1441 + "london_air" = ps: with ps; [ 1442 + ]; 1443 + "london_underground" = ps: with ps; [ 1444 + ]; # missing inputs: london-tube-status 1445 + "lookin" = ps: with ps; [ 1446 + aiolookin 1447 + ]; 1448 + "lovelace" = ps: with ps; [ 1449 + ]; 1450 + "luci" = ps: with ps; [ 1451 + openwrt-luci-rpc 1452 + ]; 1453 + "luftdaten" = ps: with ps; [ 1454 + luftdaten 1455 + ]; 1456 + "lupusec" = ps: with ps; [ 1457 + lupupy 1458 + ]; 1459 + "lutron" = ps: with ps; [ 1460 + pylutron 1461 + ]; 1462 + "lutron_caseta" = ps: with ps; [ 1463 + pylutron-caseta 1464 + ]; 1465 + "lw12wifi" = ps: with ps; [ 1466 + ]; # missing inputs: lw12 1467 + "lyric" = ps: with ps; [ 1468 + aiohttp-cors 1469 + aiolyric 1470 + ]; 1471 + "magicseaweed" = ps: with ps; [ 1472 + ]; # missing inputs: magicseaweed 1473 + "mailbox" = ps: with ps; [ 1474 + aiohttp-cors 1475 + ]; 1476 + "mailgun" = ps: with ps; [ 1477 + aiohttp-cors 1478 + ]; # missing inputs: pymailgunner 1479 + "manual" = ps: with ps; [ 1480 + ]; 1481 + "manual_mqtt" = ps: with ps; [ 1482 + aiohttp-cors 1483 + paho-mqtt 1484 + ]; 1485 + "map" = ps: with ps; [ 1486 + aiohttp-cors 1487 + fnvhash 1488 + home-assistant-frontend 1489 + lru-dict 1490 + pillow 1491 + sqlalchemy 1492 + ]; 1493 + "marytts" = ps: with ps; [ 1494 + ]; # missing inputs: speak2mary 1495 + "mastodon" = ps: with ps; [ 1496 + mastodon-py 1497 + ]; 1498 + "matrix" = ps: with ps; [ 1499 + matrix-client 1500 + ]; 1501 + "maxcube" = ps: with ps; [ 1502 + maxcube-api 1503 + ]; 1504 + "mazda" = ps: with ps; [ 1505 + pymazda 1506 + ]; 1507 + "media_extractor" = ps: with ps; [ 1508 + aiohttp-cors 1509 + youtube-dl-light 1510 + ]; 1511 + "media_player" = ps: with ps; [ 1512 + aiohttp-cors 1513 + ]; 1514 + "media_source" = ps: with ps; [ 1515 + aiohttp-cors 1516 + ]; 1517 + "mediaroom" = ps: with ps; [ 1518 + pymediaroom 1519 + ]; 1520 + "melcloud" = ps: with ps; [ 1521 + pymelcloud 1522 + ]; 1523 + "melissa" = ps: with ps; [ 1524 + ]; # missing inputs: py-melissa-climate 1525 + "meraki" = ps: with ps; [ 1526 + aiohttp-cors 1527 + ]; 1528 + "message_bird" = ps: with ps; [ 1529 + ]; # missing inputs: messagebird 1530 + "met" = ps: with ps; [ 1531 + pymetno 1532 + ]; 1533 + "met_eireann" = ps: with ps; [ 1534 + pymeteireann 1535 + ]; 1536 + "meteo_france" = ps: with ps; [ 1537 + ]; # missing inputs: meteofrance-api 1538 + "meteoalarm" = ps: with ps; [ 1539 + meteoalertapi 1540 + ]; 1541 + "meteoclimatic" = ps: with ps; [ 1542 + pymeteoclimatic 1543 + ]; 1544 + "metoffice" = ps: with ps; [ 1545 + ]; # missing inputs: datapoint 1546 + "mfi" = ps: with ps; [ 1547 + ]; # missing inputs: mficlient 1548 + "microsoft" = ps: with ps; [ 1549 + ]; # missing inputs: pycsspeechtts 1550 + "microsoft_face" = ps: with ps; [ 1551 + pyturbojpeg 1552 + aiohttp-cors 1553 + ]; 1554 + "microsoft_face_detect" = ps: with ps; [ 1555 + pyturbojpeg 1556 + aiohttp-cors 1557 + ]; 1558 + "microsoft_face_identify" = ps: with ps; [ 1559 + pyturbojpeg 1560 + aiohttp-cors 1561 + ]; 1562 + "miflora" = ps: with ps; [ 1563 + bluepy 1564 + ]; # missing inputs: miflora 1565 + "mikrotik" = ps: with ps; [ 1566 + librouteros 1567 + ]; 1568 + "mill" = ps: with ps; [ 1569 + mill-local 1570 + millheater 1571 + ]; 1572 + "min_max" = ps: with ps; [ 1573 + ]; 1574 + "minecraft_server" = ps: with ps; [ 1575 + aiodns 1576 + getmac 1577 + mcstatus 1578 + ]; 1579 + "minio" = ps: with ps; [ 1580 + minio 1581 + ]; 1582 + "mitemp_bt" = ps: with ps; [ 1583 + ]; # missing inputs: mitemp_bt 1584 + "mjpeg" = ps: with ps; [ 1585 + ]; 1586 + "mobile_app" = ps: with ps; [ 1587 + pynacl 1588 + pyturbojpeg 1589 + aiohttp-cors 1590 + hass-nabucasa 1591 + pillow 1592 + ]; 1593 + "mochad" = ps: with ps; [ 1594 + ]; # missing inputs: pymochad 1595 + "modbus" = ps: with ps; [ 1596 + pymodbus 1597 + ]; 1598 + "modem_callerid" = ps: with ps; [ 1599 + aiohttp-cors 1600 + phone-modem 1601 + pyserial 1602 + pyudev 1603 + ]; 1604 + "modern_forms" = ps: with ps; [ 1605 + aiomodernforms 1606 + ]; 1607 + "moehlenhoff_alpha2" = ps: with ps; [ 1608 + ]; # missing inputs: moehlenhoff-alpha2 1609 + "mold_indicator" = ps: with ps; [ 1610 + ]; 1611 + "monoprice" = ps: with ps; [ 1612 + ]; # missing inputs: pymonoprice 1613 + "moon" = ps: with ps; [ 1614 + ]; 1615 + "motion_blinds" = ps: with ps; [ 1616 + aiohttp-cors 1617 + ifaddr 1618 + motionblinds 1619 + ]; 1620 + "motioneye" = ps: with ps; [ 1621 + aiohttp-cors 1622 + motioneye-client 1623 + ]; 1624 + "mpd" = ps: with ps; [ 1625 + mpd2 1626 + ]; 1627 + "mqtt" = ps: with ps; [ 1628 + aiohttp-cors 1629 + paho-mqtt 1630 + ]; 1631 + "mqtt_eventstream" = ps: with ps; [ 1632 + aiohttp-cors 1633 + paho-mqtt 1634 + ]; 1635 + "mqtt_json" = ps: with ps; [ 1636 + aiohttp-cors 1637 + paho-mqtt 1638 + ]; 1639 + "mqtt_room" = ps: with ps; [ 1640 + aiohttp-cors 1641 + paho-mqtt 1642 + ]; 1643 + "mqtt_statestream" = ps: with ps; [ 1644 + aiohttp-cors 1645 + paho-mqtt 1646 + ]; 1647 + "msteams" = ps: with ps; [ 1648 + pymsteams 1649 + ]; 1650 + "mullvad" = ps: with ps; [ 1651 + mullvad-api 1652 + ]; 1653 + "mutesync" = ps: with ps; [ 1654 + mutesync 1655 + ]; 1656 + "mvglive" = ps: with ps; [ 1657 + PyMVGLive 1658 + ]; 1659 + "my" = ps: with ps; [ 1660 + aiohttp-cors 1661 + fnvhash 1662 + home-assistant-frontend 1663 + lru-dict 1664 + pillow 1665 + sqlalchemy 1666 + ]; 1667 + "mycroft" = ps: with ps; [ 1668 + ]; # missing inputs: mycroftapi 1669 + "myq" = ps: with ps; [ 1670 + pymyq 1671 + ]; 1672 + "mysensors" = ps: with ps; [ 1673 + aiohttp-cors 1674 + paho-mqtt 1675 + pymysensors 1676 + ]; 1677 + "mystrom" = ps: with ps; [ 1678 + aiohttp-cors 1679 + python-mystrom 1680 + ]; 1681 + "mythicbeastsdns" = ps: with ps; [ 1682 + mbddns 1683 + ]; 1684 + "nad" = ps: with ps; [ 1685 + nad-receiver 1686 + ]; 1687 + "nam" = ps: with ps; [ 1688 + nettigo-air-monitor 1689 + ]; 1690 + "namecheapdns" = ps: with ps; [ 1691 + defusedxml 1692 + ]; 1693 + "nanoleaf" = ps: with ps; [ 1694 + aionanoleaf 1695 + ]; 1696 + "neato" = ps: with ps; [ 1697 + aiohttp-cors 1698 + pybotvac 1699 + ]; 1700 + "nederlandse_spoorwegen" = ps: with ps; [ 1701 + nsapi 1702 + ]; 1703 + "ness_alarm" = ps: with ps; [ 1704 + nessclient 1705 + ]; 1706 + "nest" = ps: with ps; [ 1707 + aiohttp-cors 1708 + google-nest-sdm 1709 + ha-ffmpeg 1710 + python-nest 1711 + ]; 1712 + "netatmo" = ps: with ps; [ 1713 + pyturbojpeg 1714 + aiohttp-cors 1715 + hass-nabucasa 1716 + pyatmo 1717 + ]; 1718 + "netdata" = ps: with ps; [ 1719 + netdata 1720 + ]; 1721 + "netgear" = ps: with ps; [ 1722 + pynetgear 1723 + ]; 1724 + "netgear_lte" = ps: with ps; [ 1725 + eternalegypt 1726 + ]; 1727 + "netio" = ps: with ps; [ 1728 + aiohttp-cors 1729 + ]; # missing inputs: pynetio 1730 + "network" = ps: with ps; [ 1731 + aiohttp-cors 1732 + ifaddr 1733 + ]; 1734 + "neurio_energy" = ps: with ps; [ 1735 + ]; # missing inputs: neurio 1736 + "nexia" = ps: with ps; [ 1737 + nexia 1738 + ]; 1739 + "nextbus" = ps: with ps; [ 1740 + ]; # missing inputs: py_nextbusnext 1741 + "nextcloud" = ps: with ps; [ 1742 + nextcloudmonitor 1743 + ]; 1744 + "nfandroidtv" = ps: with ps; [ 1745 + ]; # missing inputs: notifications-android-tv 1746 + "nightscout" = ps: with ps; [ 1747 + py-nightscout 1748 + ]; 1749 + "niko_home_control" = ps: with ps; [ 1750 + niko-home-control 1751 + ]; 1752 + "nilu" = ps: with ps; [ 1753 + niluclient 1754 + ]; 1755 + "nina" = ps: with ps; [ 1756 + pynina 1757 + ]; 1758 + "nissan_leaf" = ps: with ps; [ 1759 + pycarwings2 1760 + ]; 1761 + "nmap_tracker" = ps: with ps; [ 1762 + aiohttp-cors 1763 + getmac 1764 + ifaddr 1765 + netmap 1766 + ]; # missing inputs: mac-vendor-lookup 1767 + "nmbs" = ps: with ps; [ 1768 + ]; # missing inputs: pyrail 1769 + "no_ip" = ps: with ps; [ 1770 + ]; 1771 + "noaa_tides" = ps: with ps; [ 1772 + ]; # missing inputs: noaa-coops 1773 + "norway_air" = ps: with ps; [ 1774 + pymetno 1775 + ]; 1776 + "notify" = ps: with ps; [ 1777 + ]; 1778 + "notify_events" = ps: with ps; [ 1779 + ]; # missing inputs: notify-events 1780 + "notion" = ps: with ps; [ 1781 + aionotion 1782 + ]; 1783 + "nsw_fuel_station" = ps: with ps; [ 1784 + ]; # missing inputs: nsw-fuel-api-client 1785 + "nsw_rural_fire_service_feed" = ps: with ps; [ 1786 + aio-geojson-nsw-rfs-incidents 1787 + ]; 1788 + "nuheat" = ps: with ps; [ 1789 + ]; # missing inputs: nuheat 1790 + "nuki" = ps: with ps; [ 1791 + pynuki 1792 + ]; 1793 + "numato" = ps: with ps; [ 1794 + ]; # missing inputs: numato-gpio 1795 + "number" = ps: with ps; [ 1796 + ]; 1797 + "nut" = ps: with ps; [ 1798 + pynut2 1799 + ]; 1800 + "nws" = ps: with ps; [ 1801 + pynws 1802 + ]; 1803 + "nx584" = ps: with ps; [ 1804 + pynx584 1805 + ]; 1806 + "nzbget" = ps: with ps; [ 1807 + ]; # missing inputs: pynzbgetapi 1808 + "oasa_telematics" = ps: with ps; [ 1809 + ]; # missing inputs: oasatelematics 1810 + "obihai" = ps: with ps; [ 1811 + pyobihai 1812 + ]; 1813 + "octoprint" = ps: with ps; [ 1814 + pyoctoprintapi 1815 + ]; 1816 + "oem" = ps: with ps; [ 1817 + oemthermostat 1818 + ]; 1819 + "ohmconnect" = ps: with ps; [ 1820 + defusedxml 1821 + ]; 1822 + "ombi" = ps: with ps; [ 1823 + pyombi 1824 + ]; 1825 + "omnilogic" = ps: with ps; [ 1826 + omnilogic 1827 + ]; 1828 + "onboarding" = ps: with ps; [ 1829 + aiohttp-cors 1830 + fnvhash 1831 + home-assistant-frontend 1832 + lru-dict 1833 + pillow 1834 + sqlalchemy 1835 + ]; 1836 + "oncue" = ps: with ps; [ 1837 + aiooncue 1838 + ]; 1839 + "ondilo_ico" = ps: with ps; [ 1840 + aiohttp-cors 1841 + ondilo 1842 + ]; 1843 + "onewire" = ps: with ps; [ 1844 + pi1wire 1845 + pyownet 1846 + ]; 1847 + "onkyo" = ps: with ps; [ 1848 + onkyo-eiscp 1849 + ]; 1850 + "onvif" = ps: with ps; [ 1851 + wsdiscovery 1852 + ha-ffmpeg 1853 + onvif-zeep-async 1854 + ]; 1855 + "open_meteo" = ps: with ps; [ 1856 + open-meteo 1857 + ]; 1858 + "openalpr_cloud" = ps: with ps; [ 1859 + ]; 1860 + "openalpr_local" = ps: with ps; [ 1861 + ]; 1862 + "opencv" = ps: with ps; [ 1863 + numpy 1864 + ]; # missing inputs: opencv-python-headless 1865 + "openerz" = ps: with ps; [ 1866 + openerz-api 1867 + ]; 1868 + "openevse" = ps: with ps; [ 1869 + openevsewifi 1870 + ]; 1871 + "openexchangerates" = ps: with ps; [ 1872 + ]; 1873 + "opengarage" = ps: with ps; [ 1874 + open-garage 1875 + ]; 1876 + "openhardwaremonitor" = ps: with ps; [ 1877 + ]; 1878 + "openhome" = ps: with ps; [ 1879 + openhomedevice 1880 + ]; 1881 + "opensensemap" = ps: with ps; [ 1882 + opensensemap-api 1883 + ]; 1884 + "opensky" = ps: with ps; [ 1885 + ]; 1886 + "opentherm_gw" = ps: with ps; [ 1887 + pyotgw 1888 + ]; 1889 + "openuv" = ps: with ps; [ 1890 + pyopenuv 1891 + ]; 1892 + "openweathermap" = ps: with ps; [ 1893 + pyowm 1894 + ]; 1895 + "opnsense" = ps: with ps; [ 1896 + pyopnsense 1897 + ]; 1898 + "opple" = ps: with ps; [ 1899 + ]; # missing inputs: pyoppleio 1900 + "oru" = ps: with ps; [ 1901 + ]; # missing inputs: oru 1902 + "orvibo" = ps: with ps; [ 1903 + orvibo 1904 + ]; 1905 + "osramlightify" = ps: with ps; [ 1906 + ]; # missing inputs: lightify 1907 + "otp" = ps: with ps; [ 1908 + pyotp 1909 + ]; 1910 + "overkiz" = ps: with ps; [ 1911 + pyoverkiz 1912 + ]; 1913 + "ovo_energy" = ps: with ps; [ 1914 + ovoenergy 1915 + ]; 1916 + "owntracks" = ps: with ps; [ 1917 + pynacl 1918 + pyturbojpeg 1919 + aiohttp-cors 1920 + hass-nabucasa 1921 + paho-mqtt 1922 + ]; 1923 + "p1_monitor" = ps: with ps; [ 1924 + p1monitor 1925 + ]; 1926 + "panasonic_bluray" = ps: with ps; [ 1927 + panacotta 1928 + ]; 1929 + "panasonic_viera" = ps: with ps; [ 1930 + ]; # missing inputs: panasonic_viera 1931 + "pandora" = ps: with ps; [ 1932 + pexpect 1933 + ]; 1934 + "panel_custom" = ps: with ps; [ 1935 + aiohttp-cors 1936 + fnvhash 1937 + home-assistant-frontend 1938 + lru-dict 1939 + pillow 1940 + sqlalchemy 1941 + ]; 1942 + "panel_iframe" = ps: with ps; [ 1943 + aiohttp-cors 1944 + fnvhash 1945 + home-assistant-frontend 1946 + lru-dict 1947 + pillow 1948 + sqlalchemy 1949 + ]; 1950 + "peco" = ps: with ps; [ 1951 + ]; # missing inputs: peco 1952 + "pencom" = ps: with ps; [ 1953 + ]; # missing inputs: pencompy 1954 + "persistent_notification" = ps: with ps; [ 1955 + ]; 1956 + "person" = ps: with ps; [ 1957 + aiohttp-cors 1958 + pillow 1959 + ]; 1960 + "philips_js" = ps: with ps; [ 1961 + ha-philipsjs 1962 + ]; 1963 + "pi_hole" = ps: with ps; [ 1964 + hole 1965 + ]; 1966 + "picnic" = ps: with ps; [ 1967 + python-picnic-api 1968 + ]; 1969 + "picotts" = ps: with ps; [ 1970 + ]; 1971 + "pilight" = ps: with ps; [ 1972 + ]; # missing inputs: pilight 1973 + "ping" = ps: with ps; [ 1974 + icmplib 1975 + ]; 1976 + "pioneer" = ps: with ps; [ 1977 + ]; 1978 + "pjlink" = ps: with ps; [ 1979 + ]; # missing inputs: pypjlink2 1980 + "plaato" = ps: with ps; [ 1981 + pyturbojpeg 1982 + aiohttp-cors 1983 + hass-nabucasa 1984 + pyplaato 1985 + ]; 1986 + "plant" = ps: with ps; [ 1987 + fnvhash 1988 + lru-dict 1989 + sqlalchemy 1990 + ]; 1991 + "plex" = ps: with ps; [ 1992 + aiohttp-cors 1993 + plexapi 1994 + plexauth 1995 + plexwebsocket 1996 + ]; 1997 + "plugwise" = ps: with ps; [ 1998 + plugwise 1999 + ]; 2000 + "plum_lightpad" = ps: with ps; [ 2001 + ]; # missing inputs: plumlightpad 2002 + "pocketcasts" = ps: with ps; [ 2003 + ]; # missing inputs: pycketcasts 2004 + "point" = ps: with ps; [ 2005 + aiohttp-cors 2006 + pypoint 2007 + ]; 2008 + "poolsense" = ps: with ps; [ 2009 + poolsense 2010 + ]; 2011 + "powerwall" = ps: with ps; [ 2012 + ]; # missing inputs: tesla-powerwall 2013 + "profiler" = ps: with ps; [ 2014 + guppy3 2015 + objgraph 2016 + pyprof2calltree 2017 + ]; 2018 + "progettihwsw" = ps: with ps; [ 2019 + ]; # missing inputs: progettihwsw 2020 + "proliphix" = ps: with ps; [ 2021 + ]; # missing inputs: proliphix 2022 + "prometheus" = ps: with ps; [ 2023 + aiohttp-cors 2024 + prometheus-client 2025 + ]; 2026 + "prosegur" = ps: with ps; [ 2027 + pyprosegur 2028 + ]; 2029 + "prowl" = ps: with ps; [ 2030 + ]; 2031 + "proximity" = ps: with ps; [ 2032 + ]; 2033 + "proxmoxve" = ps: with ps; [ 2034 + proxmoxer 2035 + ]; 2036 + "proxy" = ps: with ps; [ 2037 + pillow 2038 + ]; 2039 + "ps4" = ps: with ps; [ 2040 + ]; # missing inputs: pyps4-2ndscreen 2041 + "pulseaudio_loopback" = ps: with ps; [ 2042 + pulsectl 2043 + ]; 2044 + "pure_energie" = ps: with ps; [ 2045 + gridnet 2046 + ]; 2047 + "push" = ps: with ps; [ 2048 + aiohttp-cors 2049 + ]; 2050 + "pushbullet" = ps: with ps; [ 2051 + pushbullet 2052 + ]; 2053 + "pushover" = ps: with ps; [ 2054 + pushover-complete 2055 + ]; 2056 + "pushsafer" = ps: with ps; [ 2057 + ]; 2058 + "pvoutput" = ps: with ps; [ 2059 + pvo 2060 + ]; 2061 + "pvpc_hourly_pricing" = ps: with ps; [ 2062 + aiopvpc 2063 + ]; 2064 + "pyload" = ps: with ps; [ 2065 + ]; 2066 + "python_script" = ps: with ps; [ 2067 + restrictedpython 2068 + ]; 2069 + "qbittorrent" = ps: with ps; [ 2070 + ]; # missing inputs: python-qbittorrent 2071 + "qld_bushfire" = ps: with ps; [ 2072 + georss-qld-bushfire-alert-client 2073 + ]; 2074 + "qnap" = ps: with ps; [ 2075 + ]; # missing inputs: qnapstats 2076 + "qrcode" = ps: with ps; [ 2077 + pillow 2078 + pyzbar 2079 + ]; 2080 + "quantum_gateway" = ps: with ps; [ 2081 + quantum-gateway 2082 + ]; 2083 + "qvr_pro" = ps: with ps; [ 2084 + pyqvrpro 2085 + ]; 2086 + "qwikswitch" = ps: with ps; [ 2087 + ]; # missing inputs: pyqwikswitch 2088 + "rachio" = ps: with ps; [ 2089 + pyturbojpeg 2090 + aiohttp-cors 2091 + hass-nabucasa 2092 + rachiopy 2093 + ]; 2094 + "radarr" = ps: with ps; [ 2095 + ]; 2096 + "radio_browser" = ps: with ps; [ 2097 + radios 2098 + ]; 2099 + "radiotherm" = ps: with ps; [ 2100 + radiotherm 2101 + ]; 2102 + "rainbird" = ps: with ps; [ 2103 + ]; # missing inputs: pyrainbird 2104 + "raincloud" = ps: with ps; [ 2105 + ]; # missing inputs: raincloudy 2106 + "rainforest_eagle" = ps: with ps; [ 2107 + aioeagle 2108 + ueagle 2109 + ]; 2110 + "rainmachine" = ps: with ps; [ 2111 + regenmaschine 2112 + ]; 2113 + "random" = ps: with ps; [ 2114 + ]; 2115 + "raspyrfm" = ps: with ps; [ 2116 + ]; # missing inputs: raspyrfm-client 2117 + "rdw" = ps: with ps; [ 2118 + vehicle 2119 + ]; 2120 + "recollect_waste" = ps: with ps; [ 2121 + aiorecollect 2122 + ]; 2123 + "recorder" = ps: with ps; [ 2124 + fnvhash 2125 + lru-dict 2126 + sqlalchemy 2127 + ]; 2128 + "recswitch" = ps: with ps; [ 2129 + ]; # missing inputs: pyrecswitch 2130 + "reddit" = ps: with ps; [ 2131 + praw 2132 + ]; 2133 + "rejseplanen" = ps: with ps; [ 2134 + ]; # missing inputs: rjpl 2135 + "remember_the_milk" = ps: with ps; [ 2136 + httplib2 2137 + ]; # missing inputs: RtmAPI 2138 + "remote" = ps: with ps; [ 2139 + ]; 2140 + "remote_rpi_gpio" = ps: with ps; [ 2141 + ]; # missing inputs: gpiozero 2142 + "renault" = ps: with ps; [ 2143 + renault-api 2144 + ]; 2145 + "repetier" = ps: with ps; [ 2146 + ]; # missing inputs: pyrepetierng 2147 + "rest" = ps: with ps; [ 2148 + jsonpath 2149 + xmltodict 2150 + ]; 2151 + "rest_command" = ps: with ps; [ 2152 + ]; 2153 + "rflink" = ps: with ps; [ 2154 + rflink 2155 + ]; 2156 + "rfxtrx" = ps: with ps; [ 2157 + pyrfxtrx 2158 + ]; 2159 + "ridwell" = ps: with ps; [ 2160 + aioridwell 2161 + ]; 2162 + "ring" = ps: with ps; [ 2163 + ha-ffmpeg 2164 + ring-doorbell 2165 + ]; 2166 + "ripple" = ps: with ps; [ 2167 + ]; # missing inputs: python-ripple-api 2168 + "risco" = ps: with ps; [ 2169 + pyrisco 2170 + ]; 2171 + "rituals_perfume_genie" = ps: with ps; [ 2172 + pyrituals 2173 + ]; 2174 + "rmvtransport" = ps: with ps; [ 2175 + pyrmvtransport 2176 + ]; 2177 + "rocketchat" = ps: with ps; [ 2178 + ]; # missing inputs: rocketchat-API 2179 + "roku" = ps: with ps; [ 2180 + rokuecp 2181 + ]; 2182 + "roomba" = ps: with ps; [ 2183 + roombapy 2184 + ]; 2185 + "roon" = ps: with ps; [ 2186 + roonapi 2187 + ]; 2188 + "route53" = ps: with ps; [ 2189 + boto3 2190 + ]; 2191 + "rova" = ps: with ps; [ 2192 + ]; # missing inputs: rova 2193 + "rpi_camera" = ps: with ps; [ 2194 + ]; 2195 + "rpi_gpio" = ps: with ps; [ 2196 + ]; # missing inputs: RPi.GPIO 2197 + "rpi_power" = ps: with ps; [ 2198 + rpi-bad-power 2199 + ]; 2200 + "rss_feed_template" = ps: with ps; [ 2201 + aiohttp-cors 2202 + ]; 2203 + "rtorrent" = ps: with ps; [ 2204 + ]; 2205 + "rtsp_to_webrtc" = ps: with ps; [ 2206 + pyturbojpeg 2207 + aiohttp-cors 2208 + rtsp-to-webrtc 2209 + ]; 2210 + "ruckus_unleashed" = ps: with ps; [ 2211 + pyruckus 2212 + ]; 2213 + "russound_rio" = ps: with ps; [ 2214 + ]; # missing inputs: russound_rio 2215 + "russound_rnet" = ps: with ps; [ 2216 + ]; # missing inputs: russound 2217 + "sabnzbd" = ps: with ps; [ 2218 + aiohttp-cors 2219 + ifaddr 2220 + netdisco 2221 + zeroconf 2222 + ]; # missing inputs: pysabnzbd 2223 + "safe_mode" = ps: with ps; [ 2224 + pyturbojpeg 2225 + aiohttp-cors 2226 + fnvhash 2227 + hass-nabucasa 2228 + home-assistant-frontend 2229 + lru-dict 2230 + pillow 2231 + sqlalchemy 2232 + ]; 2233 + "saj" = ps: with ps; [ 2234 + ]; # missing inputs: pysaj 2235 + "samsungtv" = ps: with ps; [ 2236 + aiohttp-cors 2237 + async-upnp-client 2238 + getmac 2239 + ifaddr 2240 + samsungctl 2241 + samsungtvws 2242 + wakeonlan 2243 + zeroconf 2244 + ] 2245 + ++ samsungctl.extras-require.websocket 2246 + ++ samsungtvws.extras-require.async 2247 + ++ samsungtvws.extras-require.encrypted; 2248 + "satel_integra" = ps: with ps; [ 2249 + ]; # missing inputs: satel_integra 2250 + "scene" = ps: with ps; [ 2251 + ]; 2252 + "schluter" = ps: with ps; [ 2253 + ]; # missing inputs: py-schluter 2254 + "scrape" = ps: with ps; [ 2255 + beautifulsoup4 2256 + jsonpath 2257 + xmltodict 2258 + ]; 2259 + "screenlogic" = ps: with ps; [ 2260 + screenlogicpy 2261 + ]; 2262 + "script" = ps: with ps; [ 2263 + ]; 2264 + "scsgate" = ps: with ps; [ 2265 + ]; # missing inputs: scsgate 2266 + "search" = ps: with ps; [ 2267 + aiohttp-cors 2268 + ]; 2269 + "season" = ps: with ps; [ 2270 + ephem 2271 + ]; 2272 + "select" = ps: with ps; [ 2273 + ]; 2274 + "sendgrid" = ps: with ps; [ 2275 + sendgrid 2276 + ]; 2277 + "sense" = ps: with ps; [ 2278 + sense-energy 2279 + ]; 2280 + "senseme" = ps: with ps; [ 2281 + aiosenseme 2282 + ]; 2283 + "sensibo" = ps: with ps; [ 2284 + ]; # missing inputs: pysensibo 2285 + "sensor" = ps: with ps; [ 2286 + fnvhash 2287 + lru-dict 2288 + sqlalchemy 2289 + ]; 2290 + "sentry" = ps: with ps; [ 2291 + sentry-sdk 2292 + ]; 2293 + "serial" = ps: with ps; [ 2294 + pyserial-asyncio 2295 + ]; 2296 + "serial_pm" = ps: with ps; [ 2297 + pmsensor 2298 + ]; 2299 + "sesame" = ps: with ps; [ 2300 + ]; # missing inputs: pysesame2 2301 + "seven_segments" = ps: with ps; [ 2302 + pillow 2303 + ]; 2304 + "seventeentrack" = ps: with ps; [ 2305 + py17track 2306 + ]; 2307 + "sharkiq" = ps: with ps; [ 2308 + ]; # missing inputs: sharkiq 2309 + "shell_command" = ps: with ps; [ 2310 + ]; 2311 + "shelly" = ps: with ps; [ 2312 + aioshelly 2313 + ]; 2314 + "shiftr" = ps: with ps; [ 2315 + paho-mqtt 2316 + ]; 2317 + "shodan" = ps: with ps; [ 2318 + shodan 2319 + ]; 2320 + "shopping_list" = ps: with ps; [ 2321 + aiohttp-cors 2322 + ]; 2323 + "sia" = ps: with ps; [ 2324 + pysiaalarm 2325 + ]; 2326 + "sigfox" = ps: with ps; [ 2327 + ]; 2328 + "sighthound" = ps: with ps; [ 2329 + pillow 2330 + simplehound 2331 + ]; 2332 + "signal_messenger" = ps: with ps; [ 2333 + pysignalclirestapi 2334 + ]; 2335 + "simplepush" = ps: with ps; [ 2336 + ]; # missing inputs: simplepush 2337 + "simplisafe" = ps: with ps; [ 2338 + simplisafe-python 2339 + ]; 2340 + "simulated" = ps: with ps; [ 2341 + ]; 2342 + "sinch" = ps: with ps; [ 2343 + ]; # missing inputs: clx-sdk-xms 2344 + "siren" = ps: with ps; [ 2345 + ]; 2346 + "sisyphus" = ps: with ps; [ 2347 + ]; # missing inputs: sisyphus-control 2348 + "sky_hub" = ps: with ps; [ 2349 + pyskyqhub 2350 + ]; 2351 + "skybeacon" = ps: with ps; [ 2352 + pygatt 2353 + ] 2354 + ++ pygatt.extras-require.GATTTOOL; 2355 + "skybell" = ps: with ps; [ 2356 + skybellpy 2357 + ]; 2358 + "slack" = ps: with ps; [ 2359 + slackclient 2360 + ]; 2361 + "sleepiq" = ps: with ps; [ 2362 + asyncsleepiq 2363 + ]; 2364 + "slide" = ps: with ps; [ 2365 + ]; # missing inputs: goslide-api 2366 + "sma" = ps: with ps; [ 2367 + pysma 2368 + ]; 2369 + "smappee" = ps: with ps; [ 2370 + aiohttp-cors 2371 + pysmappee 2372 + ]; 2373 + "smart_meter_texas" = ps: with ps; [ 2374 + smart-meter-texas 2375 + ]; 2376 + "smartthings" = ps: with ps; [ 2377 + pyturbojpeg 2378 + aiohttp-cors 2379 + hass-nabucasa 2380 + pysmartapp 2381 + pysmartthings 2382 + ]; 2383 + "smarttub" = ps: with ps; [ 2384 + python-smarttub 2385 + ]; 2386 + "smarty" = ps: with ps; [ 2387 + ]; # missing inputs: pysmarty 2388 + "smhi" = ps: with ps; [ 2389 + smhi-pkg 2390 + ]; 2391 + "sms" = ps: with ps; [ 2392 + python-gammu 2393 + ]; 2394 + "smtp" = ps: with ps; [ 2395 + ]; 2396 + "snapcast" = ps: with ps; [ 2397 + snapcast 2398 + ]; 2399 + "snips" = ps: with ps; [ 2400 + aiohttp-cors 2401 + paho-mqtt 2402 + ]; 2403 + "snmp" = ps: with ps; [ 2404 + pysnmp 2405 + ]; 2406 + "solaredge" = ps: with ps; [ 2407 + solaredge 2408 + stringcase 2409 + ]; 2410 + "solaredge_local" = ps: with ps; [ 2411 + ]; # missing inputs: solaredge-local 2412 + "solarlog" = ps: with ps; [ 2413 + sunwatcher 2414 + ]; 2415 + "solax" = ps: with ps; [ 2416 + solax 2417 + ]; 2418 + "soma" = ps: with ps; [ 2419 + pysoma 2420 + ]; 2421 + "somfy" = ps: with ps; [ 2422 + aiohttp-cors 2423 + pymfy 2424 + ]; 2425 + "somfy_mylink" = ps: with ps; [ 2426 + somfy-mylink-synergy 2427 + ]; 2428 + "sonarr" = ps: with ps; [ 2429 + aiopyarr 2430 + ]; 2431 + "songpal" = ps: with ps; [ 2432 + python-songpal 2433 + ]; 2434 + "sonos" = ps: with ps; [ 2435 + aiohttp-cors 2436 + async-upnp-client 2437 + ifaddr 2438 + plexapi 2439 + plexauth 2440 + plexwebsocket 2441 + soco 2442 + spotipy 2443 + zeroconf 2444 + ]; 2445 + "sony_projector" = ps: with ps; [ 2446 + pysdcp 2447 + ]; 2448 + "soundtouch" = ps: with ps; [ 2449 + aiohttp-cors 2450 + ifaddr 2451 + libsoundtouch 2452 + zeroconf 2453 + ]; 2454 + "spaceapi" = ps: with ps; [ 2455 + aiohttp-cors 2456 + ]; 2457 + "spc" = ps: with ps; [ 2458 + pyspcwebgw 2459 + ]; 2460 + "speedtestdotnet" = ps: with ps; [ 2461 + speedtest-cli 2462 + ]; 2463 + "spider" = ps: with ps; [ 2464 + spiderpy 2465 + ]; 2466 + "splunk" = ps: with ps; [ 2467 + ]; # missing inputs: hass_splunk 2468 + "spotify" = ps: with ps; [ 2469 + aiohttp-cors 2470 + spotipy 2471 + ]; 2472 + "sql" = ps: with ps; [ 2473 + sqlalchemy 2474 + ]; 2475 + "squeezebox" = ps: with ps; [ 2476 + pysqueezebox 2477 + ]; 2478 + "srp_energy" = ps: with ps; [ 2479 + srpenergy 2480 + ]; 2481 + "ssdp" = ps: with ps; [ 2482 + aiohttp-cors 2483 + async-upnp-client 2484 + ifaddr 2485 + zeroconf 2486 + ]; 2487 + "starline" = ps: with ps; [ 2488 + starline 2489 + ]; 2490 + "starlingbank" = ps: with ps; [ 2491 + ]; # missing inputs: starlingbank 2492 + "startca" = ps: with ps; [ 2493 + xmltodict 2494 + ]; 2495 + "statistics" = ps: with ps; [ 2496 + fnvhash 2497 + lru-dict 2498 + sqlalchemy 2499 + ]; 2500 + "statsd" = ps: with ps; [ 2501 + statsd 2502 + ]; 2503 + "steam_online" = ps: with ps; [ 2504 + ]; # missing inputs: steamodd 2505 + "steamist" = ps: with ps; [ 2506 + aiohttp-cors 2507 + aiosteamist 2508 + discovery30303 2509 + ifaddr 2510 + ]; 2511 + "stiebel_eltron" = ps: with ps; [ 2512 + pymodbus 2513 + ]; # missing inputs: pystiebeleltron 2514 + "stookalert" = ps: with ps; [ 2515 + ]; # missing inputs: stookalert 2516 + "stream" = ps: with ps; [ 2517 + pyturbojpeg 2518 + aiohttp-cors 2519 + av 2520 + ]; 2521 + "streamlabswater" = ps: with ps; [ 2522 + streamlabswater 2523 + ]; 2524 + "stt" = ps: with ps; [ 2525 + aiohttp-cors 2526 + ]; 2527 + "subaru" = ps: with ps; [ 2528 + subarulink 2529 + ]; 2530 + "suez_water" = ps: with ps; [ 2531 + ]; # missing inputs: pysuez 2532 + "sun" = ps: with ps; [ 2533 + ]; 2534 + "supervisord" = ps: with ps; [ 2535 + ]; 2536 + "supla" = ps: with ps; [ 2537 + ]; # missing inputs: asyncpysupla 2538 + "surepetcare" = ps: with ps; [ 2539 + surepy 2540 + ]; 2541 + "swiss_hydrological_data" = ps: with ps; [ 2542 + swisshydrodata 2543 + ]; 2544 + "swiss_public_transport" = ps: with ps; [ 2545 + python-opendata-transport 2546 + ]; 2547 + "swisscom" = ps: with ps; [ 2548 + ]; 2549 + "switch" = ps: with ps; [ 2550 + ]; 2551 + "switch_as_x" = ps: with ps; [ 2552 + ]; 2553 + "switchbot" = ps: with ps; [ 2554 + pyswitchbot 2555 + ]; 2556 + "switcher_kis" = ps: with ps; [ 2557 + aioswitcher 2558 + ]; 2559 + "switchmate" = ps: with ps; [ 2560 + ]; # missing inputs: pySwitchmate 2561 + "syncthing" = ps: with ps; [ 2562 + aiosyncthing 2563 + ]; 2564 + "syncthru" = ps: with ps; [ 2565 + pysyncthru 2566 + url-normalize 2567 + ]; 2568 + "synology_chat" = ps: with ps; [ 2569 + ]; 2570 + "synology_dsm" = ps: with ps; [ 2571 + py-synologydsm-api 2572 + ]; 2573 + "synology_srm" = ps: with ps; [ 2574 + ]; # missing inputs: synology-srm 2575 + "syslog" = ps: with ps; [ 2576 + ]; 2577 + "system_bridge" = ps: with ps; [ 2578 + aiohttp-cors 2579 + ifaddr 2580 + systembridge 2581 + zeroconf 2582 + ]; 2583 + "system_health" = ps: with ps; [ 2584 + aiohttp-cors 2585 + ]; 2586 + "system_log" = ps: with ps; [ 2587 + ]; 2588 + "systemmonitor" = ps: with ps; [ 2589 + psutil 2590 + ]; 2591 + "tado" = ps: with ps; [ 2592 + python-tado 2593 + ]; 2594 + "tag" = ps: with ps; [ 2595 + ]; 2596 + "tailscale" = ps: with ps; [ 2597 + tailscale 2598 + ]; 2599 + "tank_utility" = ps: with ps; [ 2600 + ]; # missing inputs: tank_utility 2601 + "tankerkoenig" = ps: with ps; [ 2602 + pytankerkoenig 2603 + ]; 2604 + "tapsaff" = ps: with ps; [ 2605 + ]; # missing inputs: tapsaff 2606 + "tasmota" = ps: with ps; [ 2607 + aiohttp-cors 2608 + hatasmota 2609 + paho-mqtt 2610 + ]; 2611 + "tautulli" = ps: with ps; [ 2612 + pytautulli 2613 + ]; 2614 + "tcp" = ps: with ps; [ 2615 + ]; 2616 + "ted5000" = ps: with ps; [ 2617 + xmltodict 2618 + ]; 2619 + "telegram" = ps: with ps; [ 2620 + pysocks 2621 + aiohttp-cors 2622 + python-telegram-bot 2623 + ]; 2624 + "telegram_bot" = ps: with ps; [ 2625 + pysocks 2626 + aiohttp-cors 2627 + python-telegram-bot 2628 + ]; 2629 + "tellduslive" = ps: with ps; [ 2630 + tellduslive 2631 + ]; 2632 + "tellstick" = ps: with ps; [ 2633 + ]; # missing inputs: tellcore-net tellcore-py 2634 + "telnet" = ps: with ps; [ 2635 + ]; 2636 + "temper" = ps: with ps; [ 2637 + ]; # missing inputs: temperusb 2638 + "template" = ps: with ps; [ 2639 + ]; 2640 + "tensorflow" = ps: with ps; [ 2641 + numpy 2642 + pillow 2643 + pycocotools 2644 + tensorflow 2645 + ]; # missing inputs: tf-models-official 2646 + "tesla_wall_connector" = ps: with ps; [ 2647 + tesla-wall-connector 2648 + ]; 2649 + "tfiac" = ps: with ps; [ 2650 + ]; # missing inputs: pytfiac 2651 + "thermoworks_smoke" = ps: with ps; [ 2652 + stringcase 2653 + ]; # missing inputs: thermoworks_smoke 2654 + "thethingsnetwork" = ps: with ps; [ 2655 + ]; 2656 + "thingspeak" = ps: with ps; [ 2657 + ]; # missing inputs: thingspeak 2658 + "thinkingcleaner" = ps: with ps; [ 2659 + ]; # missing inputs: pythinkingcleaner 2660 + "thomson" = ps: with ps; [ 2661 + ]; 2662 + "threshold" = ps: with ps; [ 2663 + ]; 2664 + "tibber" = ps: with ps; [ 2665 + fnvhash 2666 + lru-dict 2667 + pytibber 2668 + sqlalchemy 2669 + ]; 2670 + "tikteck" = ps: with ps; [ 2671 + ]; # missing inputs: tikteck 2672 + "tile" = ps: with ps; [ 2673 + pytile 2674 + ]; 2675 + "time_date" = ps: with ps; [ 2676 + ]; 2677 + "timer" = ps: with ps; [ 2678 + ]; 2679 + "tmb" = ps: with ps; [ 2680 + tmb 2681 + ]; 2682 + "tod" = ps: with ps; [ 2683 + ]; 2684 + "todoist" = ps: with ps; [ 2685 + todoist 2686 + ]; 2687 + "tolo" = ps: with ps; [ 2688 + tololib 2689 + ]; 2690 + "tomato" = ps: with ps; [ 2691 + ]; 2692 + "tomorrowio" = ps: with ps; [ 2693 + ]; # missing inputs: pytomorrowio 2694 + "toon" = ps: with ps; [ 2695 + pyturbojpeg 2696 + aiohttp-cors 2697 + hass-nabucasa 2698 + toonapi 2699 + ]; 2700 + "torque" = ps: with ps; [ 2701 + aiohttp-cors 2702 + ]; 2703 + "totalconnect" = ps: with ps; [ 2704 + total-connect-client 2705 + ]; 2706 + "touchline" = ps: with ps; [ 2707 + ]; # missing inputs: pytouchline 2708 + "tplink" = ps: with ps; [ 2709 + aiohttp-cors 2710 + ifaddr 2711 + python-kasa 2712 + ]; 2713 + "tplink_lte" = ps: with ps; [ 2714 + ]; # missing inputs: tp-connected 2715 + "traccar" = ps: with ps; [ 2716 + aiohttp-cors 2717 + pytraccar 2718 + stringcase 2719 + ]; 2720 + "trace" = ps: with ps; [ 2721 + ]; 2722 + "tractive" = ps: with ps; [ 2723 + aiotractive 2724 + ]; 2725 + "tradfri" = ps: with ps; [ 2726 + pytradfri 2727 + ] 2728 + ++ pytradfri.extras-require.async; 2729 + "trafikverket_train" = ps: with ps; [ 2730 + pytrafikverket 2731 + ]; 2732 + "trafikverket_weatherstation" = ps: with ps; [ 2733 + pytrafikverket 2734 + ]; 2735 + "transmission" = ps: with ps; [ 2736 + transmissionrpc 2737 + ]; 2738 + "transport_nsw" = ps: with ps; [ 2739 + pytransportnsw 2740 + ]; 2741 + "travisci" = ps: with ps; [ 2742 + ]; # missing inputs: TravisPy 2743 + "trend" = ps: with ps; [ 2744 + numpy 2745 + ]; 2746 + "tts" = ps: with ps; [ 2747 + aiohttp-cors 2748 + mutagen 2749 + ]; 2750 + "tuya" = ps: with ps; [ 2751 + ha-ffmpeg 2752 + tuya-iot-py-sdk 2753 + ]; 2754 + "twentemilieu" = ps: with ps; [ 2755 + twentemilieu 2756 + ]; 2757 + "twilio" = ps: with ps; [ 2758 + aiohttp-cors 2759 + twilio 2760 + ]; 2761 + "twilio_call" = ps: with ps; [ 2762 + aiohttp-cors 2763 + twilio 2764 + ]; 2765 + "twilio_sms" = ps: with ps; [ 2766 + aiohttp-cors 2767 + twilio 2768 + ]; 2769 + "twinkly" = ps: with ps; [ 2770 + ttls 2771 + ]; 2772 + "twitch" = ps: with ps; [ 2773 + twitchapi 2774 + ]; 2775 + "twitter" = ps: with ps; [ 2776 + twitterapi 2777 + ]; 2778 + "ubus" = ps: with ps; [ 2779 + openwrt-ubus-rpc 2780 + ]; 2781 + "ue_smart_radio" = ps: with ps; [ 2782 + ]; 2783 + "uk_transport" = ps: with ps; [ 2784 + ]; 2785 + "unifi" = ps: with ps; [ 2786 + aiounifi 2787 + ]; 2788 + "unifi_direct" = ps: with ps; [ 2789 + pexpect 2790 + ]; 2791 + "unifiled" = ps: with ps; [ 2792 + unifiled 2793 + ]; 2794 + "unifiprotect" = ps: with ps; [ 2795 + aiohttp-cors 2796 + ]; # missing inputs: pyunifiprotect unifi-discovery 2797 + "universal" = ps: with ps; [ 2798 + ]; 2799 + "upb" = ps: with ps; [ 2800 + upb-lib 2801 + ]; 2802 + "upc_connect" = ps: with ps; [ 2803 + connect-box 2804 + ]; 2805 + "upcloud" = ps: with ps; [ 2806 + upcloud-api 2807 + ]; 2808 + "update" = ps: with ps; [ 2809 + ]; 2810 + "updater" = ps: with ps; [ 2811 + ]; 2812 + "upnp" = ps: with ps; [ 2813 + aiohttp-cors 2814 + async-upnp-client 2815 + ifaddr 2816 + zeroconf 2817 + ]; 2818 + "uptime" = ps: with ps; [ 2819 + ]; 2820 + "uptimerobot" = ps: with ps; [ 2821 + pyuptimerobot 2822 + ]; 2823 + "usb" = ps: with ps; [ 2824 + aiohttp-cors 2825 + pyserial 2826 + pyudev 2827 + ]; 2828 + "uscis" = ps: with ps; [ 2829 + ]; # missing inputs: uscisstatus 2830 + "usgs_earthquakes_feed" = ps: with ps; [ 2831 + geojson-client 2832 + ]; 2833 + "utility_meter" = ps: with ps; [ 2834 + croniter 2835 + ]; 2836 + "uvc" = ps: with ps; [ 2837 + uvcclient 2838 + ]; 2839 + "vacuum" = ps: with ps; [ 2840 + ]; 2841 + "vallox" = ps: with ps; [ 2842 + ]; # missing inputs: vallox-websocket-api 2843 + "vasttrafik" = ps: with ps; [ 2844 + ]; # missing inputs: vtjp 2845 + "velbus" = ps: with ps; [ 2846 + aiohttp-cors 2847 + pyserial 2848 + pyudev 2849 + velbus-aio 2850 + ]; 2851 + "velux" = ps: with ps; [ 2852 + pyvlx 2853 + ]; 2854 + "venstar" = ps: with ps; [ 2855 + venstarcolortouch 2856 + ]; 2857 + "vera" = ps: with ps; [ 2858 + pyvera 2859 + ]; 2860 + "verisure" = ps: with ps; [ 2861 + vsure 2862 + ]; 2863 + "versasense" = ps: with ps; [ 2864 + pyversasense 2865 + ]; 2866 + "version" = ps: with ps; [ 2867 + pyhaversion 2868 + ]; 2869 + "vesync" = ps: with ps; [ 2870 + pyvesync 2871 + ]; 2872 + "viaggiatreno" = ps: with ps; [ 2873 + ]; 2874 + "vicare" = ps: with ps; [ 2875 + pyvicare 2876 + ]; 2877 + "vilfo" = ps: with ps; [ 2878 + vilfo-api-client 2879 + ]; 2880 + "vivotek" = ps: with ps; [ 2881 + libpyvivotek 2882 + ]; 2883 + "vizio" = ps: with ps; [ 2884 + pyvizio 2885 + ]; 2886 + "vlc" = ps: with ps; [ 2887 + python-vlc 2888 + ]; 2889 + "vlc_telnet" = ps: with ps; [ 2890 + aiovlc 2891 + ]; 2892 + "voicerss" = ps: with ps; [ 2893 + ]; 2894 + "volkszaehler" = ps: with ps; [ 2895 + volkszaehler 2896 + ]; 2897 + "volumio" = ps: with ps; [ 2898 + pyvolumio 2899 + ]; 2900 + "volvooncall" = ps: with ps; [ 2901 + volvooncall 2902 + ]; 2903 + "vulcan" = ps: with ps; [ 2904 + vulcan-api 2905 + ]; 2906 + "vultr" = ps: with ps; [ 2907 + vultr 2908 + ]; 2909 + "w800rf32" = ps: with ps; [ 2910 + ]; # missing inputs: pyW800rf32 2911 + "wake_on_lan" = ps: with ps; [ 2912 + wakeonlan 2913 + ]; 2914 + "wallbox" = ps: with ps; [ 2915 + wallbox 2916 + ]; 2917 + "waqi" = ps: with ps; [ 2918 + waqiasync 2919 + ]; 2920 + "water_heater" = ps: with ps; [ 2921 + ]; 2922 + "waterfurnace" = ps: with ps; [ 2923 + waterfurnace 2924 + ]; 2925 + "watson_iot" = ps: with ps; [ 2926 + ]; # missing inputs: ibmiotf 2927 + "watson_tts" = ps: with ps; [ 2928 + ibm-watson 2929 + ]; 2930 + "watttime" = ps: with ps; [ 2931 + aiowatttime 2932 + ]; 2933 + "waze_travel_time" = ps: with ps; [ 2934 + wazeroutecalculator 2935 + ]; 2936 + "weather" = ps: with ps; [ 2937 + ]; 2938 + "webhook" = ps: with ps; [ 2939 + aiohttp-cors 2940 + ]; 2941 + "webostv" = ps: with ps; [ 2942 + aiowebostv 2943 + ]; 2944 + "websocket_api" = ps: with ps; [ 2945 + aiohttp-cors 2946 + ]; 2947 + "wemo" = ps: with ps; [ 2948 + pywemo 2949 + ]; 2950 + "whirlpool" = ps: with ps; [ 2951 + whirlpool-sixth-sense 2952 + ]; 2953 + "whois" = ps: with ps; [ 2954 + whois 2955 + ]; 2956 + "wiffi" = ps: with ps; [ 2957 + wiffi 2958 + ]; 2959 + "wilight" = ps: with ps; [ 2960 + pywilight 2961 + ]; 2962 + "wirelesstag" = ps: with ps; [ 2963 + ]; # missing inputs: wirelesstagpy 2964 + "withings" = ps: with ps; [ 2965 + aiohttp-cors 2966 + ]; # missing inputs: withings-api 2967 + "wiz" = ps: with ps; [ 2968 + aiohttp-cors 2969 + ifaddr 2970 + pywizlight 2971 + ]; 2972 + "wled" = ps: with ps; [ 2973 + wled 2974 + ]; 2975 + "wolflink" = ps: with ps; [ 2976 + ]; # missing inputs: wolf_smartset 2977 + "workday" = ps: with ps; [ 2978 + holidays 2979 + ]; 2980 + "worldclock" = ps: with ps; [ 2981 + ]; 2982 + "worldtidesinfo" = ps: with ps; [ 2983 + ]; 2984 + "worxlandroid" = ps: with ps; [ 2985 + ]; 2986 + "wsdot" = ps: with ps; [ 2987 + ]; 2988 + "x10" = ps: with ps; [ 2989 + ]; 2990 + "xbox" = ps: with ps; [ 2991 + aiohttp-cors 2992 + xbox-webapi 2993 + ]; 2994 + "xbox_live" = ps: with ps; [ 2995 + xboxapi 2996 + ]; 2997 + "xeoma" = ps: with ps; [ 2998 + pyxeoma 2999 + ]; 3000 + "xiaomi" = ps: with ps; [ 3001 + ha-ffmpeg 3002 + ]; 3003 + "xiaomi_aqara" = ps: with ps; [ 3004 + pyxiaomigateway 3005 + aiohttp-cors 3006 + ifaddr 3007 + netdisco 3008 + zeroconf 3009 + ]; 3010 + "xiaomi_miio" = ps: with ps; [ 3011 + construct 3012 + micloud 3013 + python-miio 3014 + ]; 3015 + "xiaomi_tv" = ps: with ps; [ 3016 + pymitv 3017 + ]; 3018 + "xmpp" = ps: with ps; [ 3019 + slixmpp 3020 + ]; 3021 + "xs1" = ps: with ps; [ 3022 + ]; # missing inputs: xs1-api-client 3023 + "yale_smart_alarm" = ps: with ps; [ 3024 + yalesmartalarmclient 3025 + ]; 3026 + "yamaha" = ps: with ps; [ 3027 + rxv 3028 + ]; 3029 + "yamaha_musiccast" = ps: with ps; [ 3030 + aiohttp-cors 3031 + aiomusiccast 3032 + async-upnp-client 3033 + ifaddr 3034 + zeroconf 3035 + ]; 3036 + "yandex_transport" = ps: with ps; [ 3037 + aioymaps 3038 + ]; 3039 + "yandextts" = ps: with ps; [ 3040 + ]; 3041 + "yeelight" = ps: with ps; [ 3042 + aiohttp-cors 3043 + async-upnp-client 3044 + ifaddr 3045 + yeelight 3046 + zeroconf 3047 + ]; 3048 + "yeelightsunflower" = ps: with ps; [ 3049 + ]; # missing inputs: yeelightsunflower 3050 + "yi" = ps: with ps; [ 3051 + aioftp 3052 + ha-ffmpeg 3053 + ]; 3054 + "youless" = ps: with ps; [ 3055 + youless-api 3056 + ]; 3057 + "zabbix" = ps: with ps; [ 3058 + py-zabbix 3059 + ]; 3060 + "zamg" = ps: with ps; [ 3061 + ]; 3062 + "zengge" = ps: with ps; [ 3063 + bluepy 3064 + ]; # missing inputs: zengge 3065 + "zeroconf" = ps: with ps; [ 3066 + aiohttp-cors 3067 + ifaddr 3068 + zeroconf 3069 + ]; 3070 + "zerproc" = ps: with ps; [ 3071 + pyzerproc 3072 + ]; 3073 + "zestimate" = ps: with ps; [ 3074 + xmltodict 3075 + ]; 3076 + "zha" = ps: with ps; [ 3077 + aiohttp-cors 3078 + bellows 3079 + ifaddr 3080 + pyserial-asyncio 3081 + pyserial 3082 + pyudev 3083 + zeroconf 3084 + zha-quirks 3085 + zigpy-deconz 3086 + zigpy-xbee 3087 + zigpy-zigate 3088 + zigpy-znp 3089 + zigpy 3090 + ]; 3091 + "zhong_hong" = ps: with ps; [ 3092 + ]; # missing inputs: zhong_hong_hvac 3093 + "ziggo_mediabox_xl" = ps: with ps; [ 3094 + ]; # missing inputs: ziggo-mediabox-xl 3095 + "zodiac" = ps: with ps; [ 3096 + ]; 3097 + "zone" = ps: with ps; [ 3098 + ]; 3099 + "zoneminder" = ps: with ps; [ 3100 + zm-py 3101 + ]; 3102 + "zwave_js" = ps: with ps; [ 3103 + aiohttp-cors 3104 + pyserial 3105 + pyudev 3106 + zwave-js-server-python 3107 + ]; 3108 + "zwave_me" = ps: with ps; [ 3109 + aiohttp-cors 3110 + ifaddr 3111 + url-normalize 3112 + zeroconf 3113 + ]; # missing inputs: zwave_me_ws 1019 3114 }; 1020 3115 # components listed in tests/components for which all dependencies are packaged 1021 3116 supportedComponentsWithTests = [
+47 -9
pkgs/servers/home-assistant/parse-requirements.py
··· 98 98 return requirements 99 99 100 100 101 + def repository_root() -> str: 102 + return os.path.abspath(sys.argv[0] + "/../../../..") 103 + 104 + 105 + # For a package attribute and and an extra, check if the package exposes it via passthru.extras-require 106 + def has_extra(package: str, extra: str): 107 + cmd = [ 108 + "nix-instantiate", 109 + repository_root(), 110 + "-A", 111 + f"{package}.extras-require.{extra}", 112 + ] 113 + try: 114 + subprocess.run( 115 + cmd, 116 + check=True, 117 + stdout=subprocess.DEVNULL, 118 + stderr=subprocess.DEVNULL, 119 + ) 120 + except subprocess.CalledProcessError: 121 + return False 122 + return True 123 + 124 + 101 125 def dump_packages() -> Dict[str, Dict[str, str]]: 102 126 # Store a JSON dump of Nixpkgs' python3Packages 103 127 output = subprocess.check_output( 104 128 [ 105 129 "nix-env", 106 130 "-f", 107 - os.path.dirname(sys.argv[0]) + "/../../..", 131 + repository_root(), 108 132 "-qa", 109 133 "-A", 110 134 PKG_SET, ··· 182 158 outdated = {} 183 159 for component in sorted(components.keys()): 184 160 attr_paths = [] 161 + extra_attrs = [] 185 162 missing_reqs = [] 186 163 reqs = sorted(get_reqs(components, component, set())) 187 164 for req in reqs: ··· 190 165 # Therefore, if there's a "#" in the line, only take the part after it 191 166 req = req[req.find("#") + 1 :] 192 167 name, required_version = req.split("==", maxsplit=1) 193 - # Remove extra_require from name, e.g. samsungctl instead of 194 - # samsungctl[websocket] 168 + # Split package name and extra requires 169 + extras = [] 195 170 if name.endswith("]"): 171 + extras = name[name.find("[")+1:name.find("]")].split(",") 196 172 name = name[:name.find("[")] 197 173 attr_path = name_to_attr_path(name, packages) 198 174 if our_version := get_pkg_version(name, packages): ··· 204 178 } 205 179 if attr_path is not None: 206 180 # Add attribute path without "python3Packages." prefix 207 - attr_paths.append(attr_path[len(PKG_SET + ".") :]) 181 + pname = attr_path[len(PKG_SET + "."):] 182 + attr_paths.append(pname) 183 + for extra in extras: 184 + # Check if package advertises extra requirements 185 + extra_attr = f"{pname}.extras-require.{extra}" 186 + if has_extra(attr_path, extra): 187 + extra_attrs.append(extra_attr) 188 + else: 189 + missing_reqs.append(extra_attr) 190 + 208 191 else: 209 192 missing_reqs.append(name) 210 193 else: 211 - build_inputs[component] = (attr_paths, missing_reqs) 194 + build_inputs[component] = (attr_paths, extra_attrs, missing_reqs) 212 195 213 196 with open(os.path.dirname(sys.argv[0]) + "/component-packages.nix", "w") as f: 214 197 f.write("# Generated by parse-requirements.py\n") ··· 226 191 f.write(f' version = "{version}";\n') 227 192 f.write(" components = {\n") 228 193 for component, deps in build_inputs.items(): 229 - available, missing = deps 194 + available, extras, missing = deps 230 195 f.write(f' "{component}" = ps: with ps; [') 231 196 if available: 232 - f.write(" " + " ".join(available)) 233 - f.write(" ];") 197 + f.write("\n " + "\n ".join(available)) 198 + f.write("\n ]") 199 + if extras: 200 + f.write("\n ++ " + "\n ++ ".join(extras)) 201 + f.write(";") 234 202 if len(missing) > 0: 235 203 f.write(f" # missing inputs: {' '.join(missing)}") 236 204 f.write("\n") ··· 241 203 f.write(" # components listed in tests/components for which all dependencies are packaged\n") 242 204 f.write(" supportedComponentsWithTests = [\n") 243 205 for component, deps in build_inputs.items(): 244 - available, missing = deps 206 + available, extras, missing = deps 245 207 if len(missing) == 0 and component in components_with_tests: 246 208 f.write(f' "{component}"' + "\n") 247 209 f.write(" ];\n")
+32 -1
pkgs/servers/web-apps/invoiceplane/default.nix
··· 1 - { lib, stdenv, fetchurl, writeText, unzip, nixosTests }: 1 + { lib, stdenv, fetchurl, writeText, unzip, nixosTests, fetchpatch }: 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "invoiceplane"; ··· 8 8 url = "https://github.com/InvoicePlane/InvoicePlane/releases/download/v${version}/v${version}.zip"; 9 9 sha256 = "137g0xps4kb3j7f5gz84ql18iggbya6d9dnrfp05g2qcbbp8kqad"; 10 10 }; 11 + 12 + patches = [ 13 + 14 + # Fix CVE-2021-29024, unauthenticated directory listing 15 + # Should be included in a later release > 1.5.11 16 + # https://github.com/NixOS/nixpkgs/issues/166655 17 + # https://github.com/InvoicePlane/InvoicePlane/pull/754 18 + (fetchpatch { 19 + url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/754.patch"; 20 + sha256 = "sha256-EHXw7Zqli/nA3tPIrhxpt8ueXvDtshz0XRzZT78sdQk="; 21 + }) 22 + 23 + # Fix CVE-2021-29023, password reset rate-limiting 24 + # Should be included in a later release > 1.5.11 25 + # https://github.com/NixOS/nixpkgs/issues/166655 26 + # https://github.com/InvoicePlane/InvoicePlane/pull/739 27 + (fetchpatch { 28 + url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/739.patch"; 29 + sha256 = "sha256-6ksJjW6awr3lZsDRxa22pCcRGBVBYyV8+TbhOp6HBq0="; 30 + }) 31 + 32 + # Fix CVE-2021-29022, full path disclosure 33 + # Should be included in a later release > 1.5.11 34 + # https://github.com/NixOS/nixpkgs/issues/166655 35 + # https://github.com/InvoicePlane/InvoicePlane/pull/767 36 + #(fetchpatch { 37 + # url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/767.patch"; 38 + # sha256 = "sha256-rSWDH8KeHSRWLyQEa7RSwv+8+ja9etTz+6Q9XThuwUo="; 39 + #}) 40 + 41 + ]; 11 42 12 43 nativeBuildInputs = [ unzip ]; 13 44
+3 -3
pkgs/shells/zsh/zsh-prezto/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "zsh-prezto"; 5 - version = "unstable-2021-11-16"; 5 + version = "unstable-2022-04-05"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "sorin-ionescu"; 9 9 repo = "prezto"; 10 - rev = "ecaed1cfa7591d2304d7eb5d69b42b54961a7145"; 11 - sha256 = "+7KYBHmzXkdMgyj/x7o7Bf8f1DDFJ6nUMWe8vLUxbZo="; 10 + rev = "2c663313168490d28f607738e962aa45ada0e26b"; 11 + sha256 = "05n2801xqdxc5nx0709mak1pr73l7aq5azd9adm0ym7si3vl59sj"; 12 12 fetchSubmodules = true; 13 13 }; 14 14
+2 -2
pkgs/tools/admin/aliyun-cli/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "aliyun-cli"; 5 - version = "3.0.115"; 5 + version = "3.0.116"; 6 6 7 7 src = fetchFromGitHub { 8 8 rev = "v${version}"; 9 9 owner = "aliyun"; 10 10 repo = pname; 11 11 fetchSubmodules = true; 12 - sha256 = "sha256-lWWycvzZaVoEzEHp392mEDGcrksC4Y9XjGZYeL9RY6s="; 12 + sha256 = "sha256-KZZT7XVhJLfrQ7L3FFOTw9bLT5GqewvDTGQQd/ovjbg="; 13 13 }; 14 14 15 15 vendorSha256 = "sha256-f3GXkAvTe8rPFWCR5TM4mDK/VOQWt2lrZrfJ/Wvw8Uc=";
+2 -2
pkgs/tools/inputmethods/lisgd/default.nix
··· 11 11 12 12 stdenv.mkDerivation rec { 13 13 pname = "lisgd"; 14 - version = "0.3.2"; 14 + version = "0.3.3"; 15 15 16 16 src = fetchFromSourcehut { 17 17 owner = "~mil"; 18 18 repo = "lisgd"; 19 19 rev = version; 20 - sha256 = "sha256-yE2CUv1XDvo8fW0bLS1O2oxgDUu4drCO3jFpxPgAYKU="; 20 + sha256 = "sha256-zcDxR2fKsjuX+vxjhr5UcqEsiNM+zWd2SBaA6Xly3AI="; 21 21 }; 22 22 23 23 inherit patches;
+3 -3
pkgs/tools/misc/cloud-sql-proxy/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "cloud-sql-proxy"; 5 - version = "1.29.0"; 5 + version = "1.30.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "GoogleCloudPlatform"; 9 9 repo = "cloudsql-proxy"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-V/dNS/tbPPkVpgaCkGa5pfH/vj8y7mO9OQDLhgWbRCE="; 11 + sha256 = "sha256-EbUIzAKMqCLsz8rBMWCvw00j6VX2ZYEMtNsMEx30kBU="; 12 12 }; 13 13 14 14 subPackages = [ "cmd/cloud_sql_proxy" ]; 15 15 16 - vendorSha256 = "sha256-6td7rDye0sBUhDn9YARvdCgdfS/8z+VY1wYcEcUzHBs="; 16 + vendorSha256 = "sha256-yxqLGDqdu9vX3ykHq7Kzf8oBH1ydltZkiWNWWM2l0Aw="; 17 17 18 18 checkFlags = [ "-short" ]; 19 19
+2 -2
pkgs/tools/misc/infracost/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "infracost"; 5 - version = "0.9.20"; 5 + version = "0.9.21"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "infracost"; 9 9 rev = "v${version}"; 10 10 repo = "infracost"; 11 - sha256 = "sha256-ujoKnf6f9rrPIxvWlzVnC6q+2BxzhpXgb66clgAuC+8="; 11 + sha256 = "sha256-LoIZbA1K1s3ZLHlRz2SOFxC4nv/Vgpae0qdxIcvAVRQ="; 12 12 }; 13 13 vendorSha256 = "sha256-TfO3+pGxR9dPzigkx89a/Ak+tKiBa6Z0a6U4kIdRsSQ="; 14 14
-3
pkgs/tools/misc/steampipe/default.nix
··· 14 14 vendorSha256 = "sha256-pEQG9BHhsVDVSOoKJBocLXMLjmP72RM+GXz4nYD4D7s="; 15 15 proxyVendor = true; 16 16 17 - # tests are failing for no obvious reasons 18 - doCheck = false; 19 - 20 17 nativeBuildInputs = [ installShellFiles ]; 21 18 22 19 ldflags = [
+6
pkgs/top-level/all-packages.nix
··· 8856 8856 8857 8857 pipe-rename = callPackage ../tools/misc/pipe-rename { }; 8858 8858 8859 + pipecontrol = libsForQt5.callPackage ../applications/audio/pipecontrol { }; 8860 + 8859 8861 pipectl = callPackage ../tools/misc/pipectl { }; 8860 8862 8861 8863 pitivi = callPackage ../applications/video/pitivi { }; ··· 14446 14444 autoconf264 = callPackage ../development/tools/misc/autoconf/2.64.nix { }; 14447 14445 autoconf269 = callPackage ../development/tools/misc/autoconf/2.69.nix { }; 14448 14446 autoconf271 = callPackage ../development/tools/misc/autoconf { }; 14447 + 14448 + acr = callPackage ../development/tools/misc/acr { }; 14449 14449 14450 14450 autocutsel = callPackage ../tools/X11/autocutsel{ }; 14451 14451 ··· 26595 26591 slack-term = callPackage ../applications/networking/instant-messengers/slack-term { }; 26596 26592 26597 26593 singularity = callPackage ../applications/virtualization/singularity { }; 26594 + 26595 + sonixd = callPackage ../applications/audio/sonixd { }; 26598 26596 26599 26597 spectmorph = callPackage ../applications/audio/spectmorph { }; 26600 26598
+2
pkgs/top-level/python-packages.nix
··· 6679 6679 6680 6680 py3exiv2 = callPackage ../development/python-modules/py3exiv2 { }; 6681 6681 6682 + py3rijndael = callPackage ../development/python-modules/py3rijndael { }; 6683 + 6682 6684 py3status = callPackage ../development/python-modules/py3status { }; 6683 6685 6684 6686 py3to2 = callPackage ../development/python-modules/3to2 { };