@@ -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+
11351140def 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