Merge pull request #60217 from dotlambda/home-assistant-0.92
home-assistant: 0.91.4 -> 0.92.2
This commit is contained in:
commit
1ea22b8868
|
@ -21,32 +21,23 @@ let
|
|||
|
||||
availableComponents = cfg.package.availableComponents;
|
||||
|
||||
# Given component "parentConfig.platform", returns whether config.parentConfig
|
||||
# is a list containing a set with set.platform == "platform".
|
||||
usedPlatforms = config:
|
||||
if isAttrs config then
|
||||
optional (config ? platform) config.platform
|
||||
++ concatMap usedPlatforms (attrValues config)
|
||||
else if isList config then
|
||||
concatMap usedPlatforms config
|
||||
else [ ];
|
||||
|
||||
# Given a component "platform", looks up whether it is used in the config
|
||||
# as `platform = "platform";`.
|
||||
#
|
||||
# For example, the component sensor.luftdaten is used as follows:
|
||||
# For example, the component mqtt.sensor is used as follows:
|
||||
# config.sensor = [ {
|
||||
# platform = "luftdaten";
|
||||
# platform = "mqtt";
|
||||
# ...
|
||||
# } ];
|
||||
#
|
||||
# Beginning with 0.87 Home Assistant is migrating their components to the
|
||||
# scheme "platform.subComponent", e.g. "hue.light" instead of "light.hue".
|
||||
# See https://developers.home-assistant.io/blog/2019/02/19/the-great-migration.html.
|
||||
# Hence, we also check whether we find an entry in the config when interpreting
|
||||
# the first part of the path as the component.
|
||||
useComponentPlatform = component:
|
||||
let
|
||||
path = splitString "." component;
|
||||
# old: platform is the last part of path
|
||||
parentConfig = attrByPath (init path) null cfg.config;
|
||||
platform = last path;
|
||||
# new: platform is the first part of the path
|
||||
parentConfig' = attrByPath (tail path) null cfg.config;
|
||||
platform' = head path;
|
||||
in
|
||||
(isList parentConfig && any (item: item.platform or null == platform) parentConfig)
|
||||
|| (isList parentConfig' && any (item: item.platform or null == platform') parentConfig');
|
||||
useComponentPlatform = component: elem component (usedPlatforms cfg.config);
|
||||
|
||||
# Returns whether component is used in config
|
||||
useComponent = component:
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "PyChromecast";
|
||||
version = "3.2.0";
|
||||
version = "3.2.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0jksh7rb4880kni8iw3hb5q9dm5gi40zmx4r2fwydnpfhadhq5af";
|
||||
sha256 = "e1e71e30581e1021b6bdd50a80cfcdcfa86d9082171fdd719c5ca6a77b8a9699";
|
||||
};
|
||||
|
||||
disabled = !isPy3k;
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
{ stdenv, fetchPypi, buildPythonPackage, unidecode, regex, isPy3k }:
|
||||
{ stdenv, fetchPypi, buildPythonPackage, python, text-unidecode }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "python-slugify";
|
||||
version = "2.0.1";
|
||||
version = "3.0.2";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "d3e034397236020498e677a35e5c05dcc6ba1624b608b9ef7e5fe3090ccbd5a8";
|
||||
sha256 = "57163ffb345c7e26063435a27add1feae67fa821f1ef4b2f292c25847575d758";
|
||||
};
|
||||
doCheck = !isPy3k;
|
||||
# (only) on python3 unittest loader (loadTestsFromModule) fails
|
||||
|
||||
propagatedBuildInputs = [ unidecode regex ];
|
||||
propagatedBuildInputs = [ text-unidecode ];
|
||||
|
||||
checkPhase = ''
|
||||
${python.interpreter} test.py
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/un33k/python-slugify;
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pytz";
|
||||
version = "2018.9";
|
||||
version = "2019.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c";
|
||||
sha256 = "d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141";
|
||||
};
|
||||
|
||||
checkPhase = ''
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pytzdata";
|
||||
version = "2018.9";
|
||||
version = "2019.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "dddaaf4f1717820a6fdcac94057e03c1a15b3829a44d9eaf19988917977db408";
|
||||
sha256 = "f0469062f799c66480fcc7eae69a8270dc83f0e6522c0e70db882d6bd708d378";
|
||||
};
|
||||
|
||||
# No tests
|
||||
|
|
|
@ -24,10 +24,10 @@ let
|
|||
});
|
||||
|
||||
jinja2 = super.jinja2.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "2.10";
|
||||
version = "2.10.1";
|
||||
src = oldAttrs.src.override {
|
||||
inherit version;
|
||||
sha256 = "f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4";
|
||||
sha256 = "065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013";
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -52,11 +52,11 @@ let
|
|||
|
||||
in python.pkgs.buildPythonApplication rec {
|
||||
pname = "appdaemon";
|
||||
version = "3.0.4";
|
||||
version = "3.0.5";
|
||||
|
||||
src = python.pkgs.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "e2393b5e0bb34e94e61f5debc95ad74c1c6929635b74bf8ba15c22b40cbdec69";
|
||||
sha256 = "623897ce08dc2efe24d04380df36e4b7fb35c0e4007e882857d4047f0b60349d";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python.pkgs; [
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -28,28 +28,20 @@ let
|
|||
"10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69")
|
||||
(mkOverride "bcrypt" "3.1.6"
|
||||
"44636759d222baa62806bbceb20e96f75a015a6381690d1bc2eda91c01ec02ea")
|
||||
(self: super: {
|
||||
pyjwt = super.pyjwt.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "1.6.4";
|
||||
src = oldAttrs.src.override {
|
||||
inherit version;
|
||||
sha256 = "4ee413b357d53fd3fb44704577afac88e72e878716116270d722723d65b42176";
|
||||
};
|
||||
doCheck = false; # https://github.com/jpadilla/pyjwt/issues/382
|
||||
});
|
||||
})
|
||||
(mkOverride "cryptography" "2.5"
|
||||
"00c4d7gvsymlaw0r13zrm32dcnarmpayjyrh65yymlmr6mrbcij9")
|
||||
(mkOverride "cryptography_vectors" "2.5" # required by cryptography==2.5
|
||||
"15qfl3pnw2f11r0z0zhwl56f6pb60ysav8fxmpnz5p80cfwljdik")
|
||||
(mkOverride "python-slugify" "1.2.6"
|
||||
"7723daf30996db26573176bddcdf5fcb98f66dc70df05c9cb29f2c79b8193245")
|
||||
(mkOverride "pyjwt" "1.7.1"
|
||||
"8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96")
|
||||
(mkOverride "cryptography" "2.6.1"
|
||||
"26c821cbeb683facb966045e2064303029d572a87ee69ca5a1bf54bf55f93ca6")
|
||||
(mkOverride "cryptography_vectors" "2.6.1" # required by cryptography==2.6.1
|
||||
"03f38115dccb266dd96538f94067442a877932c2322661bdc5bf2502c76658af")
|
||||
(mkOverride "python-slugify" "3.0.2"
|
||||
"57163ffb345c7e26063435a27add1feae67fa821f1ef4b2f292c25847575d758")
|
||||
(mkOverride "pyyaml" "3.13"
|
||||
"3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf")
|
||||
(mkOverride "requests" "2.21.0"
|
||||
"502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e")
|
||||
(mkOverride "ruamel_yaml" "0.15.89"
|
||||
"86d034aa9e2ab3eacc5f75f5cd6a469a2af533b6d9e60ea92edbba540d21b9b7")
|
||||
(mkOverride "ruamel_yaml" "0.15.91"
|
||||
"692f03ed24c8c1d9fa9fd4c045f7ba1c26f1e96edb8bfb4d54854ba26bc02319")
|
||||
(mkOverride "voluptuous" "0.11.5"
|
||||
"567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef")
|
||||
(mkOverride "voluptuous-serialize" "2.1.0"
|
||||
|
@ -67,14 +59,13 @@ let
|
|||
# required by home-assistant-frontend
|
||||
(self: super: {
|
||||
user-agents = super.user-agents.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "1.1.0";
|
||||
version = "2.0.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "selwin";
|
||||
repo = "python-user-agents";
|
||||
rev = "v${version}";
|
||||
sha256 = "14kxd780zhp8718xr1z63xffaj3bvxgr4pldh9sv943m4hvi0gw5";
|
||||
sha256 = "0ix2yajqdnfj433j50dls90mkmqz8m4fiywxg097zwkkc95wm8s4";
|
||||
};
|
||||
doCheck = false; # can be dropped for 2.0
|
||||
});
|
||||
})
|
||||
|
||||
|
@ -118,7 +109,7 @@ let
|
|||
extraBuildInputs = extraPackages py.pkgs;
|
||||
|
||||
# Don't forget to run parse-requirements.py after updating
|
||||
hassVersion = "0.91.4";
|
||||
hassVersion = "0.92.2";
|
||||
|
||||
in with py.pkgs; buildPythonApplication rec {
|
||||
pname = "homeassistant";
|
||||
|
@ -133,7 +124,7 @@ in with py.pkgs; buildPythonApplication rec {
|
|||
owner = "home-assistant";
|
||||
repo = "home-assistant";
|
||||
rev = version;
|
||||
sha256 = "195pif8lz0qxjsannpi39gxphfb6dkj9lkpah0vjw0pgx753sflv";
|
||||
sha256 = "10kqfj7gi8w0d9jalb4i2w4ifla8jkllymjav74abc4b30y08vmw";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -145,16 +136,17 @@ in with py.pkgs; buildPythonApplication rec {
|
|||
] ++ componentBuildInputs ++ extraBuildInputs;
|
||||
|
||||
checkInputs = [
|
||||
asynctest pytest pytest-aiohttp requests-mock pydispatcher
|
||||
asynctest pytest pytest-aiohttp requests-mock pydispatcher aiohue
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
# The components' dependencies are not included, so they cannot be tested
|
||||
py.test --ignore tests/components
|
||||
# test_webhook_create_cloudhook imports hass_nabucasa and is thus excluded
|
||||
py.test --ignore tests/components -k "not test_webhook_create_cloudhook"
|
||||
# Some basic components should be tested however
|
||||
py.test \
|
||||
tests/components/{api,config,configurator,demo,discovery,frontend,group,history,history_graph} \
|
||||
tests/components/{homeassistant,http,introduction,logger,script,shell_command,system_log,websocket_api}
|
||||
tests/components/{homeassistant,http,logger,script,shell_command,system_log,websocket_api}
|
||||
'';
|
||||
|
||||
makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "home-assistant-frontend";
|
||||
version = "20190331.0";
|
||||
version = "20190427.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "2d266a4d3d31af9a50debb99b0e9e9650044698f9157753bec785785057264cf";
|
||||
sha256 = "eb14e7be0ad591ad4623c67db752bc4eb4f4e43ce60bb0f6d1909e9ad9399d91";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ user-agents ];
|
||||
|
|
|
@ -1,28 +1,30 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ aiohttp astral async-timeout attrs certifi jinja2 pyjwt cryptography pip pytz pyyaml requests ruamel_yaml voluptuous python-slugify ])"
|
||||
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ attrs ])
|
||||
#
|
||||
# This script downloads Home Assistant's source tarball.
|
||||
# Inside the homeassistant/components directory, each component has an associated .py file,
|
||||
# specifying required packages and other components it depends on:
|
||||
# Inside the homeassistant/components directory, each integration has an associated manifest.json,
|
||||
# specifying required packages and other integrations it depends on:
|
||||
#
|
||||
# REQUIREMENTS = [ 'package==1.2.3' ]
|
||||
# DEPENDENCIES = [ 'component' ]
|
||||
# {
|
||||
# "requirements": [ "package==1.2.3" ],
|
||||
# "dependencies": [ "component" ]
|
||||
# }
|
||||
#
|
||||
# By parsing the files, a dictionary mapping component to requirements and dependencies is created.
|
||||
# By parsing the files, a dictionary mapping integrations to requirements and dependencies is created.
|
||||
# For all of these requirements and the dependencies' requirements,
|
||||
# Nixpkgs' python3Packages are searched for appropriate names.
|
||||
# Then, a Nix attribute set mapping component name to dependencies is created.
|
||||
# nixpkgs' python3Packages are searched for appropriate names.
|
||||
# Then, a Nix attribute set mapping integration name to dependencies is created.
|
||||
|
||||
from urllib.request import urlopen
|
||||
import tempfile
|
||||
from io import BytesIO
|
||||
import tarfile
|
||||
import importlib
|
||||
import subprocess
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import pathlib
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import tarfile
|
||||
from urllib.request import urlopen
|
||||
|
||||
COMPONENT_PREFIX = 'homeassistant.components'
|
||||
PKG_SET = 'python3Packages'
|
||||
|
@ -43,22 +45,17 @@ def get_version():
|
|||
def parse_components(version='master'):
|
||||
components = {}
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
with urlopen('https://github.com/home-assistant/home-assistant/archive/{}.tar.gz'.format(version)) as response:
|
||||
with urlopen(f'https://github.com/home-assistant/home-assistant/archive/{version}.tar.gz') as response:
|
||||
tarfile.open(fileobj=BytesIO(response.read())).extractall(tmp)
|
||||
# Use part of a script from the Home Assistant codebase
|
||||
sys.path.append(tmp + '/home-assistant-{}'.format(version))
|
||||
from script.gen_requirements_all import explore_module
|
||||
for package in explore_module(COMPONENT_PREFIX, True):
|
||||
# Remove 'homeassistant.components.' prefix
|
||||
component = package[len(COMPONENT_PREFIX + '.'):]
|
||||
try:
|
||||
module = importlib.import_module(package)
|
||||
components[component] = {}
|
||||
components[component]['requirements'] = getattr(module, 'REQUIREMENTS', [])
|
||||
components[component]['dependencies'] = getattr(module, 'DEPENDENCIES', [])
|
||||
# If there is an ImportError, the imported file is not the main file of the component
|
||||
except ImportError:
|
||||
continue
|
||||
sys.path.append(os.path.join(tmp, f'home-assistant-{version}'))
|
||||
from script.hassfest.model import Integration
|
||||
integrations = Integration.load_dir(pathlib.Path(
|
||||
os.path.join(tmp, f'home-assistant-{version}', 'homeassistant/components')
|
||||
))
|
||||
for domain in sorted(integrations):
|
||||
integration = integrations[domain]
|
||||
components[domain] = integration.manifest
|
||||
return components
|
||||
|
||||
# Recursively get the requirements of a component and its dependencies
|
||||
|
|
|
@ -17,7 +17,7 @@ buildPythonApplication rec {
|
|||
prePatch = ''
|
||||
substituteInPlace requirements.txt --replace "urllib3<1.24" "urllib3<2.0" \
|
||||
--replace "six==1.11.0" "six<2.0.0" \
|
||||
--replace "python-slugify==1.2.6" "python-slugify<3.0.0"
|
||||
--replace "python-slugify==1.2.6" "python-slugify<4.0.0"
|
||||
'';
|
||||
|
||||
# Requires external resources
|
||||
|
|
Loading…
Reference in New Issue