From f3376ba27655107d236e0adf00caa786be2a4948 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 10 Aug 2016 22:32:07 +0200 Subject: [PATCH] Script requirement logging, db_migrator REQUIREMENTS (#2781) --- homeassistant/scripts/__init__.py | 4 ++++ homeassistant/scripts/db_migrator.py | 24 +++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/homeassistant/scripts/__init__.py b/homeassistant/scripts/__init__.py index e4fb3f14e00..d737726f78e 100644 --- a/homeassistant/scripts/__init__.py +++ b/homeassistant/scripts/__init__.py @@ -2,6 +2,8 @@ import argparse import importlib import os +import sys +import logging from typing import List from homeassistant.config import get_default_config_dir @@ -35,6 +37,8 @@ def run(args: List) -> int: config_dir = extract_config_dir() deps_dir = mount_local_lib_path(config_dir) + + logging.basicConfig(stream=sys.stdout, level=logging.INFO) for req in getattr(script, 'REQUIREMENTS', []): if not install_package(req, target=deps_dir): print('Aborting scipt, could not install dependency', req) diff --git a/homeassistant/scripts/db_migrator.py b/homeassistant/scripts/db_migrator.py index 2b38ef52cb2..7e48bb3a1d7 100644 --- a/homeassistant/scripts/db_migrator.py +++ b/homeassistant/scripts/db_migrator.py @@ -6,18 +6,12 @@ import sqlite3 import sys from datetime import datetime -from typing import Optional +from typing import Optional, List -try: - from sqlalchemy import create_engine - from sqlalchemy.orm import sessionmaker -except ImportError: - print('Fatal Error: SQLAlchemy is missing. Install it with ' - '"pip3 install SQLAlchemy" before running this script') - sys.exit(1) -from homeassistant.components.recorder import models import homeassistant.config as config_util import homeassistant.util.dt as dt_util +# pylint: disable=unused-import +from homeassistant.components.recorder import REQUIREMENTS # NOQA def ts_to_dt(timestamp: Optional[float]) -> Optional[datetime]: @@ -53,9 +47,13 @@ def print_progress(iteration: int, total: int, prefix: str='', suffix: str='', print("\n") -def run(args) -> int: +def run(script_args: List) -> int: """The actual script body.""" # pylint: disable=too-many-locals,invalid-name,too-many-statements + from sqlalchemy import create_engine + from sqlalchemy.orm import sessionmaker + from homeassistant.components.recorder import models + parser = argparse.ArgumentParser( description="Migrate legacy DB to SQLAlchemy format.") parser.add_argument( @@ -120,7 +118,7 @@ def run(args) -> int: c = conn.cursor() n = 0 - for row in c.execute("SELECT * FROM recorder_runs"): + for row in c.execute("SELECT * FROM recorder_runs"): # type: ignore n += 1 session.add(models.RecorderRuns( start=ts_to_dt(row[1]), @@ -145,7 +143,7 @@ def run(args) -> int: c = conn.cursor() n = 0 - for row in c.execute("SELECT * FROM events"): + for row in c.execute("SELECT * FROM events"): # type: ignore n += 1 o = models.Events( event_type=row[1], @@ -173,7 +171,7 @@ def run(args) -> int: c = conn.cursor() n = 0 - for row in c.execute("SELECT * FROM states"): + for row in c.execute("SELECT * FROM states"): # type: ignore n += 1 session.add(models.States( entity_id=row[1],