mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Bump pydantic to 2.10.3 and update required deps (#131963)
This commit is contained in:
parent
f99239538c
commit
d2303eb83f
27
.github/workflows/wheels.yml
vendored
27
.github/workflows/wheels.yml
vendored
@ -197,33 +197,6 @@ jobs:
|
|||||||
|
|
||||||
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 3) requirements_all_wheels_${{ matrix.arch }}.txt requirements_all.txt
|
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 3) requirements_all_wheels_${{ matrix.arch }}.txt requirements_all.txt
|
||||||
|
|
||||||
- name: Create requirements for cython<3
|
|
||||||
if: matrix.abi == 'cp312'
|
|
||||||
run: |
|
|
||||||
# Some dependencies still require 'cython<3'
|
|
||||||
# and don't yet use isolated build environments.
|
|
||||||
# Build these first.
|
|
||||||
# pydantic: https://github.com/pydantic/pydantic/issues/7689
|
|
||||||
|
|
||||||
touch requirements_old-cython.txt
|
|
||||||
cat homeassistant/package_constraints.txt | grep 'pydantic==' >> requirements_old-cython.txt
|
|
||||||
|
|
||||||
- name: Build wheels (old cython)
|
|
||||||
uses: home-assistant/wheels@2024.11.0
|
|
||||||
if: matrix.abi == 'cp312'
|
|
||||||
with:
|
|
||||||
abi: ${{ matrix.abi }}
|
|
||||||
tag: musllinux_1_2
|
|
||||||
arch: ${{ matrix.arch }}
|
|
||||||
wheels-key: ${{ secrets.WHEELS_KEY }}
|
|
||||||
env-file: true
|
|
||||||
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev"
|
|
||||||
skip-binary: aiohttp;charset-normalizer;grpcio;multidict;SQLAlchemy;propcache;protobuf;pydantic;pymicro-vad;yarl
|
|
||||||
constraints: "homeassistant/package_constraints.txt"
|
|
||||||
requirements-diff: "requirements_diff.txt"
|
|
||||||
requirements: "requirements_old-cython.txt"
|
|
||||||
pip: "'cython<3'"
|
|
||||||
|
|
||||||
- name: Build wheels (part 1)
|
- name: Build wheels (part 1)
|
||||||
uses: home-assistant/wheels@2024.11.0
|
uses: home-assistant/wheels@2024.11.0
|
||||||
with:
|
with:
|
||||||
|
@ -6,5 +6,5 @@
|
|||||||
"documentation": "https://www.home-assistant.io/integrations/aussie_broadband",
|
"documentation": "https://www.home-assistant.io/integrations/aussie_broadband",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
"loggers": ["aussiebb"],
|
"loggers": ["aussiebb"],
|
||||||
"requirements": ["pyaussiebb==0.0.15"]
|
"requirements": ["pyaussiebb==0.1.4"]
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ VALID_MEDIA_TYPES: Final[tuple] = (
|
|||||||
# Fallback sources to use in case of API failure.
|
# Fallback sources to use in case of API failure.
|
||||||
FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
||||||
items=[
|
items=[
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="uriStreamer",
|
id="uriStreamer",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -145,7 +145,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="uriStreamer"),
|
type=SourceTypeEnum(value="uriStreamer"),
|
||||||
is_seekable=False,
|
is_seekable=False,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="bluetooth",
|
id="bluetooth",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -153,7 +153,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="bluetooth"),
|
type=SourceTypeEnum(value="bluetooth"),
|
||||||
is_seekable=False,
|
is_seekable=False,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="spotify",
|
id="spotify",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -161,7 +161,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="spotify"),
|
type=SourceTypeEnum(value="spotify"),
|
||||||
is_seekable=True,
|
is_seekable=True,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="lineIn",
|
id="lineIn",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -169,7 +169,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="lineIn"),
|
type=SourceTypeEnum(value="lineIn"),
|
||||||
is_seekable=False,
|
is_seekable=False,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="spdif",
|
id="spdif",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -177,7 +177,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="spdif"),
|
type=SourceTypeEnum(value="spdif"),
|
||||||
is_seekable=False,
|
is_seekable=False,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="netRadio",
|
id="netRadio",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -185,7 +185,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="netRadio"),
|
type=SourceTypeEnum(value="netRadio"),
|
||||||
is_seekable=False,
|
is_seekable=False,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="deezer",
|
id="deezer",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
@ -193,7 +193,7 @@ FALLBACK_SOURCES: Final[SourceArray] = SourceArray(
|
|||||||
type=SourceTypeEnum(value="deezer"),
|
type=SourceTypeEnum(value="deezer"),
|
||||||
is_seekable=True,
|
is_seekable=True,
|
||||||
),
|
),
|
||||||
Source(
|
Source( # type: ignore[call-arg]
|
||||||
id="tidalConnect",
|
id="tidalConnect",
|
||||||
is_enabled=True,
|
is_enabled=True,
|
||||||
is_playable=True,
|
is_playable=True,
|
||||||
|
@ -42,7 +42,7 @@ class BangOlufsenBase:
|
|||||||
|
|
||||||
# Objects that get directly updated by notifications.
|
# Objects that get directly updated by notifications.
|
||||||
self._playback_metadata: PlaybackContentMetadata = PlaybackContentMetadata()
|
self._playback_metadata: PlaybackContentMetadata = PlaybackContentMetadata()
|
||||||
self._playback_progress: PlaybackProgress = PlaybackProgress(total_duration=0)
|
self._playback_progress: PlaybackProgress = PlaybackProgress(total_duration=0) # type: ignore[call-arg]
|
||||||
self._playback_source: Source = Source()
|
self._playback_source: Source = Source()
|
||||||
self._playback_state: RenderingState = RenderingState()
|
self._playback_state: RenderingState = RenderingState()
|
||||||
self._source_change: Source = Source()
|
self._source_change: Source = Source()
|
||||||
|
@ -210,9 +210,9 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
# Misc. variables.
|
# Misc. variables.
|
||||||
self._audio_sources: dict[str, str] = {}
|
self._audio_sources: dict[str, str] = {}
|
||||||
self._media_image: Art = Art()
|
self._media_image: Art = Art()
|
||||||
self._software_status: SoftwareUpdateStatus = SoftwareUpdateStatus(
|
self._software_status: SoftwareUpdateStatus = SoftwareUpdateStatus( # type: ignore[call-arg]
|
||||||
software_version="",
|
software_version="",
|
||||||
state=SoftwareUpdateState(seconds_remaining=0, value="idle"),
|
state=SoftwareUpdateState(seconds_remaining=0, value="idle"), # type: ignore[call-arg]
|
||||||
)
|
)
|
||||||
self._sources: dict[str, str] = {}
|
self._sources: dict[str, str] = {}
|
||||||
self._state: str = MediaPlayerState.IDLE
|
self._state: str = MediaPlayerState.IDLE
|
||||||
@ -896,9 +896,9 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
|
|
||||||
elif media_type == BangOlufsenMediaType.RADIO:
|
elif media_type == BangOlufsenMediaType.RADIO:
|
||||||
await self._client.run_provided_scene(
|
await self._client.run_provided_scene(
|
||||||
scene_properties=SceneProperties(
|
scene_properties=SceneProperties( # type: ignore[call-arg]
|
||||||
action_list=[
|
action_list=[
|
||||||
Action(
|
Action( # type: ignore[call-arg]
|
||||||
type="radio",
|
type="radio",
|
||||||
radio_station_id=media_id,
|
radio_station_id=media_id,
|
||||||
)
|
)
|
||||||
@ -919,7 +919,7 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
deezer_id = kwargs[ATTR_MEDIA_EXTRA]["id"]
|
deezer_id = kwargs[ATTR_MEDIA_EXTRA]["id"]
|
||||||
|
|
||||||
await self._client.start_deezer_flow(
|
await self._client.start_deezer_flow(
|
||||||
user_flow=UserFlow(user_id=deezer_id)
|
user_flow=UserFlow(user_id=deezer_id) # type: ignore[call-arg]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Play a playlist or album.
|
# Play a playlist or album.
|
||||||
@ -929,7 +929,7 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
start_from = kwargs[ATTR_MEDIA_EXTRA]["start_from"]
|
start_from = kwargs[ATTR_MEDIA_EXTRA]["start_from"]
|
||||||
|
|
||||||
await self._client.add_to_queue(
|
await self._client.add_to_queue(
|
||||||
play_queue_item=PlayQueueItem(
|
play_queue_item=PlayQueueItem( # type: ignore[call-arg]
|
||||||
provider=PlayQueueItemType(value=media_type),
|
provider=PlayQueueItemType(value=media_type),
|
||||||
start_now_from_position=start_from,
|
start_now_from_position=start_from,
|
||||||
type="playlist",
|
type="playlist",
|
||||||
@ -940,7 +940,7 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
# Play a track.
|
# Play a track.
|
||||||
else:
|
else:
|
||||||
await self._client.add_to_queue(
|
await self._client.add_to_queue(
|
||||||
play_queue_item=PlayQueueItem(
|
play_queue_item=PlayQueueItem( # type: ignore[call-arg]
|
||||||
provider=PlayQueueItemType(value=media_type),
|
provider=PlayQueueItemType(value=media_type),
|
||||||
start_now_from_position=0,
|
start_now_from_position=0,
|
||||||
type="track",
|
type="track",
|
||||||
|
@ -277,10 +277,10 @@ async def async_setup_add_event_service(
|
|||||||
elif EVENT_START_DATETIME in call.data and EVENT_END_DATETIME in call.data:
|
elif EVENT_START_DATETIME in call.data and EVENT_END_DATETIME in call.data:
|
||||||
start_dt = call.data[EVENT_START_DATETIME]
|
start_dt = call.data[EVENT_START_DATETIME]
|
||||||
end_dt = call.data[EVENT_END_DATETIME]
|
end_dt = call.data[EVENT_END_DATETIME]
|
||||||
start = DateOrDatetime(
|
start = DateOrDatetime( # type: ignore[call-arg]
|
||||||
date_time=start_dt, timezone=str(hass.config.time_zone)
|
date_time=start_dt, timezone=str(hass.config.time_zone)
|
||||||
)
|
)
|
||||||
end = DateOrDatetime(date_time=end_dt, timezone=str(hass.config.time_zone))
|
end = DateOrDatetime(date_time=end_dt, timezone=str(hass.config.time_zone)) # type: ignore[call-arg]
|
||||||
|
|
||||||
if start is None or end is None:
|
if start is None or end is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
|
@ -272,7 +272,7 @@ async def async_setup_entry(
|
|||||||
entity_description.search,
|
entity_description.search,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
request_template = SyncEventsRequest(
|
request_template = SyncEventsRequest( # type: ignore[call-arg]
|
||||||
calendar_id=calendar_id,
|
calendar_id=calendar_id,
|
||||||
start_time=dt_util.now() + SYNC_EVENT_MIN_TIME,
|
start_time=dt_util.now() + SYNC_EVENT_MIN_TIME,
|
||||||
)
|
)
|
||||||
@ -437,11 +437,11 @@ class GoogleCalendarEntity(
|
|||||||
start: DateOrDatetime
|
start: DateOrDatetime
|
||||||
end: DateOrDatetime
|
end: DateOrDatetime
|
||||||
if isinstance(dtstart, datetime):
|
if isinstance(dtstart, datetime):
|
||||||
start = DateOrDatetime(
|
start = DateOrDatetime( # type: ignore[call-arg]
|
||||||
date_time=dt_util.as_local(dtstart),
|
date_time=dt_util.as_local(dtstart),
|
||||||
timezone=str(dt_util.get_default_time_zone()),
|
timezone=str(dt_util.get_default_time_zone()),
|
||||||
)
|
)
|
||||||
end = DateOrDatetime(
|
end = DateOrDatetime( # type: ignore[call-arg]
|
||||||
date_time=dt_util.as_local(dtend),
|
date_time=dt_util.as_local(dtend),
|
||||||
timezone=str(dt_util.get_default_time_zone()),
|
timezone=str(dt_util.get_default_time_zone()),
|
||||||
)
|
)
|
||||||
@ -543,8 +543,8 @@ async def async_create_event(entity: GoogleCalendarEntity, call: ServiceCall) ->
|
|||||||
elif EVENT_START_DATETIME in call.data and EVENT_END_DATETIME in call.data:
|
elif EVENT_START_DATETIME in call.data and EVENT_END_DATETIME in call.data:
|
||||||
start_dt = call.data[EVENT_START_DATETIME]
|
start_dt = call.data[EVENT_START_DATETIME]
|
||||||
end_dt = call.data[EVENT_END_DATETIME]
|
end_dt = call.data[EVENT_END_DATETIME]
|
||||||
start = DateOrDatetime(date_time=start_dt, timezone=str(hass.config.time_zone))
|
start = DateOrDatetime(date_time=start_dt, timezone=str(hass.config.time_zone)) # type: ignore[call-arg]
|
||||||
end = DateOrDatetime(date_time=end_dt, timezone=str(hass.config.time_zone))
|
end = DateOrDatetime(date_time=end_dt, timezone=str(hass.config.time_zone)) # type: ignore[call-arg]
|
||||||
|
|
||||||
if start is None or end is None:
|
if start is None or end is None:
|
||||||
raise ValueError("Missing required fields to set start or end date/datetime")
|
raise ValueError("Missing required fields to set start or end date/datetime")
|
||||||
|
@ -131,7 +131,7 @@ class CalendarQueryUpdateCoordinator(DataUpdateCoordinator[list[Event]]):
|
|||||||
self, start_date: datetime, end_date: datetime
|
self, start_date: datetime, end_date: datetime
|
||||||
) -> Iterable[Event]:
|
) -> Iterable[Event]:
|
||||||
"""Get all events in a specific time frame."""
|
"""Get all events in a specific time frame."""
|
||||||
request = ListEventsRequest(
|
request = ListEventsRequest( # type: ignore[call-arg]
|
||||||
calendar_id=self.calendar_id,
|
calendar_id=self.calendar_id,
|
||||||
start_time=start_date,
|
start_time=start_date,
|
||||||
end_time=end_date,
|
end_time=end_date,
|
||||||
@ -149,7 +149,7 @@ class CalendarQueryUpdateCoordinator(DataUpdateCoordinator[list[Event]]):
|
|||||||
|
|
||||||
async def _async_update_data(self) -> list[Event]:
|
async def _async_update_data(self) -> list[Event]:
|
||||||
"""Fetch data from API endpoint."""
|
"""Fetch data from API endpoint."""
|
||||||
request = ListEventsRequest(calendar_id=self.calendar_id, search=self._search)
|
request = ListEventsRequest(calendar_id=self.calendar_id, search=self._search) # type: ignore[call-arg]
|
||||||
try:
|
try:
|
||||||
result = await self.calendar_service.async_list_events(request)
|
result = await self.calendar_service.async_list_events(request)
|
||||||
except ApiException as err:
|
except ApiException as err:
|
||||||
|
@ -37,7 +37,7 @@ async def async_get_config_entry_diagnostics(
|
|||||||
return async_redact_data(
|
return async_redact_data(
|
||||||
{
|
{
|
||||||
"entry": entry.as_dict(),
|
"entry": entry.as_dict(),
|
||||||
"data": coordinator.data.dict(),
|
"data": coordinator.data.dict(), # type: ignore[deprecated]
|
||||||
},
|
},
|
||||||
TO_REDACT,
|
TO_REDACT,
|
||||||
)
|
)
|
||||||
|
@ -5,5 +5,5 @@
|
|||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/purpleair",
|
"documentation": "https://www.home-assistant.io/integrations/purpleair",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
"requirements": ["aiopurpleair==2022.12.1"]
|
"requirements": ["aiopurpleair==2023.12.0"]
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import asyncio
|
|||||||
import functools
|
import functools
|
||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
from pydantic import ValidationError
|
from pydantic.v1 import ValidationError
|
||||||
from uiprotect.api import ProtectApiClient
|
from uiprotect.api import ProtectApiClient
|
||||||
from uiprotect.data import Camera, Chime
|
from uiprotect.data import Camera, Chime
|
||||||
from uiprotect.exceptions import ClientError
|
from uiprotect.exceptions import ClientError
|
||||||
|
@ -6,5 +6,5 @@
|
|||||||
"dependencies": ["auth", "application_credentials"],
|
"dependencies": ["auth", "application_credentials"],
|
||||||
"documentation": "https://www.home-assistant.io/integrations/xbox",
|
"documentation": "https://www.home-assistant.io/integrations/xbox",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
"requirements": ["xbox-webapi==2.0.11"]
|
"requirements": ["xbox-webapi==2.1.0"]
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
from pydantic import ValidationError
|
from pydantic.v1 import ValidationError
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from zwave_js_server.client import Client
|
from zwave_js_server.client import Client
|
||||||
from zwave_js_server.model.controller import CONTROLLER_EVENT_MODEL_MAP
|
from zwave_js_server.model.controller import CONTROLLER_EVENT_MODEL_MAP
|
||||||
|
@ -125,9 +125,8 @@ multidict>=6.0.2
|
|||||||
# Version 2.0 added typing, prevent accidental fallbacks
|
# Version 2.0 added typing, prevent accidental fallbacks
|
||||||
backoff>=2.0
|
backoff>=2.0
|
||||||
|
|
||||||
# Required to avoid breaking (#101042).
|
# ensure pydantic version does not float since it might have breaking changes
|
||||||
# v2 has breaking changes (#99218).
|
pydantic==2.10.3
|
||||||
pydantic==1.10.19
|
|
||||||
|
|
||||||
# Required for Python 3.12.4 compatibility (#119223).
|
# Required for Python 3.12.4 compatibility (#119223).
|
||||||
mashumaro>=3.13.1
|
mashumaro>=3.13.1
|
||||||
|
@ -328,7 +328,7 @@ aiopegelonline==0.1.0
|
|||||||
aiopulse==0.4.6
|
aiopulse==0.4.6
|
||||||
|
|
||||||
# homeassistant.components.purpleair
|
# homeassistant.components.purpleair
|
||||||
aiopurpleair==2022.12.1
|
aiopurpleair==2023.12.0
|
||||||
|
|
||||||
# homeassistant.components.hunterdouglas_powerview
|
# homeassistant.components.hunterdouglas_powerview
|
||||||
aiopvapi==3.1.1
|
aiopvapi==3.1.1
|
||||||
@ -1781,7 +1781,7 @@ pyatmo==8.1.0
|
|||||||
pyatv==0.16.0
|
pyatv==0.16.0
|
||||||
|
|
||||||
# homeassistant.components.aussie_broadband
|
# homeassistant.components.aussie_broadband
|
||||||
pyaussiebb==0.0.15
|
pyaussiebb==0.1.4
|
||||||
|
|
||||||
# homeassistant.components.balboa
|
# homeassistant.components.balboa
|
||||||
pybalboa==1.0.2
|
pybalboa==1.0.2
|
||||||
@ -3020,7 +3020,7 @@ wolf-comm==0.0.15
|
|||||||
wyoming==1.5.4
|
wyoming==1.5.4
|
||||||
|
|
||||||
# homeassistant.components.xbox
|
# homeassistant.components.xbox
|
||||||
xbox-webapi==2.0.11
|
xbox-webapi==2.1.0
|
||||||
|
|
||||||
# homeassistant.components.xiaomi_ble
|
# homeassistant.components.xiaomi_ble
|
||||||
xiaomi-ble==0.33.0
|
xiaomi-ble==0.33.0
|
||||||
|
@ -14,7 +14,7 @@ license-expression==30.4.0
|
|||||||
mock-open==1.4.0
|
mock-open==1.4.0
|
||||||
mypy-dev==1.14.0a6
|
mypy-dev==1.14.0a6
|
||||||
pre-commit==4.0.0
|
pre-commit==4.0.0
|
||||||
pydantic==1.10.19
|
pydantic==2.10.3
|
||||||
pylint==3.3.2
|
pylint==3.3.2
|
||||||
pylint-per-file-ignores==1.3.2
|
pylint-per-file-ignores==1.3.2
|
||||||
pipdeptree==2.23.4
|
pipdeptree==2.23.4
|
||||||
|
@ -310,7 +310,7 @@ aiopegelonline==0.1.0
|
|||||||
aiopulse==0.4.6
|
aiopulse==0.4.6
|
||||||
|
|
||||||
# homeassistant.components.purpleair
|
# homeassistant.components.purpleair
|
||||||
aiopurpleair==2022.12.1
|
aiopurpleair==2023.12.0
|
||||||
|
|
||||||
# homeassistant.components.hunterdouglas_powerview
|
# homeassistant.components.hunterdouglas_powerview
|
||||||
aiopvapi==3.1.1
|
aiopvapi==3.1.1
|
||||||
@ -1455,7 +1455,7 @@ pyatmo==8.1.0
|
|||||||
pyatv==0.16.0
|
pyatv==0.16.0
|
||||||
|
|
||||||
# homeassistant.components.aussie_broadband
|
# homeassistant.components.aussie_broadband
|
||||||
pyaussiebb==0.0.15
|
pyaussiebb==0.1.4
|
||||||
|
|
||||||
# homeassistant.components.balboa
|
# homeassistant.components.balboa
|
||||||
pybalboa==1.0.2
|
pybalboa==1.0.2
|
||||||
@ -2415,7 +2415,7 @@ wolf-comm==0.0.15
|
|||||||
wyoming==1.5.4
|
wyoming==1.5.4
|
||||||
|
|
||||||
# homeassistant.components.xbox
|
# homeassistant.components.xbox
|
||||||
xbox-webapi==2.0.11
|
xbox-webapi==2.1.0
|
||||||
|
|
||||||
# homeassistant.components.xiaomi_ble
|
# homeassistant.components.xiaomi_ble
|
||||||
xiaomi-ble==0.33.0
|
xiaomi-ble==0.33.0
|
||||||
|
@ -158,9 +158,8 @@ multidict>=6.0.2
|
|||||||
# Version 2.0 added typing, prevent accidental fallbacks
|
# Version 2.0 added typing, prevent accidental fallbacks
|
||||||
backoff>=2.0
|
backoff>=2.0
|
||||||
|
|
||||||
# Required to avoid breaking (#101042).
|
# ensure pydantic version does not float since it might have breaking changes
|
||||||
# v2 has breaking changes (#99218).
|
pydantic==2.10.3
|
||||||
pydantic==1.10.19
|
|
||||||
|
|
||||||
# Required for Python 3.12.4 compatibility (#119223).
|
# Required for Python 3.12.4 compatibility (#119223).
|
||||||
mashumaro>=3.13.1
|
mashumaro>=3.13.1
|
||||||
|
@ -30,7 +30,7 @@ async def test_form(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> None:
|
|||||||
),
|
),
|
||||||
patch(
|
patch(
|
||||||
"lacrosse_view.LaCrosse.get_locations",
|
"lacrosse_view.LaCrosse.get_locations",
|
||||||
return_value=[Location(id=1, name="Test")],
|
return_value=[Location(id="1", name="Test")],
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
@ -206,7 +206,7 @@ async def test_already_configured_device(
|
|||||||
),
|
),
|
||||||
patch(
|
patch(
|
||||||
"lacrosse_view.LaCrosse.get_locations",
|
"lacrosse_view.LaCrosse.get_locations",
|
||||||
return_value=[Location(id=1, name="Test")],
|
return_value=[Location(id="1", name="Test")],
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
@ -262,7 +262,7 @@ async def test_reauth(hass: HomeAssistant) -> None:
|
|||||||
patch("lacrosse_view.LaCrosse.login", return_value=True),
|
patch("lacrosse_view.LaCrosse.login", return_value=True),
|
||||||
patch(
|
patch(
|
||||||
"lacrosse_view.LaCrosse.get_locations",
|
"lacrosse_view.LaCrosse.get_locations",
|
||||||
return_value=[Location(id=1, name="Test")],
|
return_value=[Location(id="1", name="Test")],
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
|
@ -39,7 +39,7 @@ async def test_sensor_available(
|
|||||||
"peco.PecoOutageApi.get_outage_totals",
|
"peco.PecoOutageApi.get_outage_totals",
|
||||||
return_value=OutageResults(
|
return_value=OutageResults(
|
||||||
customers_out=123,
|
customers_out=123,
|
||||||
percent_customers_out=15.589,
|
percent_customers_out=15,
|
||||||
outage_count=456,
|
outage_count=456,
|
||||||
customers_served=789,
|
customers_served=789,
|
||||||
),
|
),
|
||||||
@ -74,7 +74,7 @@ async def test_sensor_available(
|
|||||||
"peco.PecoOutageApi.get_outage_count",
|
"peco.PecoOutageApi.get_outage_count",
|
||||||
return_value=OutageResults(
|
return_value=OutageResults(
|
||||||
customers_out=123,
|
customers_out=123,
|
||||||
percent_customers_out=15.589,
|
percent_customers_out=15,
|
||||||
outage_count=456,
|
outage_count=456,
|
||||||
customers_served=789,
|
customers_served=789,
|
||||||
),
|
),
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'entity_picture': 'https://i.ytimg.com/vi/wysukDrMdqU/maxresdefault.jpg',
|
'entity_picture': 'https://i.ytimg.com/vi/wysukDrMdqU/maxresdefault.jpg',
|
||||||
'friendly_name': 'Google for Developers Latest upload',
|
'friendly_name': 'Google for Developers Latest upload',
|
||||||
'published_at': datetime.datetime(2023, 5, 11, 0, 20, 46, tzinfo=datetime.timezone.utc),
|
'published_at': datetime.datetime(2023, 5, 11, 0, 20, 46, tzinfo=TzInfo(UTC)),
|
||||||
'video_id': 'wysukDrMdqU',
|
'video_id': 'wysukDrMdqU',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user