From 9aa28dfd544f496c5e81b3823371e963ada9bc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Mrozek?= Date: Mon, 14 Oct 2019 23:20:18 +0200 Subject: [PATCH] move imports in stream component (#27647) --- homeassistant/components/stream/__init__.py | 41 +++++++++++---------- homeassistant/components/stream/core.py | 8 ++-- homeassistant/components/stream/hls.py | 2 +- homeassistant/components/stream/recorder.py | 7 ++-- homeassistant/components/stream/worker.py | 7 ++-- tests/components/stream/common.py | 7 ++-- tests/components/stream/test_hls.py | 2 +- tests/components/stream/test_init.py | 10 ++--- tests/components/stream/test_recorder.py | 3 +- 9 files changed, 45 insertions(+), 42 deletions(-) diff --git a/homeassistant/components/stream/__init__.py b/homeassistant/components/stream/__init__.py index 2ae8dd5f714..4c93ce46135 100644 --- a/homeassistant/components/stream/__init__.py +++ b/homeassistant/components/stream/__init__.py @@ -4,31 +4,32 @@ import threading import voluptuous as vol +from homeassistant.auth.util import generate_secret +from homeassistant.const import CONF_FILENAME, EVENT_HOMEASSISTANT_STOP +from homeassistant.core import callback +from homeassistant.exceptions import HomeAssistantError +import homeassistant.helpers.config_validation as cv +from homeassistant.loader import bind_hass + +from .const import ( + ATTR_ENDPOINTS, + ATTR_STREAMS, + CONF_DURATION, + CONF_LOOKBACK, + CONF_STREAM_SOURCE, + DOMAIN, + SERVICE_RECORD, +) +from .core import PROVIDERS +from .hls import async_setup_hls +from .recorder import async_setup_recorder +from .worker import stream_worker + try: import uvloop except ImportError: uvloop = None -from homeassistant.auth.util import generate_secret -import homeassistant.helpers.config_validation as cv -from homeassistant.const import EVENT_HOMEASSISTANT_STOP, CONF_FILENAME -from homeassistant.core import callback -from homeassistant.exceptions import HomeAssistantError -from homeassistant.loader import bind_hass - -from .const import ( - DOMAIN, - ATTR_STREAMS, - ATTR_ENDPOINTS, - CONF_STREAM_SOURCE, - CONF_DURATION, - CONF_LOOKBACK, - SERVICE_RECORD, -) -from .core import PROVIDERS -from .worker import stream_worker -from .hls import async_setup_hls -from .recorder import async_setup_recorder _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/stream/core.py b/homeassistant/components/stream/core.py index 81335783e1a..9282c2cb855 100644 --- a/homeassistant/components/stream/core.py +++ b/homeassistant/components/stream/core.py @@ -2,17 +2,17 @@ import asyncio from collections import deque import io -from typing import List, Any +from typing import Any, List -import attr from aiohttp import web +import attr -from homeassistant.core import callback from homeassistant.components.http import HomeAssistantView +from homeassistant.core import callback from homeassistant.helpers.event import async_call_later from homeassistant.util.decorator import Registry -from .const import DOMAIN, ATTR_STREAMS +from .const import ATTR_STREAMS, DOMAIN PROVIDERS = Registry() diff --git a/homeassistant/components/stream/hls.py b/homeassistant/components/stream/hls.py index c9e62f53a57..2cd98c0a00f 100644 --- a/homeassistant/components/stream/hls.py +++ b/homeassistant/components/stream/hls.py @@ -5,7 +5,7 @@ from homeassistant.core import callback from homeassistant.util.dt import utcnow from .const import FORMAT_CONTENT_TYPE -from .core import StreamView, StreamOutput, PROVIDERS +from .core import PROVIDERS, StreamOutput, StreamView @callback diff --git a/homeassistant/components/stream/recorder.py b/homeassistant/components/stream/recorder.py index cd25896aff3..1dd90b8b804 100644 --- a/homeassistant/components/stream/recorder.py +++ b/homeassistant/components/stream/recorder.py @@ -1,10 +1,13 @@ """Provide functionality to record stream.""" + import threading from typing import List +import av + from homeassistant.core import callback -from .core import Segment, StreamOutput, PROVIDERS +from .core import PROVIDERS, Segment, StreamOutput @callback @@ -14,8 +17,6 @@ def async_setup_recorder(hass): def recorder_save_worker(file_out: str, segments: List[Segment]): """Handle saving stream.""" - import av - output = av.open(file_out, "w", options={"movflags": "frag_keyframe"}) output_v = None diff --git a/homeassistant/components/stream/worker.py b/homeassistant/components/stream/worker.py index e87221304a3..99ffd833eb3 100644 --- a/homeassistant/components/stream/worker.py +++ b/homeassistant/components/stream/worker.py @@ -3,6 +3,8 @@ from fractions import Fraction import io import logging +import av + from .const import AUDIO_SAMPLE_RATE from .core import Segment, StreamBuffer @@ -11,9 +13,8 @@ _LOGGER = logging.getLogger(__name__) def generate_audio_frame(): """Generate a blank audio frame.""" - from av import AudioFrame - audio_frame = AudioFrame(format="dbl", layout="mono", samples=1024) + audio_frame = av.AudioFrame(format="dbl", layout="mono", samples=1024) # audio_bytes = b''.join(b'\x00\x00\x00\x00\x00\x00\x00\x00' # for i in range(0, 1024)) audio_bytes = b"\x00\x00\x00\x00\x00\x00\x00\x00" * 1024 @@ -25,7 +26,6 @@ def generate_audio_frame(): def create_stream_buffer(stream_output, video_stream, audio_frame): """Create a new StreamBuffer.""" - import av a_packet = None segment = io.BytesIO() @@ -45,7 +45,6 @@ def create_stream_buffer(stream_output, video_stream, audio_frame): def stream_worker(hass, stream, quit_event): """Handle consuming streams.""" - import av container = av.open(stream.source, options=stream.options) try: diff --git a/tests/components/stream/common.py b/tests/components/stream/common.py index 32ab36dc477..4c34ec0b341 100644 --- a/tests/components/stream/common.py +++ b/tests/components/stream/common.py @@ -1,8 +1,11 @@ """Collection of test helpers.""" import io +import av +import numpy as np + from homeassistant.components.stream import Stream -from homeassistant.components.stream.const import DOMAIN, ATTR_STREAMS +from homeassistant.components.stream.const import ATTR_STREAMS, DOMAIN def generate_h264_video(): @@ -11,8 +14,6 @@ def generate_h264_video(): See: http://docs.mikeboers.com/pyav/develop/cookbook/numpy.html """ - import numpy as np - import av duration = 5 fps = 24 diff --git a/tests/components/stream/test_hls.py b/tests/components/stream/test_hls.py index ac564ce7553..293f8d1e4cf 100644 --- a/tests/components/stream/test_hls.py +++ b/tests/components/stream/test_hls.py @@ -4,8 +4,8 @@ from urllib.parse import urlparse import pytest -from homeassistant.setup import async_setup_component from homeassistant.components.stream import request_stream +from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util from tests.common import async_fire_time_changed diff --git a/tests/components/stream/test_init.py b/tests/components/stream/test_init.py index 80d703c801b..0661a5a9738 100644 --- a/tests/components/stream/test_init.py +++ b/tests/components/stream/test_init.py @@ -1,16 +1,16 @@ """The tests for stream.""" -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch import pytest -from homeassistant.const import CONF_FILENAME from homeassistant.components.stream.const import ( + ATTR_STREAMS, + CONF_LOOKBACK, + CONF_STREAM_SOURCE, DOMAIN, SERVICE_RECORD, - CONF_STREAM_SOURCE, - CONF_LOOKBACK, - ATTR_STREAMS, ) +from homeassistant.const import CONF_FILENAME from homeassistant.exceptions import HomeAssistantError from homeassistant.setup import async_setup_component diff --git a/tests/components/stream/test_recorder.py b/tests/components/stream/test_recorder.py index dce8b95d07c..95eeeecf7ad 100644 --- a/tests/components/stream/test_recorder.py +++ b/tests/components/stream/test_recorder.py @@ -2,11 +2,12 @@ from datetime import timedelta from io import BytesIO from unittest.mock import patch + import pytest -from homeassistant.setup import async_setup_component from homeassistant.components.stream.core import Segment from homeassistant.components.stream.recorder import recorder_save_worker +from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util from tests.common import async_fire_time_changed