From 9280949caa63000a308c24cd41b3bb9e565b1456 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sun, 27 Jan 2019 21:21:37 +0200 Subject: [PATCH 1/4] Check if a script requirement is available before install --- homeassistant/scripts/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/homeassistant/scripts/__init__.py b/homeassistant/scripts/__init__.py index 02cc0bff362241..f9ad90c59b97ea 100644 --- a/homeassistant/scripts/__init__.py +++ b/homeassistant/scripts/__init__.py @@ -7,6 +7,8 @@ import sys from typing import List +from pkg_resources import Requirement + from homeassistant.bootstrap import async_mount_local_lib_path from homeassistant.config import get_default_config_dir from homeassistant import requirements @@ -48,6 +50,14 @@ def run(args: List) -> int: logging.basicConfig(stream=sys.stdout, level=logging.INFO) for req in getattr(script, 'REQUIREMENTS', []): + try: + # Only use the requirement's project_name to verify it exists + project_name = Requirement.parse(req).project_name + importlib.import_module(project_name) + continue + except ImportError: + pass + returncode = install_package(req, **pip_kwargs) if not returncode: From 18544f48fa98365126f183dba22dffc213f17355 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sun, 24 Feb 2019 21:11:03 +0200 Subject: [PATCH 2/4] PackageLoadable --- homeassistant/scripts/__init__.py | 18 ++++++++++-------- homeassistant/scripts/check_config.py | 2 -- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/scripts/__init__.py b/homeassistant/scripts/__init__.py index f9ad90c59b97ea..2d39dd085c11dd 100644 --- a/homeassistant/scripts/__init__.py +++ b/homeassistant/scripts/__init__.py @@ -11,7 +11,8 @@ from homeassistant.bootstrap import async_mount_local_lib_path from homeassistant.config import get_default_config_dir -from homeassistant import requirements +from homeassistant.core import HomeAssistant +from homeassistant.requirements import pip_kwargs, PackageLoadable from homeassistant.util.package import install_package, is_virtual_env @@ -41,24 +42,25 @@ def run(args: List) -> int: config_dir = extract_config_dir() + loop = asyncio.get_event_loop() + if not is_virtual_env(): - asyncio.get_event_loop().run_until_complete( - async_mount_local_lib_path(config_dir)) + loop.run_until_complete(async_mount_local_lib_path(config_dir)) - pip_kwargs = requirements.pip_kwargs(config_dir) + _pip_kwargs = pip_kwargs(config_dir) logging.basicConfig(stream=sys.stdout, level=logging.INFO) + hass = HomeAssistant(loop) + pkgload = PackageLoadable(hass) for req in getattr(script, 'REQUIREMENTS', []): try: - # Only use the requirement's project_name to verify it exists - project_name = Requirement.parse(req).project_name - importlib.import_module(project_name) + loop.run_until_complete(pkgload.loadable(req)) continue except ImportError: pass - returncode = install_package(req, **pip_kwargs) + returncode = install_package(req, **_pip_kwargs) if not returncode: print('Aborting script, could not install dependency', req) diff --git a/homeassistant/scripts/check_config.py b/homeassistant/scripts/check_config.py index 67bc97da9924dd..3e6c6a9c703d46 100644 --- a/homeassistant/scripts/check_config.py +++ b/homeassistant/scripts/check_config.py @@ -22,8 +22,6 @@ from homeassistant.exceptions import HomeAssistantError REQUIREMENTS = ('colorlog==4.0.2',) -if system() == 'Windows': # Ensure colorama installed for colorlog on Windows - REQUIREMENTS += ('colorama<=1',) _LOGGER = logging.getLogger(__name__) # pylint: disable=protected-access From 1931c0d5adacad4d8678e0fc13fa955e33346e14 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sun, 24 Feb 2019 21:37:39 +0200 Subject: [PATCH 3/4] hound --- homeassistant/scripts/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/homeassistant/scripts/__init__.py b/homeassistant/scripts/__init__.py index 2d39dd085c11dd..3050379a496c7c 100644 --- a/homeassistant/scripts/__init__.py +++ b/homeassistant/scripts/__init__.py @@ -7,8 +7,6 @@ import sys from typing import List -from pkg_resources import Requirement - from homeassistant.bootstrap import async_mount_local_lib_path from homeassistant.config import get_default_config_dir from homeassistant.core import HomeAssistant From d1c78da879b4da8eae625456e7ba14f5f450be94 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Tue, 26 Feb 2019 08:40:32 +0200 Subject: [PATCH 4/4] req --- homeassistant/scripts/check_config.py | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/scripts/check_config.py b/homeassistant/scripts/check_config.py index 3e6c6a9c703d46..1b8c67193950fc 100644 --- a/homeassistant/scripts/check_config.py +++ b/homeassistant/scripts/check_config.py @@ -5,7 +5,6 @@ import os from collections import OrderedDict, namedtuple from glob import glob -from platform import system from typing import Dict, List, Sequence from unittest.mock import patch