Update mypy to 1.7.0 (#103800)

This commit is contained in:
Marc Mueller 2023-11-11 23:31:04 +01:00 committed by GitHub
parent 66d1a7f1dd
commit a70ec64408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 27 additions and 53 deletions

View File

@ -398,7 +398,7 @@ def async_enable_logging(
logging.getLogger("httpx").setLevel(logging.WARNING)
sys.excepthook = lambda *args: logging.getLogger(None).exception(
"Uncaught exception", exc_info=args # type: ignore[arg-type]
"Uncaught exception", exc_info=args
)
threading.excepthook = lambda args: logging.getLogger(None).exception(
"Uncaught thread exception",

View File

@ -93,9 +93,7 @@ class AssistPipelineSelect(SelectEntity, restore_state.RestoreEntity):
if self.registry_entry and (device_id := self.registry_entry.device_id):
pipeline_data.pipeline_devices.add(device_id)
self.async_on_remove(
lambda: pipeline_data.pipeline_devices.discard(
device_id # type: ignore[arg-type]
)
lambda: pipeline_data.pipeline_devices.discard(device_id)
)
async def async_select_option(self, option: str) -> None:

View File

@ -126,10 +126,10 @@ async def async_remove_config_entry_device(
for identifier in device_entry.identifiers:
if identifier[0] != DOMAIN or len(identifier) != 3:
continue
bond_id: str = identifier[1]
bond_id: str = identifier[1] # type: ignore[unreachable]
# Bond still uses the 3 arg tuple before
# the identifiers were typed
device_id: str = identifier[2] # type: ignore[misc]
device_id: str = identifier[2]
# If device_id is no longer present on
# the hub, we allow removal.
if hub.bond_id != bond_id or not any(

View File

@ -12,7 +12,7 @@ _T = TypeVar("_T")
@overload
def async_redact_data(data: Mapping, to_redact: Iterable[Any]) -> dict: # type: ignore[misc]
def async_redact_data(data: Mapping, to_redact: Iterable[Any]) -> dict: # type: ignore[overload-overlap]
...

View File

@ -28,18 +28,13 @@ def all_stmt(
)
if context_id_bin is not None:
stmt += lambda s: s.where(Events.context_id_bin == context_id_bin).union_all(
_states_query_for_context_id(
start_day,
end_day,
# https://github.com/python/mypy/issues/2608
context_id_bin, # type:ignore[arg-type]
),
_states_query_for_context_id(start_day, end_day, context_id_bin),
)
elif filters and filters.has_config:
stmt = stmt.add_criteria(
lambda q: q.filter(filters.events_entity_filter()).union_all( # type: ignore[union-attr]
lambda q: q.filter(filters.events_entity_filter()).union_all(
_states_query_for_all(start_day, end_day).where(
filters.states_metadata_entity_filter() # type: ignore[union-attr]
filters.states_metadata_entity_filter()
)
),
track_on=[filters],

View File

@ -124,7 +124,7 @@ class LTEData:
"""Shared state."""
websession = attr.ib()
modem_data = attr.ib(init=False, factory=dict)
modem_data: dict[str, ModemData] = attr.ib(init=False, factory=dict)
def get_modem_data(self, config):
"""Get modem_data for the host in config."""

View File

@ -192,7 +192,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
if isinstance(result, BaseException):
raise result from None
data.update_data_from_response(result)
data.update_data_from_response(result) # type: ignore[arg-type]
return data

View File

@ -4,6 +4,7 @@ from __future__ import annotations
import asyncio
from collections import defaultdict
from dataclasses import dataclass
from typing import cast
from aiohttp import ClientError
from pyoverkiz.client import OverkizClient
@ -15,7 +16,7 @@ from pyoverkiz.exceptions import (
NotSuchTokenException,
TooManyRequestsException,
)
from pyoverkiz.models import Device, Scenario
from pyoverkiz.models import Device, Scenario, Setup
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
@ -77,6 +78,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except MaintenanceException as exception:
raise ConfigEntryNotReady("Server is down for maintenance") from exception
setup = cast(Setup, setup)
scenarios = cast(list[Scenario], scenarios)
coordinator = OverkizDataUpdateCoordinator(
hass,
LOGGER,

View File

@ -43,7 +43,7 @@ class OverkizDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Device]]):
name: str,
client: OverkizClient,
devices: list[Device],
places: Place,
places: Place | None,
update_interval: timedelta | None = None,
config_entry_id: str,
) -> None:

View File

@ -1088,10 +1088,7 @@ def _generate_statistics_during_period_stmt(
end_time_ts = end_time.timestamp()
stmt += lambda q: q.filter(table.start_ts < end_time_ts)
if metadata_ids:
stmt += lambda q: q.filter(
# https://github.com/python/mypy/issues/2608
table.metadata_id.in_(metadata_ids) # type:ignore[arg-type]
)
stmt += lambda q: q.filter(table.metadata_id.in_(metadata_ids))
stmt += lambda q: q.order_by(table.metadata_id, table.start_ts)
return stmt

View File

@ -41,10 +41,7 @@ def _generate_get_metadata_stmt(
"""Generate a statement to fetch metadata."""
stmt = lambda_stmt(lambda: select(*QUERY_STATISTIC_META))
if statistic_ids:
stmt += lambda q: q.where(
# https://github.com/python/mypy/issues/2608
StatisticsMeta.statistic_id.in_(statistic_ids) # type:ignore[arg-type]
)
stmt += lambda q: q.where(StatisticsMeta.statistic_id.in_(statistic_ids))
if statistic_source is not None:
stmt += lambda q: q.where(StatisticsMeta.source == statistic_source)
if statistic_type == "mean":

View File

@ -497,19 +497,9 @@ def compile_statistics( # noqa: C901
# Make calculations
stat: StatisticData = {"start": start}
if "max" in wanted_statistics[entity_id]:
stat["max"] = max(
*itertools.islice(
zip(*valid_float_states), # type: ignore[typeddict-item]
1,
)
)
stat["max"] = max(*itertools.islice(zip(*valid_float_states), 1))
if "min" in wanted_statistics[entity_id]:
stat["min"] = min(
*itertools.islice(
zip(*valid_float_states), # type: ignore[typeddict-item]
1,
)
)
stat["min"] = min(*itertools.islice(zip(*valid_float_states), 1))
if "mean" in wanted_statistics[entity_id]:
stat["mean"] = _time_weighted_average(valid_float_states, start, end)

View File

@ -70,7 +70,7 @@ class LTEData:
"""Shared state."""
websession = attr.ib()
modem_data = attr.ib(init=False, factory=dict)
modem_data: dict[str, ModemData] = attr.ib(init=False, factory=dict)
def get_modem_data(self, config):
"""Get the requested or the only modem_data value."""

View File

@ -823,15 +823,8 @@ class DeviceRegistry:
for device in data["deleted_devices"]:
deleted_devices[device["id"]] = DeletedDeviceEntry(
config_entries=set(device["config_entries"]),
# type ignores (if tuple arg was cast): likely https://github.com/python/mypy/issues/8625
connections={
tuple(conn) # type: ignore[misc]
for conn in device["connections"]
},
identifiers={
tuple(iden) # type: ignore[misc]
for iden in device["identifiers"]
},
connections={tuple(conn) for conn in device["connections"]},
identifiers={tuple(iden) for iden in device["identifiers"]},
id=device["id"],
orphaned_timestamp=device["orphaned_timestamp"],
)

View File

@ -2567,7 +2567,7 @@ class TemplateEnvironment(ImmutableSandboxedEnvironment):
self.globals["expand"] = hassfunction(expand)
self.filters["expand"] = self.globals["expand"]
self.globals["closest"] = hassfunction(closest)
self.filters["closest"] = hassfunction(closest_filter) # type: ignore[arg-type]
self.filters["closest"] = hassfunction(closest_filter)
self.globals["distance"] = hassfunction(distance)
self.globals["is_hidden_entity"] = hassfunction(is_hidden_entity)
self.tests["is_hidden_entity"] = hassfunction(
@ -2608,7 +2608,7 @@ class TemplateEnvironment(ImmutableSandboxedEnvironment):
return super().is_safe_attribute(obj, attr, value)
@overload
def compile( # type: ignore[misc]
def compile( # type: ignore[overload-overlap]
self,
source: str | jinja2.nodes.Template,
name: str | None = None,

View File

@ -341,7 +341,7 @@ async def async_initialize_triggers(
elif isinstance(result, BaseException):
raise result from None
elif result is None:
log_cb(
log_cb( # type: ignore[unreachable]
logging.ERROR, "Unknown error while setting up trigger (empty result)"
)
else:

View File

@ -11,7 +11,7 @@ astroid==3.0.1
coverage==7.3.2
freezegun==1.2.2
mock-open==1.4.0
mypy==1.6.1
mypy==1.7.0
pre-commit==3.5.0
pydantic==1.10.12
pylint==3.0.2