@@ -1272,10 +1272,35 @@ def entity_attributes(self, entity_id):
12721272 "attribute_value" ]]
12731273 return res
12741274
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+
12761301 descriptor_names = (
12771302 item
1278- for item in self [ entity_id ] .keys ()
1303+ for item in data .keys ()
12791304 if item .endswith ("_descriptor" )
12801305 )
12811306 descriptors = (
@@ -1295,12 +1320,8 @@ def _mdui_uiinfo(self, entity_id):
12951320 )
12961321 return uiinfos
12971322
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 )
13041325 elements = lookup (uiinfos , element_hint )
13051326 lang_elements = (
13061327 element
@@ -1314,78 +1335,42 @@ def _mdui_uiinfo_i18n_elements(self, entity_id, langpref, element_hint, lookup):
13141335 )
13151336 return values
13161337
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-
13371338 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
13401341 )
13411342 return values
13421343
13431344 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
13461347 )
13471348 return values
13481349
1349- def _mdui_uiinfo_display_name (self , entity_id , langpref = None ):
1350+ def mdui_uiinfo_display_name (self , entity_id , langpref = None ):
13501351 cls = classnames ["mdui_uiinfo_display_name" ]
13511352 values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
13521353 return values
13531354
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 ):
13591356 cls = classnames ["mdui_uiinfo_description" ]
13601357 values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
13611358 return values
13621359
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 ):
13681361 cls = classnames ["mdui_uiinfo_information_url" ]
13691362 values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
13701363 return values
13711364
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 ):
13771366 cls = classnames ["mdui_uiinfo_privacy_statement_url" ]
13781367 values = self .mdui_uiinfo_i18n_element_cls (entity_id , langpref , cls )
13791368 return values
13801369
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 )
13871372 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 )
13891374 values = (
13901375 element
13911376 for element in elements
@@ -1394,10 +1379,6 @@ def _mdui_uiinfo_logo(self, entity_id, width, height):
13941379 )
13951380 return values
13961381
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-
14011382 def bindings (self , entity_id , typ , service ):
14021383 for _md in self .metadata .values ():
14031384 if entity_id in _md .items ():
0 commit comments