@@ -1272,10 +1272,35 @@ def entity_attributes(self, entity_id):
1272
1272
"attribute_value" ]]
1273
1273
return res
1274
1274
1275
- def _mdui_uiinfo (self , entity_id ):
1275
+ def _lookup_elements_by_cls (self , root , cls ):
1276
+ elements = (
1277
+ element
1278
+ for uiinfo in root
1279
+ for element_key , elements in uiinfo .items ()
1280
+ if element_key != "__class__"
1281
+ for element in elements
1282
+ if element .get ("__class__" ) == cls
1283
+ )
1284
+ return elements
1285
+
1286
+ def _lookup_elements_by_key (self , root , key ):
1287
+ elements = (
1288
+ element
1289
+ for uiinfo in root
1290
+ for elements in [uiinfo .get (key , [])]
1291
+ for element in elements
1292
+ )
1293
+ return elements
1294
+
1295
+ def mdui_uiinfo (self , entity_id ):
1296
+ try :
1297
+ data = self [entity_id ]
1298
+ except KeyError :
1299
+ data = {}
1300
+
1276
1301
descriptor_names = (
1277
1302
item
1278
- for item in self [ entity_id ] .keys ()
1303
+ for item in data .keys ()
1279
1304
if item .endswith ("_descriptor" )
1280
1305
)
1281
1306
descriptors = (
@@ -1295,12 +1320,8 @@ def _mdui_uiinfo(self, entity_id):
1295
1320
)
1296
1321
return uiinfos
1297
1322
1298
- def mdui_uiinfo (self , entity_id ):
1299
- uiinfos = list (self ._mdui_uiinfo (entity_id ))
1300
- return uiinfos
1301
-
1302
- def _mdui_uiinfo_i18n_elements (self , entity_id , langpref , element_hint , lookup ):
1303
- uiinfos = self ._mdui_uiinfo (entity_id )
1323
+ def _mdui_uiinfo_i18n_elements_lookup (self , entity_id , langpref , element_hint , lookup ):
1324
+ uiinfos = self .mdui_uiinfo (entity_id )
1304
1325
elements = lookup (uiinfos , element_hint )
1305
1326
lang_elements = (
1306
1327
element
@@ -1314,78 +1335,42 @@ def _mdui_uiinfo_i18n_elements(self, entity_id, langpref, element_hint, lookup):
1314
1335
)
1315
1336
return values
1316
1337
1317
- def _mdui_uiinfo_lookup_elements_by_cls (self , uiinfos , element_cls ):
1318
- elements = (
1319
- element
1320
- for uiinfo in uiinfos
1321
- for element_key , elements in uiinfo .items ()
1322
- if element_key != "__class__"
1323
- for element in elements
1324
- if element .get ("__class__" ) == element_cls
1325
- )
1326
- return elements
1327
-
1328
- def _mdui_uiinfo_lookup_elements_by_key (self , uiinfos , element_key ):
1329
- elements = (
1330
- element
1331
- for uiinfo in uiinfos
1332
- for elements in [uiinfo .get (element_key , [])]
1333
- for element in elements
1334
- )
1335
- return elements
1336
-
1337
1338
def mdui_uiinfo_i18n_element_cls (self , entity_id , langpref , element_cls ):
1338
- values = self ._mdui_uiinfo_i18n_elements (
1339
- entity_id , langpref , element_cls , self ._mdui_uiinfo_lookup_elements_by_cls
1339
+ values = self ._mdui_uiinfo_i18n_elements_lookup (
1340
+ entity_id , langpref , element_cls , self ._lookup_elements_by_cls
1340
1341
)
1341
1342
return values
1342
1343
1343
1344
def mdui_uiinfo_i18n_element_key (self , entity_id , langpref , element_key ):
1344
- values = self ._mdui_uiinfo_i18n_elements (
1345
- entity_id , langpref , element_key , self ._mdui_uiinfo_lookup_elements_by_key
1345
+ values = self ._mdui_uiinfo_i18n_elements_lookup (
1346
+ entity_id , langpref , element_key , self ._lookup_elements_by_key
1346
1347
)
1347
1348
return values
1348
1349
1349
- def _mdui_uiinfo_display_name (self , entity_id , langpref = None ):
1350
+ def mdui_uiinfo_display_name (self , entity_id , langpref = None ):
1350
1351
cls = classnames ["mdui_uiinfo_display_name" ]
1351
1352
values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
1352
1353
return values
1353
1354
1354
- def mdui_uiinfo_display_name (self , entity_id , langpref = None ):
1355
- values = list (self ._mdui_uiinfo_display_name (entity_id , langpref ))
1356
- return values
1357
-
1358
- def _mdui_uiinfo_description (self , entity_id , langpref = None ):
1355
+ def mdui_uiinfo_description (self , entity_id , langpref = None ):
1359
1356
cls = classnames ["mdui_uiinfo_description" ]
1360
1357
values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
1361
1358
return values
1362
1359
1363
- def mdui_uiinfo_description (self , entity_id , langpref = None ):
1364
- values = list (self ._mdui_uiinfo_description (entity_id , langpref ))
1365
- return values
1366
-
1367
- def _mdui_uiinfo_information_url (self , entity_id , langpref = None ):
1360
+ def mdui_uiinfo_information_url (self , entity_id , langpref = None ):
1368
1361
cls = classnames ["mdui_uiinfo_information_url" ]
1369
1362
values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
1370
1363
return values
1371
1364
1372
- def mdui_uiinfo_information_url (self , entity_id , langpref = None ):
1373
- values = list (self ._mdui_uiinfo_information_url (entity_id , langpref ))
1374
- return values
1375
-
1376
- def _mdui_uiinfo_privacy_statement_url (self , entity_id , langpref = None ):
1365
+ def mdui_uiinfo_privacy_statement_url (self , entity_id , langpref = None ):
1377
1366
cls = classnames ["mdui_uiinfo_privacy_statement_url" ]
1378
1367
values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
1379
1368
return values
1380
1369
1381
- def mdui_uiinfo_privacy_statement_url (self , entity_id , langpref = None ):
1382
- values = list (self ._mdui_uiinfo_privacy_statement_url (entity_id , langpref ))
1383
- return values
1384
-
1385
- def _mdui_uiinfo_logo (self , entity_id , width , height ):
1386
- uiinfos = self ._mdui_uiinfo (entity_id )
1370
+ def mdui_uiinfo_logo (self , entity_id , width = None , height = None ):
1371
+ uiinfos = self .mdui_uiinfo (entity_id )
1387
1372
cls = classnames ["mdui_uiinfo_logo" ]
1388
- elements = self ._mdui_uiinfo_lookup_elements_by_cls (uiinfos , cls )
1373
+ elements = self ._lookup_elements_by_cls (uiinfos , cls )
1389
1374
values = (
1390
1375
element
1391
1376
for element in elements
@@ -1394,10 +1379,6 @@ def _mdui_uiinfo_logo(self, entity_id, width, height):
1394
1379
)
1395
1380
return values
1396
1381
1397
- def mdui_uiinfo_logo (self , entity_id , width = None , height = None ):
1398
- values = list (self ._mdui_uiinfo_logo (entity_id , width , height ))
1399
- return values
1400
-
1401
1382
def bindings (self , entity_id , typ , service ):
1402
1383
for _md in self .metadata .values ():
1403
1384
if entity_id in _md .items ():
0 commit comments