diff --git a/pkgs/development/python-modules/ciso8601/default.nix b/pkgs/development/python-modules/ciso8601/default.nix new file mode 100644 index 00000000000..d0de4b320e8 --- /dev/null +++ b/pkgs/development/python-modules/ciso8601/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pytz +, unittest2 +, isPy27 +}: + +buildPythonPackage rec { + pname = "ciso8601"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "closeio"; + repo = "ciso8601"; + rev = "v${version}"; + sha256 = "0g1aiyc1ayh0rnibyy416m5mmck38ksgdm3jsy0z3rxgmgb24951"; + }; + + checkInputs = [ + pytz + ] ++ lib.optional (isPy27) unittest2; + + meta = with lib; { + description = "Fast ISO8601 date time parser for Python written in C"; + homepage = "https://github.com/closeio/ciso8601"; + license = licenses.mit; + maintainers = [ maintainers.mic92 ]; + }; +} diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix index 87a4a21568c..e13cae33960 100644 --- a/pkgs/development/python-modules/hass-nabucasa/default.nix +++ b/pkgs/development/python-modules/hass-nabucasa/default.nix @@ -1,14 +1,16 @@ -{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, acme, aiohttp, snitun, attrs, pytest-aiohttp, warrant, pytest }: +{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch +, acme, aiohttp, snitun, attrs, pycognito, warrant +, pytest-aiohttp, asynctest, pytest }: buildPythonPackage rec { pname = "hass-nabucasa"; - version = "0.31"; + version = "0.32.2"; src = fetchFromGitHub { owner = "nabucasa"; repo = pname; rev = version; - sha256 = "0hxdvdj41gq5ryafjhrcgf6y8l33lyf45a1vgwwbk0q29sir9bnr"; + sha256 = "1hfi5q222kgbgrj5yvr4lbhca49hcs6sc2yhxc4pjxqsc12bv1f1"; }; # upstreamed in https://github.com/NabuCasa/hass-nabucasa/pull/119 @@ -17,13 +19,13 @@ buildPythonPackage rec { cat setup.py ''; - propagatedBuildInputs = [ acme aiohttp snitun attrs warrant ]; + propagatedBuildInputs = [ acme aiohttp snitun attrs warrant pycognito ]; - checkInputs = [ pytest pytest-aiohttp ]; + checkInputs = [ pytest pytest-aiohttp asynctest ]; checkPhase = '' pytest tests/ - ''; + ''; meta = with lib; { homepage = "https://github.com/NabuCasa/hass-nabucasa"; diff --git a/pkgs/development/python-modules/pycognito/default.nix b/pkgs/development/python-modules/pycognito/default.nix new file mode 100644 index 00000000000..afc607baa40 --- /dev/null +++ b/pkgs/development/python-modules/pycognito/default.nix @@ -0,0 +1,46 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, cryptography +, boto3 +, envs +, python-jose +, requests +, mock +, isPy27 +}: + +buildPythonPackage rec { + pname = "pycognito"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "pvizeli"; + repo = "pycognito"; + rev = version; + sha256 = "01zns522awm5yp5cbk1y7k7px534i5akiivip709i1naph3hvnfk"; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace 'python-jose[cryptography]' 'python-jose' + ''; + + propagatedBuildInputs = [ + boto3 + envs + python-jose + requests + ]; + + disabled = isPy27; + + checkInputs = [ mock ]; + + meta = with lib; { + description = "Python class to integrate Boto3's Cognito client so it is easy to login users. With SRP support"; + homepage = "https://GitHub.com/pvizeli/pycognito"; + license = licenses.asl20; + maintainers = [ maintainers.mic92 ]; + }; +} diff --git a/pkgs/development/python-modules/pyicloud/default.nix b/pkgs/development/python-modules/pyicloud/default.nix index 7bc52f74701..20fd48bcb2b 100644 --- a/pkgs/development/python-modules/pyicloud/default.nix +++ b/pkgs/development/python-modules/pyicloud/default.nix @@ -15,11 +15,11 @@ buildPythonPackage rec { pname = "pyicloud"; - version = "0.9.4"; + version = "0.9.5"; src = fetchPypi { inherit pname version; - sha256 = "0r171wnq2g5bw7gd59vh6flm0104ix1a6s2vhdrf8s74hipw57si"; + sha256 = "1c8sdlqcmpajcpf6jfpi6amncibm9c3zrl1860r0vfimps50m34h"; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/python-jose/default.nix b/pkgs/development/python-modules/python-jose/default.nix index a9377c4a1c2..df7e07e5523 100644 --- a/pkgs/development/python-modules/python-jose/default.nix +++ b/pkgs/development/python-modules/python-jose/default.nix @@ -5,13 +5,13 @@ buildPythonPackage rec { pname = "python-jose"; - version = "3.0.1"; + version = "3.1.0"; src = fetchFromGitHub { owner = "mpdavis"; repo = "python-jose"; rev = version; - sha256 = "1ahq4m86z504bnlk9z473r7r3dprg5m39900rld797hbczdhqa4f"; + sha256 = "1gnn0zy03pywj65ammy3sd07knzhjv8n5jhx1ir9bikgra9v0iqh"; }; checkInputs = [ diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix index 622de68c6d4..25382fa19ad 100644 --- a/pkgs/development/python-modules/zeroconf/default.nix +++ b/pkgs/development/python-modules/zeroconf/default.nix @@ -10,12 +10,12 @@ buildPythonPackage rec { pname = "zeroconf"; - version = "0.24.4"; + version = "0.24.5"; disabled = isPy27; src = fetchPypi { inherit pname version; - sha256 = "f66d38f16026097572939ab78b1f46a97f556bca415491eb0fd094d0b5827dfe"; + sha256 = "0jpgd0rk91si93857mjrizan5gc42kj1q4fi4160qgk68la88fl9"; }; propagatedBuildInputs = [ ifaddr ] diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 6b18dd30f30..22235bbd738 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "0.106.6"; + version = "0.107.7"; components = { "abode" = ps: with ps; [ ]; # missing inputs: abodepy "acer_projector" = ps: with ps; [ pyserial]; @@ -55,9 +55,10 @@ "aurora_abb_powerone" = ps: with ps; [ ]; # missing inputs: aurorapy "auth" = ps: with ps; [ aiohttp-cors]; "automatic" = ps: with ps; [ aiohttp-cors]; # missing inputs: aioautomatic - "automation" = ps: with ps; [ aiohttp-cors]; + "automation" = ps: with ps; [ ]; "avea" = ps: with ps; [ ]; # missing inputs: avea "avion" = ps: with ps; [ ]; # missing inputs: avion + "avri" = ps: with ps; [ ]; # missing inputs: avri-api "awair" = ps: with ps; [ ]; # missing inputs: python_awair "aws" = ps: with ps; [ ]; # missing inputs: aiobotocore "axis" = ps: with ps; [ ]; # missing inputs: axis @@ -187,6 +188,7 @@ "ecovacs" = ps: with ps; [ ]; # missing inputs: sucks "eddystone_temperature" = ps: with ps; [ construct]; # missing inputs: beacontools[scan] "edimax" = ps: with ps; [ ]; # missing inputs: pyedimax + "edl21" = ps: with ps; [ ]; # missing inputs: pysml "ee_brightbox" = ps: with ps; [ ]; # missing inputs: eebrightbox "efergy" = ps: with ps; [ ]; "egardia" = ps: with ps; [ ]; # missing inputs: pythonegardia @@ -217,6 +219,7 @@ "eufy" = ps: with ps; [ ]; # missing inputs: lakeside "everlights" = ps: with ps; [ ]; # missing inputs: pyeverlights "evohome" = ps: with ps; [ ]; # missing inputs: evohome-async + "ezviz" = ps: with ps; [ ]; # missing inputs: pyezviz "facebook" = ps: with ps; [ ]; "facebox" = ps: with ps; [ ]; "fail2ban" = ps: with ps; [ ]; @@ -299,6 +302,7 @@ "graphite" = ps: with ps; [ ]; "greeneye_monitor" = ps: with ps; [ ]; # missing inputs: greeneye_monitor "greenwave" = ps: with ps; [ ]; # missing inputs: greenwavereality + "griddy" = ps: with ps; [ ]; # missing inputs: griddypower "group" = ps: with ps; [ ]; "growatt_server" = ps: with ps; [ ]; # missing inputs: growattServer "gstreamer" = ps: with ps; [ ]; # missing inputs: gstreamer-player @@ -307,7 +311,7 @@ "hangouts" = ps: with ps; [ ]; # missing inputs: hangups "harman_kardon_avr" = ps: with ps; [ ]; # missing inputs: hkavr "harmony" = ps: with ps; [ ]; # missing inputs: aioharmony - "hassio" = ps: with ps; [ aiohttp-cors]; # missing inputs: home-assistant-frontend + "hassio" = ps: with ps; [ aiohttp-cors]; "haveibeenpwned" = ps: with ps; [ ]; "hddtemp" = ps: with ps; [ ]; "hdmi_cec" = ps: with ps; [ ]; # missing inputs: pyCEC @@ -318,14 +322,13 @@ "hikvisioncam" = ps: with ps; [ ]; # missing inputs: hikvision "hisense_aehw4a1" = ps: with ps; [ ]; # missing inputs: pyaehw4a1 "history" = ps: with ps; [ aiohttp-cors sqlalchemy]; - "history_graph" = ps: with ps; [ aiohttp-cors sqlalchemy]; "history_stats" = ps: with ps; [ aiohttp-cors sqlalchemy]; "hitron_coda" = ps: with ps; [ ]; "hive" = ps: with ps; [ ]; # missing inputs: pyhiveapi "hlk_sw16" = ps: with ps; [ ]; # missing inputs: hlk-sw16 "homeassistant" = ps: with ps; [ ]; "homekit" = ps: with ps; [ ]; # missing inputs: HAP-python - "homekit_controller" = ps: with ps; [ ]; # missing inputs: homekit[IP] + "homekit_controller" = ps: with ps; [ ]; # missing inputs: aiohomekit[IP] "homematic" = ps: with ps; [ pyhomematic]; "homematicip_cloud" = ps: with ps; [ ]; # missing inputs: homematicip "homeworks" = ps: with ps; [ ]; # missing inputs: pyhomeworks @@ -342,6 +345,7 @@ "hydrawise" = ps: with ps; [ ]; # missing inputs: hydrawiser "hyperion" = ps: with ps; [ ]; "ialarm" = ps: with ps; [ ]; # missing inputs: pyialarm + "iammeter" = ps: with ps; [ ]; # missing inputs: iammeter "iaqualink" = ps: with ps; [ ]; # missing inputs: iaqualink "icloud" = ps: with ps; [ pyicloud]; "idteck_prox" = ps: with ps; [ ]; # missing inputs: rfk101py @@ -452,7 +456,7 @@ "melissa" = ps: with ps; [ ]; # missing inputs: py-melissa-climate "meraki" = ps: with ps; [ aiohttp-cors]; "message_bird" = ps: with ps; [ ]; # missing inputs: messagebird - "met" = ps: with ps; [ ]; # missing inputs: pyMetno + "met" = ps: with ps; [ pymetno]; "meteo_france" = ps: with ps; [ ]; # missing inputs: meteofrance vigilancemeteo "meteoalarm" = ps: with ps; [ ]; # missing inputs: meteoalertapi "metoffice" = ps: with ps; [ ]; # missing inputs: datapoint @@ -517,7 +521,7 @@ "nmbs" = ps: with ps; [ ]; # missing inputs: pyrail "no_ip" = ps: with ps; [ ]; "noaa_tides" = ps: with ps; [ ]; # missing inputs: py_noaa - "norway_air" = ps: with ps; [ ]; # missing inputs: pyMetno + "norway_air" = ps: with ps; [ pymetno]; "notify" = ps: with ps; [ ]; "notion" = ps: with ps; [ ]; # missing inputs: aionotion "nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client @@ -607,6 +611,7 @@ "qnap" = ps: with ps; [ ]; # missing inputs: qnapstats "qrcode" = ps: with ps; [ pillow]; # missing inputs: pyzbar "quantum_gateway" = ps: with ps; [ ]; # missing inputs: quantum-gateway + "qvr_pro" = ps: with ps; [ ]; # missing inputs: pyqvrpro "qwikswitch" = ps: with ps; [ ]; # missing inputs: pyqwikswitch "rachio" = ps: with ps; [ aiohttp-cors]; # missing inputs: rachiopy "radarr" = ps: with ps; [ ]; @@ -652,7 +657,7 @@ "safe_mode" = ps: with ps; [ aiohttp-cors hass-nabucasa]; # missing inputs: home-assistant-frontend "saj" = ps: with ps; [ ]; # missing inputs: pysaj "salt" = ps: with ps; [ ]; # missing inputs: saltbox - "samsungtv" = ps: with ps; [ ]; # missing inputs: samsungctl[websocket] + "samsungtv" = ps: with ps; [ ]; # missing inputs: samsungctl[websocket] samsungtvws[websocket] "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra "scene" = ps: with ps; [ ]; "scrape" = ps: with ps; [ beautifulsoup4]; @@ -677,7 +682,7 @@ "shopping_list" = ps: with ps; [ aiohttp-cors]; "sht31" = ps: with ps; [ ]; # missing inputs: Adafruit-GPIO Adafruit-SHT31 "sigfox" = ps: with ps; [ ]; - "sighthound" = ps: with ps; [ ]; # missing inputs: simplehound + "sighthound" = ps: with ps; [ pillow]; # missing inputs: simplehound "signal_messenger" = ps: with ps; [ ]; # missing inputs: pysignalclirestapi "simplepush" = ps: with ps; [ ]; # missing inputs: simplepush "simplisafe" = ps: with ps; [ ]; # missing inputs: simplisafe-python @@ -760,6 +765,7 @@ "tado" = ps: with ps; [ ]; # missing inputs: python-tado "tahoma" = ps: with ps; [ ]; # missing inputs: tahoma-api "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility + "tankerkoenig" = ps: with ps; [ ]; # missing inputs: pytankerkoenig "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff "tautulli" = ps: with ps; [ ]; # missing inputs: pytautulli "tcp" = ps: with ps; [ ]; @@ -865,7 +871,6 @@ "waze_travel_time" = ps: with ps; [ WazeRouteCalculator]; "weather" = ps: with ps; [ ]; "webhook" = ps: with ps; [ aiohttp-cors]; - "weblink" = ps: with ps; [ ]; "webostv" = ps: with ps; [ ]; # missing inputs: aiopylgtv "websocket_api" = ps: with ps; [ aiohttp-cors]; "wemo" = ps: with ps; [ ]; # missing inputs: pywemo diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 2b571fe96bf..3b59ada0b9b 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -67,7 +67,7 @@ let extraBuildInputs = extraPackages py.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "0.106.6"; + hassVersion = "0.107.7"; in with py.pkgs; buildPythonApplication rec { pname = "homeassistant"; @@ -75,7 +75,9 @@ in with py.pkgs; buildPythonApplication rec { disabled = pythonOlder "3.5"; - patches = [ ./relax-importlib-metadata-pyaml.patch ]; + patches = [ + ./relax-deps.patch + ]; inherit availableComponents; @@ -84,7 +86,7 @@ in with py.pkgs; buildPythonApplication rec { owner = "home-assistant"; repo = "home-assistant"; rev = version; - sha256 = "11kv5lmm8nxp7yv3w43mzmgzkafddy0z6wl2878p96iyil1w7qhb"; + sha256 = "1sr7vzsd4hpaix37bb10vbnnqs1v8ll2wb8m713qrvcp3crs6snk"; }; propagatedBuildInputs = [ @@ -93,12 +95,12 @@ in with py.pkgs; buildPythonApplication rec { pyjwt cryptography pip python-slugify pytz pyyaml requests ruamel_yaml setuptools voluptuous voluptuous-serialize # From http, frontend and recorder components and auth.mfa_modules.totp - sqlalchemy aiohttp-cors hass-frontend pyotp pyqrcode + sqlalchemy aiohttp-cors hass-frontend pyotp pyqrcode ciso8601 ] ++ componentBuildInputs ++ extraBuildInputs; checkInputs = [ asynctest pytest pytest-aiohttp requests-mock pydispatcher aiohue netdisco - hass-nabucasa defusedxml + hass-nabucasa defusedxml zeroconf ]; postPatch = '' @@ -112,10 +114,12 @@ in with py.pkgs; buildPythonApplication rec { # - components' dependencies are not included, so they cannot be tested # - test_merge_id_schema requires pyqwikswitch # - unclear why test_merge fails: assert merge_log_err.call_count != 0 - py.test --ignore tests/components -k "not test_merge_id_schema and not test_merge" + # - test_setup_safe_mode_if_no_frontend: requires dependencies for components we have not packaged + py.test --ignore tests/components -k "not test_setup_safe_mode_if_no_frontend and not test_merge_id_schema and not test_merge" + # Some basic components should be tested however py.test \ - tests/components/{api,config,configurator,demo,discovery,frontend,group,history,history_graph} \ + tests/components/{api,config,configurator,demo,discovery,frontend,group,history} \ tests/components/{homeassistant,http,logger,script,shell_command,system_log,websocket_api} ''; diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index 1446518fbc5..04cef9fa6d7 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -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 = "20200220.5"; + version = "20200318.0"; src = fetchPypi { inherit pname version; - sha256 = "0nc44r5ybq0prsz2yid622i0xr7q0qrc4ymbk69bqg6jrmjpbdl1"; + sha256 = "15by4wd3lpq1pd0hpx04v827i3xywsvxziqb1qrbsraxh1rvsbhz"; }; # no Python tests implemented diff --git a/pkgs/servers/home-assistant/relax-deps.patch b/pkgs/servers/home-assistant/relax-deps.patch new file mode 100644 index 00000000000..5d9716f0683 --- /dev/null +++ b/pkgs/servers/home-assistant/relax-deps.patch @@ -0,0 +1,13 @@ +--- a/setup.py 2020-03-18 15:34:35.474693786 +0000 ++++ b/setup.py 2020-03-18 15:49:07.185801916 +0000 +@@ -47,8 +47,8 @@ + "pip>=8.0.3", + "python-slugify==4.0.0", + "pytz>=2019.03", +- "pyyaml==5.3", +- "requests==2.23.0", ++ "pyyaml>=5.2", ++ "requests>=2.22.0", + "ruamel.yaml==0.15.100", + "voluptuous==0.11.7", + "voluptuous-serialize==2.3.0", diff --git a/pkgs/servers/home-assistant/relax-importlib-metadata-pyaml.patch b/pkgs/servers/home-assistant/relax-importlib-metadata-pyaml.patch deleted file mode 100644 index d35e05c6cd7..00000000000 --- a/pkgs/servers/home-assistant/relax-importlib-metadata-pyaml.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/setup.py b/setup.py -index 7f9155d9a..f90a0d965 100755 ---- a/setup.py -+++ b/setup.py -@@ -38,7 +38,7 @@ REQUIRES = [ - "attrs==19.3.0", - "bcrypt==3.1.7", - "certifi>=2019.11.28", -- "importlib-metadata==1.5.0", -+ "importlib-metadata>=1.3.0", - "jinja2>=2.10.3", - "PyJWT==1.7.1", - # PyJWT has loose dependency. We want the latest one. -@@ -46,7 +46,7 @@ REQUIRES = [ - "pip>=8.0.3", - "python-slugify==4.0.0", - "pytz>=2019.03", -- "pyyaml==5.3", -+ "pyyaml>=5.2", - "requests==2.22.0", - "ruamel.yaml==0.15.100", - "voluptuous==0.11.7", diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index aba67f63a82..3e58f0719e3 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -509,6 +509,8 @@ in { breezy = callPackage ../development/python-modules/breezy { }; + ciso8601 = callPackage ../development/python-modules/ciso8601 { }; + deepdiff = callPackage ../development/python-modules/deepdiff { }; django-sesame = callPackage ../development/python-modules/django-sesame { }; @@ -902,6 +904,8 @@ in { mpi = pkgs.openmpi; }; + pycognito = callPackage ../development/python-modules/pycognito { }; + python-mpv-jsonipc = callPackage ../development/python-modules/python-mpv-jsonipc { }; msal = callPackage ../development/python-modules/msal { };