Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7805251
Add ISY994 variables as number entities
shbatm Jan 8, 2023
8aa9581
Cleanup based on other reviews
shbatm Jan 9, 2023
30160e3
Remove unnecessary descriptors
shbatm Jan 9, 2023
e8d97d9
Limit Whirlpool timestamp changes to +/- 60 seconds (#85368)
mkmer Jan 8, 2023
149a5a9
Small speed up to frequently called datetime functions (#85399)
bdraco Jan 8, 2023
6d017ba
Use subscription callbacks to discover Sonos speakers (#85411)
jjlawren Jan 8, 2023
90a6924
Code styling tweaks to the MQTT integration (#85463)
frenck Jan 8, 2023
dd00ee3
Code styling tweaks to Bluetooth (#85448)
frenck Jan 8, 2023
01ce7a1
Address a few deprecation warnings in tests (#85472)
scop Jan 8, 2023
8cf46be
Bump soco to 0.29.0 (#85473)
jjlawren Jan 8, 2023
d94eb2f
Code styling tweaks to the AdGuard Home integration (#85468)
frenck Jan 8, 2023
6599e4a
Fix fetching of initial data of Netgear sensors (#85450)
starkillerOG Jan 8, 2023
a375abc
Update pydocstyle to 6.2.3 (#85449)
cdce8p Jan 8, 2023
15db014
Code styling tweaks to the WLED integration (#85466)
frenck Jan 8, 2023
a0a9f31
Bump gcal_sync to 4.1.1 (#85453)
allenporter Jan 8, 2023
a93ce38
Code styling tweaks to the LaMetric integration (#85469)
frenck Jan 8, 2023
882975b
Handle timeouts in Sonos, reduce logging noise (#85461)
jjlawren Jan 8, 2023
8bcb522
Code styling tweaks to core entity components (#85460)
frenck Jan 8, 2023
50d60c5
Code styling tweaks to core helpers (#85441)
frenck Jan 8, 2023
03566cd
Expose async_scanner_devices_by_address from the bluetooth api (#83733)
dbuezas Jan 9, 2023
40f134b
[ci skip] Translation update
Jan 9, 2023
e7b13cd
Add missing context in homewizard assistant error (#85397)
eMerzh Jan 9, 2023
f3808fe
Bump aioesphomeapi to 13.0.4 (#85406)
bdraco Jan 9, 2023
e197c19
Google Assistant SDK: support Korean and Japanese (#85419)
tronikos Jan 9, 2023
b1db861
Upgrade RestrictedPython to 6.0 (#85426)
scop Jan 9, 2023
07d3ba9
Z-Wave.Me: Cover: Fixed calibration errors and add missing is_closed …
PoltoS Jan 9, 2023
a6b0b2f
Z-Wave.Me integration: Add code owners to receive notifications on gi…
PoltoS Jan 9, 2023
dae499d
Add network resource button entities to ISY994 and bump PyISY to 3.0.…
shbatm Jan 9, 2023
2320afe
Bump pyunifiprotect to 4.6.0 (#85483)
AngellusMortis Jan 9, 2023
83b5f26
Code styling tweaks to core utils & YAML loader (#85433)
frenck Jan 9, 2023
edbd381
Bump actions/upload-artifact from 3.1.1 to 3.1.2 (#85489)
dependabot[bot] Jan 9, 2023
bf04f14
Use power factor device class in Fronius integration again (#85495)
farmio Jan 9, 2023
e5a5b77
Bump actions/cache from 3.2.2 to 3.2.3 (#85488)
dependabot[bot] Jan 9, 2023
e625725
Remove invalid Signal Strength device class from NETGEAR (#85510)
frenck Jan 9, 2023
366b7fd
Add config flow to imap (#74623)
engrbm87 Jan 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,8 @@ omit =
homeassistant/components/ifttt/const.py
homeassistant/components/iglo/light.py
homeassistant/components/ihc/*
homeassistant/components/imap/__init__.py
homeassistant/components/imap/coordinator.py
homeassistant/components/imap/sensor.py
homeassistant/components/imap_email_content/sensor.py
homeassistant/components/incomfort/*
Expand Down Expand Up @@ -604,6 +606,7 @@ omit =
homeassistant/components/isy994/helpers.py
homeassistant/components/isy994/light.py
homeassistant/components/isy994/lock.py
homeassistant/components/isy994/number.py
homeassistant/components/isy994/sensor.py
homeassistant/components/isy994/services.py
homeassistant/components/isy994/switch.py
Expand Down
42 changes: 21 additions & 21 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.2.2
uses: actions/cache@v3.2.3
with:
path: venv
key: >-
Expand All @@ -191,7 +191,7 @@ jobs:
pip install "$(cat requirements_test.txt | grep pre-commit)"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.2.2
uses: actions/cache@v3.2.3
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
Expand Down Expand Up @@ -220,7 +220,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand All @@ -233,7 +233,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
Expand Down Expand Up @@ -274,7 +274,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand All @@ -287,7 +287,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
Expand Down Expand Up @@ -331,7 +331,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand All @@ -344,7 +344,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
Expand Down Expand Up @@ -377,7 +377,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand All @@ -390,7 +390,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
Expand Down Expand Up @@ -509,15 +509,15 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.2.2
uses: actions/cache@v3.2.3
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.2.2
uses: actions/cache@v3.2.3
with:
path: ${{ env.PIP_CACHE }}
key: >-
Expand Down Expand Up @@ -568,7 +568,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand Down Expand Up @@ -601,7 +601,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand Down Expand Up @@ -635,7 +635,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand Down Expand Up @@ -680,7 +680,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand Down Expand Up @@ -729,7 +729,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: >-
Expand Down Expand Up @@ -784,7 +784,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
Expand Down Expand Up @@ -852,7 +852,7 @@ jobs:
-p no:sugar \
tests/components/${{ matrix.group }}
- name: Upload coverage artifact
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v3.1.2
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
Expand Down Expand Up @@ -907,7 +907,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.2.2
uses: actions/cache/restore@v3.2.3
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
Expand Down Expand Up @@ -954,7 +954,7 @@ jobs:
--dburl=mysql://root:password@127.0.0.1/homeassistant-test \
tests/components/recorder
- name: Upload coverage artifact
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v3.1.2
with:
name: coverage-${{ matrix.python-version }}-mariadb
path: coverage.xml
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ jobs:
) > .env_file

- name: Upload env_file
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v3.1.2
with:
name: env_file
path: ./.env_file

- name: Upload requirements_diff
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v3.1.2
with:
name: requirements_diff
path: ./requirements_diff.txt
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ repos:
- pycodestyle==2.10.0
- pyflakes==3.0.1
- flake8-docstrings==1.6.0
- pydocstyle==6.1.1
- pydocstyle==6.2.3
- flake8-comprehensions==3.10.1
- flake8-noqa==1.3.0
- mccabe==0.7.0
Expand Down
6 changes: 4 additions & 2 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,8 @@ build.json @home-assistant/supervisor
/tests/components/image_processing/ @home-assistant/core
/homeassistant/components/image_upload/ @home-assistant/core
/tests/components/image_upload/ @home-assistant/core
/homeassistant/components/imap/ @engrbm87
/tests/components/imap/ @engrbm87
/homeassistant/components/incomfort/ @zxdavb
/homeassistant/components/influxdb/ @mdegat01
/tests/components/influxdb/ @mdegat01
Expand Down Expand Up @@ -1378,8 +1380,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/zoneminder/ @rohankapoorcom
/homeassistant/components/zwave_js/ @home-assistant/z-wave
/tests/components/zwave_js/ @home-assistant/z-wave
/homeassistant/components/zwave_me/ @lawfulchaos @Z-Wave-Me
/tests/components/zwave_me/ @lawfulchaos @Z-Wave-Me
/homeassistant/components/zwave_me/ @lawfulchaos @Z-Wave-Me @PoltoS
/tests/components/zwave_me/ @lawfulchaos @Z-Wave-Me @PoltoS

# Individual files
/homeassistant/components/demo/weather.py @fabaff
Expand Down
7 changes: 6 additions & 1 deletion homeassistant/components/adguard/entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ def device_info(self) -> DeviceInfo:
return DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={
(DOMAIN, self.adguard.host, self.adguard.port, self.adguard.base_path) # type: ignore[arg-type]
( # type: ignore[arg-type]
DOMAIN,
self.adguard.host,
self.adguard.port,
self.adguard.base_path,
)
},
manufacturer="AdGuard Team",
name="AdGuard Home",
Expand Down
10 changes: 10 additions & 0 deletions homeassistant/components/aussie_broadband/translations/uk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"config": {
"step": {
"reauth_confirm": {
"description": "\u041e\u043d\u043e\u0432\u0456\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f {username}",
"title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u044f"
}
}
}
}
5 changes: 4 additions & 1 deletion homeassistant/components/bluetooth/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,10 @@
async_register_scanner,
async_scanner_by_source,
async_scanner_count,
async_scanner_devices_by_address,
async_track_unavailable,
)
from .base_scanner import BaseHaRemoteScanner, BaseHaScanner
from .base_scanner import BaseHaRemoteScanner, BaseHaScanner, BluetoothScannerDevice
from .const import (
BLUETOOTH_DISCOVERY_COOLDOWN_SECONDS,
CONF_ADAPTER,
Expand Down Expand Up @@ -99,6 +100,7 @@
"async_track_unavailable",
"async_scanner_by_source",
"async_scanner_count",
"async_scanner_devices_by_address",
"BaseHaScanner",
"BaseHaRemoteScanner",
"BluetoothCallbackMatcher",
Expand All @@ -107,6 +109,7 @@
"BluetoothServiceInfoBleak",
"BluetoothScanningMode",
"BluetoothCallback",
"BluetoothScannerDevice",
"HaBluetoothConnector",
"SOURCE_LOCAL",
"FALLBACK_MAXIMUM_STALE_ADVERTISEMENT_SECONDS",
Expand Down
20 changes: 13 additions & 7 deletions homeassistant/components/bluetooth/active_update_coordinator.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
"""A Bluetooth passive coordinator that receives data from advertisements but can also poll."""
"""A Bluetooth passive coordinator.

Receives data from advertisements but can also poll.
"""
from __future__ import annotations

from collections.abc import Callable, Coroutine
Expand Down Expand Up @@ -33,16 +36,19 @@ class ActiveBluetoothDataUpdateCoordinator(
out if a poll is needed. This should return True if it is and False if it is
not needed.

def needs_poll_method(svc_info: BluetoothServiceInfoBleak, last_poll: float | None) -> bool:
def needs_poll_method(
svc_info: BluetoothServiceInfoBleak,
last_poll: float | None
) -> bool:
return True

If there has been no poll since HA started, `last_poll` will be None. Otherwise it is
the number of seconds since one was last attempted.
If there has been no poll since HA started, `last_poll` will be None.
Otherwise it is the number of seconds since one was last attempted.

If a poll is needed, the coordinator will call poll_method. This is a coroutine.
It should return the same type of data as your update_method. The expectation is that
data from advertisements and from polling are being parsed and fed into a shared
object that represents the current state of the device.
It should return the same type of data as your update_method. The expectation is
that data from advertisements and from polling are being parsed and fed into
a shared object that represents the current state of the device.

async def poll_method(svc_info: BluetoothServiceInfoBleak) -> YourDataType:
return YourDataType(....)
Expand Down
25 changes: 16 additions & 9 deletions homeassistant/components/bluetooth/active_update_processor.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
"""A Bluetooth passive processor coordinator that collects data from advertisements but can also poll."""
"""A Bluetooth passive processor coordinator.

Collects data from advertisements but can also poll.
"""
from __future__ import annotations

from collections.abc import Callable, Coroutine
Expand All @@ -23,23 +26,27 @@
class ActiveBluetoothProcessorCoordinator(
Generic[_T], PassiveBluetoothProcessorCoordinator[_T]
):
"""
A processor coordinator that parses passive data from advertisements but can also poll.
"""A processor coordinator that parses passive data.

Parses passive data from advertisements but can also poll.

Every time an advertisement is received, needs_poll_method is called to work
out if a poll is needed. This should return True if it is and False if it is
not needed.

def needs_poll_method(svc_info: BluetoothServiceInfoBleak, last_poll: float | None) -> bool:
def needs_poll_method(
svc_info: BluetoothServiceInfoBleak,
last_poll: float | None
) -> bool:
return True

If there has been no poll since HA started, `last_poll` will be None. Otherwise it is
the number of seconds since one was last attempted.
If there has been no poll since HA started, `last_poll` will be None.
Otherwise it is the number of seconds since one was last attempted.

If a poll is needed, the coordinator will call poll_method. This is a coroutine.
It should return the same type of data as your update_method. The expectation is that
data from advertisements and from polling are being parsed and fed into a shared
object that represents the current state of the device.
It should return the same type of data as your update_method. The expectation is
that data from advertisements and from polling are being parsed and fed into a
shared object that represents the current state of the device.

async def poll_method(svc_info: BluetoothServiceInfoBleak) -> YourDataType:
return YourDataType(....)
Expand Down
Loading