mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
Store devices as dict instead of list (#16229)
* Store devices as dict instead of list * Use OrderedDict
This commit is contained in:
parent
45649824ca
commit
8ab31fe139
@ -2,6 +2,8 @@
|
|||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
|
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
@ -45,7 +47,7 @@ class DeviceRegistry:
|
|||||||
@callback
|
@callback
|
||||||
def async_get_device(self, identifiers: str, connections: tuple):
|
def async_get_device(self, identifiers: str, connections: tuple):
|
||||||
"""Check if device is registered."""
|
"""Check if device is registered."""
|
||||||
for device in self.devices:
|
for device in self.devices.values():
|
||||||
if any(iden in device.identifiers for iden in identifiers) or \
|
if any(iden in device.identifiers for iden in identifiers) or \
|
||||||
any(conn in device.connections for conn in connections):
|
any(conn in device.connections for conn in connections):
|
||||||
return device
|
return device
|
||||||
@ -75,7 +77,7 @@ class DeviceRegistry:
|
|||||||
name=name,
|
name=name,
|
||||||
sw_version=sw_version
|
sw_version=sw_version
|
||||||
)
|
)
|
||||||
self.devices.append(device)
|
self.devices[device.id] = device
|
||||||
|
|
||||||
self.async_schedule_save()
|
self.async_schedule_save()
|
||||||
|
|
||||||
@ -86,10 +88,10 @@ class DeviceRegistry:
|
|||||||
devices = await self._store.async_load()
|
devices = await self._store.async_load()
|
||||||
|
|
||||||
if devices is None:
|
if devices is None:
|
||||||
self.devices = []
|
self.devices = OrderedDict()
|
||||||
return
|
return
|
||||||
|
|
||||||
self.devices = [DeviceEntry(
|
self.devices = {device['id']: DeviceEntry(
|
||||||
config_entries=device['config_entries'],
|
config_entries=device['config_entries'],
|
||||||
connections={tuple(conn) for conn in device['connections']},
|
connections={tuple(conn) for conn in device['connections']},
|
||||||
identifiers={tuple(iden) for iden in device['identifiers']},
|
identifiers={tuple(iden) for iden in device['identifiers']},
|
||||||
@ -98,7 +100,7 @@ class DeviceRegistry:
|
|||||||
name=device['name'],
|
name=device['name'],
|
||||||
sw_version=device['sw_version'],
|
sw_version=device['sw_version'],
|
||||||
id=device['id'],
|
id=device['id'],
|
||||||
) for device in devices['devices']]
|
) for device in devices['devices']}
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_schedule_save(self):
|
def async_schedule_save(self):
|
||||||
@ -120,7 +122,7 @@ class DeviceRegistry:
|
|||||||
'name': entry.name,
|
'name': entry.name,
|
||||||
'sw_version': entry.sw_version,
|
'sw_version': entry.sw_version,
|
||||||
'id': entry.id,
|
'id': entry.id,
|
||||||
} for entry in self.devices
|
} for entry in self.devices.values()
|
||||||
]
|
]
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
"""Tests for the Device Registry."""
|
"""Tests for the Device Registry."""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
from homeassistant.helpers import device_registry
|
from homeassistant.helpers import device_registry
|
||||||
|
|
||||||
|
|
||||||
def mock_registry(hass, mock_entries=None):
|
def mock_registry(hass, mock_entries=None):
|
||||||
"""Mock the Device Registry."""
|
"""Mock the Device Registry."""
|
||||||
registry = device_registry.DeviceRegistry(hass)
|
registry = device_registry.DeviceRegistry(hass)
|
||||||
registry.devices = mock_entries or []
|
registry.devices = mock_entries or OrderedDict()
|
||||||
|
|
||||||
async def _get_reg():
|
async def _get_reg():
|
||||||
return registry
|
return registry
|
||||||
|
Loading…
x
Reference in New Issue
Block a user