From 94a52d5ccad9dcf1151b539481dd78abb7983e12 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 27 Mar 2023 11:00:23 +0200 Subject: [PATCH] Adjust tts default_options type hints (#90053) * Adjust tts default_options type hints * Improve other components * Adjust * Revert component changes * Adjust get_tts_audio in amazon_polly --- homeassistant/components/amazon_polly/tts.py | 6 +++--- homeassistant/components/tts/__init__.py | 12 +++++++----- pylint/plugins/hass_enforce_type_hints.py | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/amazon_polly/tts.py b/homeassistant/components/amazon_polly/tts.py index 7e21b9ac603..97e0af7f18e 100644 --- a/homeassistant/components/amazon_polly/tts.py +++ b/homeassistant/components/amazon_polly/tts.py @@ -2,7 +2,7 @@ from __future__ import annotations import logging -from typing import Final +from typing import Any, Final import boto3 import botocore @@ -166,8 +166,8 @@ class AmazonPollyProvider(Provider): def get_tts_audio( self, message: str, - language: str | None = None, - options: dict[str, str] | None = None, + language: str, + options: dict[str, Any] | None = None, ) -> TtsAudioType: """Request TTS file from Polly.""" if options is None or language is None: diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 39aedfe8cbd..aa8864ad23d 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -2,6 +2,7 @@ from __future__ import annotations import asyncio +from collections.abc import Mapping import functools as ft import hashlib from http import HTTPStatus @@ -380,11 +381,12 @@ class SpeechManager: raise HomeAssistantError(f"Not supported language {language}") # Options - if provider.default_options and options: - merged_options = provider.default_options.copy() + if (default_options := provider.default_options) and options: + merged_options = dict(default_options) merged_options.update(options) options = merged_options - options = options or provider.default_options + if not options: + options = None if default_options is None else dict(default_options) if options is not None: supported_options = provider.supported_options or [] @@ -665,8 +667,8 @@ class Provider: return None @property - def default_options(self) -> dict[str, Any] | None: - """Return a dict include default options.""" + def default_options(self) -> Mapping[str, Any] | None: + """Return a mapping with the default options.""" return None def get_tts_audio( diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index 63cc5a1c6b9..58bfd3b69b1 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -2366,7 +2366,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = { ), TypeHintMatch( function_name="default_options", - return_type=["dict[str, Any]", None], + return_type=["Mapping[str, Any]", None], ), TypeHintMatch( function_name="get_tts_audio",