Skip to content

Commit 732e6e3

Browse files
committed
Add an adapted version of test_compatibility.py from gerw's Bouni#171
1 parent 50e9500 commit 732e6e3

File tree

2 files changed

+1967
-10
lines changed

2 files changed

+1967
-10
lines changed

luxtronik/data_vector.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)