Merge pull request #115016 from mweinelt/home-assistant

This commit is contained in:
Martin Weinelt 2021-03-06 19:26:20 +01:00 committed by GitHub
commit b349460dd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 249 additions and 82 deletions

View file

@ -183,8 +183,14 @@ in {
};
package = mkOption {
default = pkgs.home-assistant;
defaultText = "pkgs.home-assistant";
default = pkgs.home-assistant.overrideAttrs (oldAttrs: {
doInstallCheck = false;
});
defaultText = literalExample ''
pkgs.home-assistant.overrideAttrs (oldAttrs: {
doInstallCheck = false;
})
'';
type = types.package;
example = literalExample ''
pkgs.home-assistant.override {
@ -192,7 +198,7 @@ in {
}
'';
description = ''
Home Assistant package to use.
Home Assistant package to use. By default the tests are disabled, as they take a considerable amout of time to complete.
Override <literal>extraPackages</literal> or <literal>extraComponents</literal> in order to add additional dependencies.
If you specify <option>config</option> and do not set <option>autoExtraComponents</option>
to <literal>false</literal>, overriding <literal>extraComponents</literal> will have no effect.

View file

@ -24,6 +24,8 @@ in {
services.home-assistant = {
inherit configDir;
enable = true;
# includes the package with all tests enabled
package = pkgs.home-assistant;
config = {
homeassistant = {
name = "Home";

View file

@ -1,22 +1,43 @@
{ aiohttp, buildPythonPackage, fetchFromGitHub, lib, pytest, pytestCheckHook
, pytestcov, pytestrunner, pytest-asyncio, python, pythonOlder }:
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, pytestrunner
, aiohttp
, aioresponses
, pytestCheckHook
, pytestcov
, pytest-asyncio
}:
buildPythonPackage rec {
pname = "accuweather";
version = "0.0.11";
version = "0.1.0";
disabled = pythonOlder "3.8";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "bieniu";
repo = pname;
rev = version;
sha256 = "1sgbw9yldf81phwx6pbvqg9sp767whxymyj0ca9pwx1r6ipr080h";
sha256 = "0jp2x7fgg1shgr1fx296rni00lmjjmjgg141giljzizgd04dwgy3";
};
postPatch = ''
# we don't have pytest-error-for-skips packaged
substituteInPlace pytest.ini --replace "--error-for-skips" ""
'';
nativeBuildInputs = [ pytestrunner ];
propagatedBuildInputs = [ aiohttp ];
checkInputs = [ pytestCheckHook pytestcov pytest-asyncio ];
checkInputs = [
aioresponses
pytestCheckHook
pytestcov
pytest-asyncio
];
meta = with lib; {
description =

View file

@ -1,24 +1,26 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools-scm
, alarmdecoder
}:
buildPythonPackage rec {
pname = "adext";
version = "0.3";
version = "0.4.1";
src = fetchPypi {
inherit pname version;
sha256 = "184qxw6i5ixnhgkjnby4zwn4jg90mxb8xy9vbg80x5w331p4z50f";
sha256 = "1yz1rpfvhbf7kfjck5vadbj9rd3bkx5248whaa3impdrjh7vs03x";
};
postPatch = ''
substituteInPlace setup.py \
--replace "alarmdecoder==1.13.2" "alarmdecoder>=1.13.2"
'';
nativeBuildInputs = [
setuptools-scm
];
propagatedBuildInputs = [ alarmdecoder ];
propagatedBuildInputs = [
alarmdecoder
];
# Tests are not published yet
doCheck = false;

View file

@ -3,14 +3,14 @@
buildPythonPackage rec {
pname = "alarmdecoder";
version = "1.13.9";
version = "1.13.10";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "nutechsoftware";
repo = "alarmdecoder";
rev = version;
sha256 = "0plr2h1qn4ryawbaxf29cfna4wailghhaqy1jcm9kxq6q7b9xqqy";
sha256 = "05581j78181p6mwbfpbkp5irnrzsvps1lslgqrh7xbdcmz5b2nxd";
};
propagatedBuildInputs = [ pyserial pyftdi pyusb pyopenssl ];

View file

@ -1,21 +1,40 @@
{ lib, buildPythonPackage, fetchFromGitHub
, click, click-log, pure-pcapy3
, pyserial-asyncio, voluptuous, zigpy
, asynctest, pytestCheckHook, pytest-asyncio }:
{ lib
, buildPythonPackage
, fetchFromGitHub
, click
, click-log
, pure-pcapy3
, pyserial-asyncio
, voluptuous
, zigpy
, asynctest
, pytestCheckHook
, pytest-asyncio
}:
buildPythonPackage rec {
pname = "bellows";
version = "0.21.0";
version = "0.22.0";
src = fetchFromGitHub {
owner = "zigpy";
repo = "bellows";
rev = version;
sha256 = "1gja7cb1cyzbi19k8awa2gyc3bjam0adapalpk5slxny0vxlc73a";
sha256 = "0il2cwnrcvgxx9jkj1xr2caqyza3kqjys3fpmcx7avy04xbf5dbv";
};
prePatch = ''
substituteInPlace setup.py \
--replace "click-log==0.2.1" "click-log>=0.2.1"
'';
propagatedBuildInputs = [
click click-log pure-pcapy3 pyserial-asyncio voluptuous zigpy
click
click-log
pure-pcapy3
pyserial-asyncio
voluptuous
zigpy
];
checkInputs = [
@ -24,11 +43,6 @@ buildPythonPackage rec {
pytest-asyncio
];
prePatch = ''
substituteInPlace setup.py \
--replace "click-log==0.2.0" "click-log>=0.2.0"
'';
meta = with lib; {
description = "A Python 3 project to implement EZSP for EmberZNet devices";
homepage = "https://github.com/zigpy/bellows";

View file

@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "PlexAPI";
version = "4.3.1";
version = "4.4.0";
disabled = isPy27;
src = fetchFromGitHub {
owner = "pkkid";
repo = "python-plexapi";
rev = version;
sha256 = "sha256-gRXNOGd9YGcGysKbAtiNwi5NxPvv39F6PEXBjiYbVq4=";
sha256 = "0wzdzi5afncinavz5g77ximdr9y2ndzwb0gl819n0l6pnvbxdwp2";
};
propagatedBuildInputs = [

View file

@ -1,7 +1,6 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, poetry-core
, pytest-cov
, pytest-asyncio
@ -13,24 +12,16 @@
buildPythonPackage rec {
pname = "pyvera";
version = "0.3.11";
version = "0.3.13";
format = "pyproject";
src = fetchFromGitHub {
owner = "pavoni";
repo = pname;
rev = version;
sha256 = "0yi2cjd3jag95xa0k24f7d7agi26ywb3219a0j0k8l2nsx2sdi87";
sha256 = "0vh82bwgbq93jrwi9q4da534paknpak8hxi4wwlxh3qcvnpy1njv";
};
patches = [
(fetchpatch {
# build-system section is missing https://github.com/pavoni/pyvera/pull/142
url = "https://github.com/pavoni/pyvera/pull/142/commits/e90995a8d55107118d324e8cf189ddf1d9e3aa6c.patch";
sha256 = "1psq3fiwg20kcwyybzh5g17dzn5fh29lhm238npyg846innbzgs7";
})
];
nativeBuildInputs = [ poetry-core ];
propagatedBuildInputs = [ requests ];

View file

@ -9,13 +9,13 @@
buildPythonPackage rec {
pname = "zha-quirks";
version = "0.0.53";
version = "0.0.54";
src = fetchFromGitHub {
owner = "zigpy";
repo = "zha-device-handlers";
rev = version;
sha256 = "16n99r7bjd3lnxn72lfnxg44n7mkv196vdhkw2sf1nq1an4ks1nc";
sha256 = "1xc4rky9x2n15rsb18vyg4lb2897k14gkz03khgf8gp37bg2dk5h";
};
propagatedBuildInputs = [ aiohttp zigpy ];

View file

@ -17,13 +17,13 @@
buildPythonPackage rec {
pname = "zigpy-znp";
version = "0.3.0";
version = "0.4.0";
src = fetchFromGitHub {
owner = "zha-ng";
repo = "zigpy-znp";
rev = "v${version}";
sha256 = "18dav2n5fqdigf8dl7gcqa9z8l6p2ig6l5q78gqg2wj7wjpncwyj";
sha256 = "1g5jssdnibhb4i4k1js9iy9w40cipf1gdnyp847x0bv6wblzx8rl";
};
propagatedBuildInputs = [
@ -45,11 +45,6 @@ buildPythonPackage rec {
pytestCheckHook
];
disabledTests = [
# zigpy-znp was too slow to sync up with the zigpy 0.29 release and has API breakage, remove >0.3.0
"test_force_remove"
];
meta = with lib; {
description = "A library for zigpy which communicates with TI ZNP radios";
homepage = "https://github.com/zha-ng/zigpy-znp";

View file

@ -2,7 +2,7 @@
# Do not edit!
{
version = "2021.2.3";
version = "2021.3.2";
components = {
"abode" = ps: with ps; [ abodepy ];
"accuweather" = ps: with ps; [ accuweather ];
@ -12,6 +12,7 @@
"adguard" = ps: with ps; [ adguardhome ];
"ads" = ps: with ps; [ pyads ];
"advantage_air" = ps: with ps; [ advantage-air ];
"aemet" = ps: with ps; [ ]; # missing inputs: AEMET-OpenData
"aftership" = ps: with ps; [ pyaftership ];
"agent_dvr" = ps: with ps; [ agent-py ];
"air_quality" = ps: with ps; [ ];
@ -120,13 +121,13 @@
"clickatell" = ps: with ps; [ ];
"clicksend" = ps: with ps; [ ];
"clicksend_tts" = ps: with ps; [ ];
"climacell" = ps: with ps; [ ]; # missing inputs: pyclimacell
"climate" = ps: with ps; [ ];
"cloud" = ps: with ps; [ aiohttp-cors hass-nabucasa ];
"cloudflare" = ps: with ps; [ pycfdns ];
"cmus" = ps: with ps; [ ]; # missing inputs: pycmus
"co2signal" = ps: with ps; [ ]; # missing inputs: co2signal
"coinbase" = ps: with ps; [ ]; # missing inputs: coinbase
"coinmarketcap" = ps: with ps; [ coinmarketcap ];
"color_extractor" = ps: with ps; [ ]; # missing inputs: colorthief
"comed_hourly_pricing" = ps: with ps; [ ];
"comfoconnect" = ps: with ps; [ ]; # missing inputs: pycomfoconnect
@ -142,7 +143,6 @@
"cover" = ps: with ps; [ ];
"cppm_tracker" = ps: with ps; [ ]; # missing inputs: clearpasspy
"cpuspeed" = ps: with ps; [ py-cpuinfo ];
"crimereports" = ps: with ps; [ ]; # missing inputs: crimereports
"cups" = ps: with ps; [ pycups ];
"currencylayer" = ps: with ps; [ ];
"daikin" = ps: with ps; [ pydaikin ];
@ -154,7 +154,7 @@
"deconz" = ps: with ps; [ ]; # missing inputs: pydeconz
"decora" = ps: with ps; [ bluepy ]; # missing inputs: decora
"decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi
"default_config" = ps: with ps; [ pynacl aiohttp-cors defusedxml distro emoji hass-nabucasa netdisco pillow scapy sqlalchemy zeroconf ];
"default_config" = ps: with ps; [ pynacl aiohttp-cors async-upnp-client defusedxml distro emoji hass-nabucasa netdisco pillow scapy sqlalchemy zeroconf ];
"delijn" = ps: with ps; [ ]; # missing inputs: pydelijn
"deluge" = ps: with ps; [ deluge-client ];
"demo" = ps: with ps; [ aiohttp-cors ];
@ -238,6 +238,7 @@
"everlights" = ps: with ps; [ pyeverlights ];
"evohome" = ps: with ps; [ ]; # missing inputs: evohome-async
"ezviz" = ps: with ps; [ ]; # missing inputs: pyezviz
"faa_delays" = ps: with ps; [ faadelays ];
"facebook" = ps: with ps; [ ];
"facebox" = ps: with ps; [ ];
"fail2ban" = ps: with ps; [ ];
@ -276,7 +277,7 @@
"foscam" = ps: with ps; [ ]; # missing inputs: libpyfoscam
"foursquare" = ps: with ps; [ aiohttp-cors ];
"free_mobile" = ps: with ps; [ ]; # missing inputs: freesms
"freebox" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: aiofreepybox
"freebox" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: freebox-api
"freedns" = ps: with ps; [ ];
"fritz" = ps: with ps; [ fritzconnection ];
"fritzbox" = ps: with ps; [ pyfritzhome ];
@ -421,6 +422,7 @@
"keyboard_remote" = ps: with ps; [ aionotify evdev ];
"kira" = ps: with ps; [ pykira ];
"kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client
"kmtronic" = ps: with ps; [ pykmtronic ];
"knx" = ps: with ps; [ xknx ];
"kodi" = ps: with ps; [ ]; # missing inputs: pykodi
"konnected" = ps: with ps; [ aiohttp-cors ]; # missing inputs: konnected
@ -446,6 +448,7 @@
"linux_battery" = ps: with ps; [ batinfo ];
"lirc" = ps: with ps; [ ]; # missing inputs: python-lirc
"litejet" = ps: with ps; [ ]; # missing inputs: pylitejet
"litterrobot" = ps: with ps; [ ]; # missing inputs: pylitterbot
"llamalab_automate" = ps: with ps; [ ];
"local_file" = ps: with ps; [ ];
"local_ip" = ps: with ps; [ ];
@ -466,6 +469,7 @@
"lutron_caseta" = ps: with ps; [ ]; # missing inputs: aiolip pylutron-caseta
"lw12wifi" = ps: with ps; [ ]; # missing inputs: lw12
"lyft" = ps: with ps; [ ]; # missing inputs: lyft_rides
"lyric" = ps: with ps; [ aiohttp-cors aiolyric ];
"magicseaweed" = ps: with ps; [ ]; # missing inputs: magicseaweed
"mailbox" = ps: with ps; [ aiohttp-cors ];
"mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner
@ -476,6 +480,7 @@
"mastodon" = ps: with ps; [ ]; # missing inputs: Mastodon.py
"matrix" = ps: with ps; [ matrix-client ];
"maxcube" = ps: with ps; [ ]; # missing inputs: maxcube-api
"mazda" = ps: with ps; [ pymazda ];
"mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx
"media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ];
"media_player" = ps: with ps; [ aiohttp-cors ];
@ -519,7 +524,9 @@
"mqtt_room" = ps: with ps; [ aiohttp-cors paho-mqtt ];
"mqtt_statestream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
"msteams" = ps: with ps; [ pymsteams ];
"mullvad" = ps: with ps; [ mullvad-api ];
"mvglive" = ps: with ps; [ PyMVGLive ];
"my" = ps: with ps; [ aiohttp-cors pillow ];
"mychevy" = ps: with ps; [ ]; # missing inputs: mychevy
"mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi
"myq" = ps: with ps; [ pymyq ];
@ -560,7 +567,6 @@
"nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client
"nsw_rural_fire_service_feed" = ps: with ps; [ ]; # missing inputs: aio_geojson_nsw_rfs_incidents
"nuheat" = ps: with ps; [ ]; # missing inputs: nuheat
"nuimo_controller" = ps: with ps; [ ]; # missing inputs: --only-binary=all nuimo
"nuki" = ps: with ps; [ pynuki ];
"numato" = ps: with ps; [ ]; # missing inputs: numato-gpio
"number" = ps: with ps; [ ];
@ -622,7 +628,7 @@
"ping" = ps: with ps; [ icmplib ];
"pioneer" = ps: with ps; [ ];
"pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2
"plaato" = ps: with ps; [ aiohttp-cors ];
"plaato" = ps: with ps; [ aiohttp-cors hass-nabucasa pyplaato ];
"plant" = ps: with ps; [ sqlalchemy ];
"plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ];
"plugwise" = ps: with ps; [ plugwise ];
@ -682,6 +688,7 @@
"ring" = ps: with ps; [ ha-ffmpeg ring-doorbell ];
"ripple" = ps: with ps; [ ]; # missing inputs: python-ripple-api
"risco" = ps: with ps; [ pyrisco ];
"rituals_perfume_genie" = ps: with ps; [ pyrituals ];
"rmvtransport" = ps: with ps; [ PyRMVtransport ];
"rocketchat" = ps: with ps; [ ]; # missing inputs: rocketchat-API
"roku" = ps: with ps; [ ]; # missing inputs: rokuecp
@ -749,6 +756,7 @@
"smart_meter_texas" = ps: with ps; [ ]; # missing inputs: smart-meter-texas
"smarthab" = ps: with ps; [ ]; # missing inputs: smarthab
"smartthings" = ps: with ps; [ aiohttp-cors hass-nabucasa ]; # missing inputs: pysmartapp pysmartthings
"smarttub" = ps: with ps; [ python-smarttub ];
"smarty" = ps: with ps; [ ]; # missing inputs: pysmarty
"smhi" = ps: with ps; [ ]; # missing inputs: smhi-pkg
"sms" = ps: with ps; [ python-gammu ];
@ -780,7 +788,7 @@
"sql" = ps: with ps; [ sqlalchemy ];
"squeezebox" = ps: with ps; [ pysqueezebox ];
"srp_energy" = ps: with ps; [ ]; # missing inputs: srpenergy
"ssdp" = ps: with ps; [ aiohttp-cors defusedxml netdisco zeroconf ];
"ssdp" = ps: with ps; [ aiohttp-cors async-upnp-client defusedxml netdisco zeroconf ];
"starline" = ps: with ps; [ ]; # missing inputs: starline
"starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank
"startca" = ps: with ps; [ xmltodict ];
@ -792,6 +800,7 @@
"stream" = ps: with ps; [ aiohttp-cors av ];
"streamlabswater" = ps: with ps; [ ]; # missing inputs: streamlabswater
"stt" = ps: with ps; [ aiohttp-cors ];
"subaru" = ps: with ps; [ subarulink ];
"suez_water" = ps: with ps; [ ]; # missing inputs: pysuez
"sun" = ps: with ps; [ ];
"supervisord" = ps: with ps; [ ];
@ -805,7 +814,6 @@
"switcher_kis" = ps: with ps; [ aioswitcher ];
"switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate
"syncthru" = ps: with ps; [ url-normalize ]; # missing inputs: pysyncthru
"synology" = ps: with ps; [ ]; # missing inputs: py-synology
"synology_chat" = ps: with ps; [ ];
"synology_dsm" = ps: with ps; [ ]; # missing inputs: synologydsm-api
"synology_srm" = ps: with ps; [ ]; # missing inputs: synology-srm
@ -873,7 +881,7 @@
"twinkly" = ps: with ps; [ twinkly-client ];
"twitch" = ps: with ps; [ python-twitch-client ];
"twitter" = ps: with ps; [ twitterapi ];
"ubus" = ps: with ps; [ ];
"ubus" = ps: with ps; [ openwrt-ubus-rpc ];
"ue_smart_radio" = ps: with ps; [ ];
"uk_transport" = ps: with ps; [ ];
"unifi" = ps: with ps; [ aiounifi ];
@ -946,7 +954,6 @@
"xbox" = ps: with ps; [ aiohttp-cors ]; # missing inputs: xbox-webapi
"xbox_live" = ps: with ps; [ xboxapi ];
"xeoma" = ps: with ps; [ pyxeoma ];
"xfinity" = ps: with ps; [ ]; # missing inputs: xfinity-gateway
"xiaomi" = ps: with ps; [ ha-ffmpeg ];
"xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors netdisco zeroconf ];
"xiaomi_miio" = ps: with ps; [ construct python-miio ];

View file

@ -61,14 +61,14 @@ let
extraBuildInputs = extraPackages py.pkgs;
# Don't forget to run parse-requirements.py after updating
hassVersion = "2021.2.3";
hassVersion = "2021.3.2";
in with py.pkgs; buildPythonApplication rec {
pname = "homeassistant";
version = assert (componentPackages.version == hassVersion); hassVersion;
# check REQUIRED_PYTHON_VER in homeassistant/const.py
disabled = pythonOlder "3.7.1";
disabled = pythonOlder "3.8";
# don't try and fail to strip 6600+ python files, it takes minutes!
dontStrip = true;
@ -80,7 +80,7 @@ in with py.pkgs; buildPythonApplication rec {
owner = "home-assistant";
repo = "core";
rev = version;
sha256 = "0s1jcd94wwvmvzq86w8s9dwfvnmjs9l661z9pc6kwgagggjjgd8c";
sha256 = "09z2sds9my4vq0vmryjpzi7fv787zjfikfkd711d34c140bgcjch";
};
# leave this in, so users don't have to constantly update their downstream patch handling
@ -88,15 +88,15 @@ in with py.pkgs; buildPythonApplication rec {
postPatch = ''
substituteInPlace setup.py \
--replace "aiohttp==3.7.4" "aiohttp>=3.7.3" \
--replace "attrs==19.3.0" "attrs>=19.3.0" \
--replace "bcrypt==3.1.7" "bcrypt>=3.1.7" \
--replace "awesomeversion==21.2.2" "awesomeversion>=21.2.2" \
--replace "cryptography==3.2" "cryptography" \
--replace "cryptography==3.3.2" "cryptography" \
--replace "httpx==0.16.1" "httpx>=0.16.1" \
--replace "jinja2>=2.11.3" "jinja2>=2.11.2" \
--replace "pip>=8.0.3,<20.3" "pip" \
--replace "pytz>=2020.5" "pytz>=2020.4" \
--replace "pytz>=2021.1" "pytz>=2020.5" \
--replace "pyyaml==5.4.1" "pyyaml" \
--replace "requests==2.25.1" "requests>=2.25.0" \
--replace "ruamel.yaml==0.15.100" "ruamel.yaml>=0.15.100"
substituteInPlace tests/test_config.py --replace '"/usr"' '"/build/media"'
'';
@ -127,6 +127,8 @@ in with py.pkgs; buildPythonApplication rec {
yarl
] ++ componentBuildInputs ++ extraBuildInputs;
makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip";
# upstream only tests on Linux, so do we.
doCheck = stdenv.isLinux;
@ -134,78 +136,207 @@ in with py.pkgs; buildPythonApplication rec {
# test infrastructure
asynctest
pytest-aiohttp
pytest-rerunfailures
pytest-xdist
pytestCheckHook
requests-mock
# component dependencies
pyotp
respx
] ++ lib.concatMap (component: getPackages component py.pkgs) componentTests;
# We cannot test all components, since they'd introduce lots of dependencies, some of which are unpackaged,
# but we should test very common stuff, like what's in `default_config`.
# https://github.com/home-assistant/core/commits/dev/homeassistant/components/default_config/manifest.json
# We can reasonably test components that don't communicate with any network
# services. Before adding new components to this list make sure we have all
# its dependencies packaged and listed in ./component-packages.nix.
componentTests = [
"alert"
"api"
"auth"
"automation"
"bayesian"
"binary_sensor"
"caldav"
"calendar"
"camera"
"climate"
"cloud"
"command_line"
"config"
"configurator"
"conversation"
"counter"
"cover"
"default_config"
"demo"
"derivative"
"device_automation"
"device_sun_light_trigger"
"device_tracker"
"dhcp"
"discovery"
"emulated_hue"
"esphome"
"fan"
"faa_delays"
"ffmpeg"
"file"
"filesize"
"filter"
"flux"
"folder"
"folder_watcher"
"fritzbox"
"fritzbox_callmonitor"
"frontend"
"generic"
"generic_thermostat"
"geo_json_events"
"geo_location"
"group"
"hddtemp"
"history"
"history_stats"
"homekit_controller"
"homeassistant"
"html5"
"http"
"hue"
"ifttt"
"image"
"image_processing"
"influxdb"
"input_boolean"
"input_datetime"
"input_text"
"input_number"
"input_select"
"intent"
"intent_script"
"ipp"
"kmtronic"
"light"
"local_file"
"local_ip"
"lock"
"logbook"
"logentries"
"logger"
"lovelace"
"manual"
"manual_mqtt"
"mazda"
"media_player"
"media_source"
"met"
"mobile_app"
"modbus"
"moon"
"mqtt"
"mqtt_eventstream"
"mqtt_json"
"mqtt_room"
"mqtt_statestream"
"mullvad"
"notify"
"number"
"ozw"
"panel_custom"
"panel_iframe"
"persistent_notification"
"person"
"plaato"
"prometheus"
"proximity"
"push"
"python_script"
"random"
"recorder"
"rest"
"rest_command"
"rituals_perfume_genie"
"rmvtransport"
"rss_feed_template"
"safe_mode"
"scene"
"script"
"search"
"shell_command"
"shopping_list"
"simulated"
"sensor"
"smarttub"
"smtp"
"sql"
"ssdp"
"stream"
"sun"
"switch"
"system_health"
"system_log"
"tag"
"tasmota"
"tcp"
"template"
"threshold"
"time_date"
"timer"
"tod"
"tts"
"universal"
"updater"
"upnp"
"uptime"
"vacuum"
"weather"
"webhook"
"websocket_api"
"wled"
"workday"
"worldclock"
"zeroconf"
"zha"
"zone"
"zwave"
];
pytestFlagsArray = [
# limit amout of runners to reduce race conditions
"-n 2"
"-n auto"
# retry racy tests that end in "RuntimeError: Event loop is closed"
"--reruns 3"
"--only-rerun RuntimeError"
# assign tests grouped by file to workers
"--dist loadfile"
# don't bulk test all components
"--ignore tests/components"
# pyotp since v2.4.0 complains about the short mock keys, hass pins v2.3.0
"--ignore tests/auth/mfa_modules/test_notify.py"
# tests are located in tests/
"tests"
# dynamically add packages required for component tests
] ++ map (component: "tests/components/" + component) componentTests;
disabledTestPaths = [
# don't bulk test all components
"tests/components"
# pyotp since v2.4.0 complains about the short mock keys, hass pins v2.3.0
"tests/auth/mfa_modules/test_notify.py"
];
disabledTests = [
# AssertionError: assert 1 == 0
"test_error_posted_as_event"
"test_merge"
# ModuleNotFoundError: No module named 'pyqwikswitch'
"test_merge_id_schema"
# keyring.errors.NoKeyringError: No recommended backend was available.
"test_secrets_from_unrelated_fails"
"test_secrets_credstash"
# generic/test_camera.py: AssertionError: 500 == 200
"test_fetching_without_verify_ssl"
"test_fetching_url_with_verify_ssl"
] ++ lib.optionals (stdenv.isAarch64) [
# tests getting stuck on aarch64
# components/stream/test_hls.py
"test_stream_ended"
# components/stream/test_recorder.py
"test_record_stream"
];
preCheck = ''
@ -213,8 +344,6 @@ in with py.pkgs; buildPythonApplication rec {
mkdir /build/media
'';
makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip";
passthru = {
inherit (py.pkgs) hass-frontend;
tests = {

View file

@ -4,11 +4,11 @@ buildPythonPackage rec {
# the frontend version corresponding to a specific home-assistant version can be found here
# https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
pname = "home-assistant-frontend";
version = "20210127.7";
version = "20210302.5";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-N+n1DI1oZ/j+GydH+Du21zTNA6leW4YBri7cAMvAac4=";
sha256 = "sha256-+SKXLOuvMYfNyR++uQMMY4M5deRgm2w3AhMM/DP470k=";
};
# there is nothing to strip in this package