From 221b77297e2021b4b337594ff644ab5139507764 Mon Sep 17 00:00:00 2001 From: uvjustin <46082645+uvjustin@users.noreply.github.com> Date: Sun, 15 May 2022 23:58:57 +0800 Subject: [PATCH] Declare exports from stream explicitly (#71898) --- homeassistant/components/camera/__init__.py | 8 ++++++-- homeassistant/components/camera/media_source.py | 2 +- homeassistant/components/generic/camera.py | 2 +- homeassistant/components/generic/config_flow.py | 2 +- homeassistant/components/onvif/__init__.py | 2 +- homeassistant/components/onvif/camera.py | 2 +- homeassistant/components/stream/__init__.py | 15 +++++++++++++++ mypy.ini | 1 + script/hassfest/mypy_config.py | 1 + tests/components/camera/test_media_source.py | 2 +- tests/components/generic/test_config_flow.py | 2 +- tests/components/roku/test_media_player.py | 2 +- 12 files changed, 31 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 57019f7c68d..bff0a07a9be 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -29,8 +29,12 @@ from homeassistant.components.media_player.const import ( DOMAIN as DOMAIN_MP, SERVICE_PLAY_MEDIA, ) -from homeassistant.components.stream import Stream, create_stream -from homeassistant.components.stream.const import FORMAT_CONTENT_TYPE, OUTPUT_FORMATS +from homeassistant.components.stream import ( + FORMAT_CONTENT_TYPE, + OUTPUT_FORMATS, + Stream, + create_stream, +) from homeassistant.components.websocket_api import ActiveConnection from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( diff --git a/homeassistant/components/camera/media_source.py b/homeassistant/components/camera/media_source.py index ffa1962f9ef..733efb3a430 100644 --- a/homeassistant/components/camera/media_source.py +++ b/homeassistant/components/camera/media_source.py @@ -15,7 +15,7 @@ from homeassistant.components.media_source.models import ( MediaSourceItem, PlayMedia, ) -from homeassistant.components.stream.const import FORMAT_CONTENT_TYPE, HLS_PROVIDER +from homeassistant.components.stream import FORMAT_CONTENT_TYPE, HLS_PROVIDER from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_component import EntityComponent diff --git a/homeassistant/components/generic/camera.py b/homeassistant/components/generic/camera.py index 4886e3a0693..edc51430f0d 100644 --- a/homeassistant/components/generic/camera.py +++ b/homeassistant/components/generic/camera.py @@ -12,7 +12,7 @@ from homeassistant.components.camera import ( Camera, CameraEntityFeature, ) -from homeassistant.components.stream.const import ( +from homeassistant.components.stream import ( CONF_RTSP_TRANSPORT, CONF_USE_WALLCLOCK_AS_TIMESTAMPS, RTSP_TRANSPORTS, diff --git a/homeassistant/components/generic/config_flow.py b/homeassistant/components/generic/config_flow.py index bf9499c07df..435fdf6f729 100644 --- a/homeassistant/components/generic/config_flow.py +++ b/homeassistant/components/generic/config_flow.py @@ -16,7 +16,7 @@ from httpx import HTTPStatusError, RequestError, TimeoutException import voluptuous as vol import yarl -from homeassistant.components.stream.const import ( +from homeassistant.components.stream import ( CONF_RTSP_TRANSPORT, CONF_USE_WALLCLOCK_AS_TIMESTAMPS, RTSP_TRANSPORTS, diff --git a/homeassistant/components/onvif/__init__.py b/homeassistant/components/onvif/__init__.py index d966549a36f..7922d59ca53 100644 --- a/homeassistant/components/onvif/__init__.py +++ b/homeassistant/components/onvif/__init__.py @@ -2,7 +2,7 @@ from onvif.exceptions import ONVIFAuthError, ONVIFError, ONVIFTimeoutError from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS -from homeassistant.components.stream.const import CONF_RTSP_TRANSPORT, RTSP_TRANSPORTS +from homeassistant.components.stream import CONF_RTSP_TRANSPORT, RTSP_TRANSPORTS from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP, diff --git a/homeassistant/components/onvif/camera.py b/homeassistant/components/onvif/camera.py index 6b61a37eb16..e46e1a2ac59 100644 --- a/homeassistant/components/onvif/camera.py +++ b/homeassistant/components/onvif/camera.py @@ -9,7 +9,7 @@ from yarl import URL from homeassistant.components import ffmpeg from homeassistant.components.camera import Camera, CameraEntityFeature from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS, get_ffmpeg_manager -from homeassistant.components.stream.const import CONF_RTSP_TRANSPORT +from homeassistant.components.stream import CONF_RTSP_TRANSPORT from homeassistant.config_entries import ConfigEntry from homeassistant.const import HTTP_BASIC_AUTHENTICATION from homeassistant.core import HomeAssistant diff --git a/homeassistant/components/stream/__init__.py b/homeassistant/components/stream/__init__.py index fbdfd97f9b2..95e9afe6c36 100644 --- a/homeassistant/components/stream/__init__.py +++ b/homeassistant/components/stream/__init__.py @@ -43,12 +43,15 @@ from .const import ( CONF_SEGMENT_DURATION, CONF_USE_WALLCLOCK_AS_TIMESTAMPS, DOMAIN, + FORMAT_CONTENT_TYPE, HLS_PROVIDER, MAX_SEGMENTS, + OUTPUT_FORMATS, OUTPUT_IDLE_TIMEOUT, RECORDER_PROVIDER, RTSP_TRANSPORTS, SEGMENT_DURATION_ADJUSTER, + SOURCE_TIMEOUT, STREAM_RESTART_INCREMENT, STREAM_RESTART_RESET_TIME, TARGET_SEGMENT_DURATION_NON_LL_HLS, @@ -57,6 +60,18 @@ from .core import PROVIDERS, IdleTimer, KeyFrameConverter, StreamOutput, StreamS from .diagnostics import Diagnostics from .hls import HlsStreamOutput, async_setup_hls +__all__ = [ + "CONF_RTSP_TRANSPORT", + "CONF_USE_WALLCLOCK_AS_TIMESTAMPS", + "FORMAT_CONTENT_TYPE", + "HLS_PROVIDER", + "OUTPUT_FORMATS", + "RTSP_TRANSPORTS", + "SOURCE_TIMEOUT", + "Stream", + "create_stream", +] + _LOGGER = logging.getLogger(__name__) STREAM_SOURCE_REDACT_PATTERN = [ diff --git a/mypy.ini b/mypy.ini index 7784acd9fe6..dc023da8d01 100644 --- a/mypy.ini +++ b/mypy.ini @@ -2017,6 +2017,7 @@ disallow_untyped_defs = true no_implicit_optional = true warn_return_any = true warn_unreachable = true +no_implicit_reexport = true [mypy-homeassistant.components.sun.*] check_untyped_defs = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index d21dc0faf7d..2b7c1e00f94 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -200,6 +200,7 @@ IGNORED_MODULES: Final[list[str]] = [ NO_IMPLICIT_REEXPORT_MODULES: set[str] = { "homeassistant.components", "homeassistant.components.diagnostics.*", + "homeassistant.components.stream.*", } HEADER: Final = """ diff --git a/tests/components/camera/test_media_source.py b/tests/components/camera/test_media_source.py index f684d81a2b1..b7c273bb23a 100644 --- a/tests/components/camera/test_media_source.py +++ b/tests/components/camera/test_media_source.py @@ -5,7 +5,7 @@ import pytest from homeassistant.components import media_source from homeassistant.components.camera.const import StreamType -from homeassistant.components.stream.const import FORMAT_CONTENT_TYPE +from homeassistant.components.stream import FORMAT_CONTENT_TYPE from homeassistant.setup import async_setup_component diff --git a/tests/components/generic/test_config_flow.py b/tests/components/generic/test_config_flow.py index 82cf41c6e91..b7f3bf73527 100644 --- a/tests/components/generic/test_config_flow.py +++ b/tests/components/generic/test_config_flow.py @@ -19,7 +19,7 @@ from homeassistant.components.generic.const import ( CONF_STREAM_SOURCE, DOMAIN, ) -from homeassistant.components.stream.const import ( +from homeassistant.components.stream import ( CONF_RTSP_TRANSPORT, CONF_USE_WALLCLOCK_AS_TIMESTAMPS, ) diff --git a/tests/components/roku/test_media_player.py b/tests/components/roku/test_media_player.py index 21fd2e861b6..c95eda2288a 100644 --- a/tests/components/roku/test_media_player.py +++ b/tests/components/roku/test_media_player.py @@ -52,7 +52,7 @@ from homeassistant.components.roku.const import ( DOMAIN, SERVICE_SEARCH, ) -from homeassistant.components.stream.const import FORMAT_CONTENT_TYPE, HLS_PROVIDER +from homeassistant.components.stream import FORMAT_CONTENT_TYPE, HLS_PROVIDER from homeassistant.components.websocket_api.const import TYPE_RESULT from homeassistant.config import async_process_ha_core_config from homeassistant.const import (