Skip to content

Commit b003214

Browse files
committed
Fix property fallback
1 parent 414a621 commit b003214

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

meshtastic/__main__.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,11 @@ def _printSetting(config_type, uni_name, pref_value, repeated):
158158
config_values = getattr(config, config_type.name)
159159
if not wholeField:
160160
pref_value = getattr(config_values, pref.name)
161-
repeated = getattr(pref, "is_repeated", pref.label == pref.LABEL_REPEATED)
161+
repeated = _is_repeated_field(pref)
162162
_printSetting(config_type, uni_name, pref_value, repeated)
163163
else:
164164
for field in config_values.ListFields():
165-
fd = field[0]
166-
repeated = getattr(fd, "is_repeated", fd.label == fd.LABEL_REPEATED)
165+
repeated = _is_repeated_field(field[0])
167166
_printSetting(config_type, field[0].name, field[1], repeated)
168167
else:
169168
# Always show whole field for remote node
@@ -254,7 +253,7 @@ def setPref(config, comp_name, raw_val) -> bool:
254253
return False
255254

256255
# repeating fields need to be handled with append, not setattr
257-
if not getattr(pref, "is_repeated", pref.label == pref.LABEL_REPEATED):
256+
if not _is_repeated_field(pref):
258257
try:
259258
if config_type.message_type is not None:
260259
config_values = getattr(config_part, config_type.name)
@@ -1132,6 +1131,12 @@ def subscribe() -> None:
11321131

11331132
# pub.subscribe(onNode, "meshtastic.node")
11341133

1134+
def _is_repeated_field(field_desc) -> bool:
1135+
"""Return True if the protobuf field is repeated. Protobuf 6:3.10 and later us an is_repeated property"""
1136+
if hasattr(field_desc, "is_repeated"):
1137+
return bool(field_desc.is_repeated)
1138+
return field_desc.label == field_desc.LABEL_REPEATED
1139+
11351140
def set_missing_flags_false(config_dict: dict, true_defaults: set[tuple[str, str]]) -> None:
11361141
"""Ensure that missing default=True keys are present in the config_dict and set to False."""
11371142
for path in true_defaults:

0 commit comments

Comments
 (0)