Skip to content

Commit 4eaf21e

Browse files
authored
fix: narrow write_multi_vars item types (#855)
1 parent 62b6859 commit 4eaf21e

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

‎snap7/client.py‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,9 +1383,10 @@ def write_multi_vars(self, items: Union[List[dict[str, Any]], List[S7DataItem]])
13831383
raise ValueError(f"Too many items: {len(items)} exceeds MAX_VARS ({self.MAX_VARS})")
13841384

13851385
# Handle S7DataItem list (ctypes)
1386-
if hasattr(items[0], "Area"):
1387-
s7_items = cast(List[S7DataItem], items)
1388-
for s7_item in s7_items:
1386+
if isinstance(items[0], S7DataItem):
1387+
for s7_item in items:
1388+
if not isinstance(s7_item, S7DataItem):
1389+
raise TypeError("items must contain either only S7DataItem objects or only dictionaries")
13891390
area = Area(s7_item.Area)
13901391
db_number = s7_item.DBNumber
13911392
start = s7_item.Start
@@ -1401,8 +1402,9 @@ def write_multi_vars(self, items: Union[List[dict[str, Any]], List[S7DataItem]])
14011402
return 0
14021403

14031404
# Handle dict list
1404-
dict_items = cast(List[dict[str, Any]], items)
1405-
for dict_item in dict_items:
1405+
for dict_item in items:
1406+
if not isinstance(dict_item, dict):
1407+
raise TypeError("items must contain either only S7DataItem objects or only dictionaries")
14061408
area = dict_item["area"]
14071409
db_number = dict_item.get("db_number", 0)
14081410
start = dict_item["start"]

0 commit comments

Comments
 (0)