@@ -38,6 +38,29 @@ def parse(self, raw_data):
3838 entry .raw = data
3939 self ._data [index ] = entry
4040
41+ def _name_lookup (self , name ):
42+ """
43+ Try to find the index using the given field name.
44+
45+ Args:
46+ name (string): Field name.
47+
48+ Returns:
49+ tuple[int | None, str | None]:
50+ 0: Index found or None
51+ 1: New preferred name, if available, otherwise None
52+ """
53+ obsolete_entry = self ._obsolete .get (name , None )
54+ if obsolete_entry :
55+ return None , obsolete_entry
56+ for index , entry in self ._data .items ():
57+ check_result = entry .check_name (name )
58+ if check_result == LUXTRONIK_NAME_CHECK_PREFERRED :
59+ return index , None
60+ elif check_result == LUXTRONIK_NAME_CHECK_OBSOLETE :
61+ return index , entry .name
62+ return None , None
63+
4164 def _lookup (self , target , with_index = False ):
4265 """
4366 Lookup an entry
@@ -52,16 +75,9 @@ def _lookup(self, target, with_index=False):
5275 target_index = int (target )
5376 except ValueError :
5477 # Get entry by name
55- target_index = None
56- obsolete_entry = self ._obsolete .get (target , None )
57- if obsolete_entry :
58- raise KeyError (f"The name '{ target } ' is obsolete! Use '{ obsolete_entry } ' instead." )
59- for index , entry in self ._data .items ():
60- check_result = entry .check_name (target )
61- if check_result == LUXTRONIK_NAME_CHECK_PREFERRED :
62- target_index = index
63- elif check_result == LUXTRONIK_NAME_CHECK_OBSOLETE :
64- raise KeyError (f"The name '{ target } ' is obsolete! Use '{ entry .name } ' instead." )
78+ target_index , new_name = self ._name_lookup (target )
79+ if new_name is not None :
80+ raise KeyError (f"The name '{ target } ' is obsolete! Use '{ new_name } ' instead." )
6581 elif isinstance (target , int ):
6682 # Get entry by id
6783 target_index = target
0 commit comments