fix duplicate enum keys

This commit is contained in:
James Woglom
2026-03-15 13:53:03 -04:00
parent 93b0901aae
commit 8381e50fe6
2 changed files with 32 additions and 6 deletions
+3 -3
View File
@@ -5286,9 +5286,9 @@ class LidCgmDataFsl3(BaseEvent):
ValidAlgstateAlgstateIs100 = 2**7
EgvWasSuccessfullyAddedToCgmSubsystemArrayE = 2**8
OmrReadingType = 2**9
SensorTypeSeeCgmtxtypeEnum = 2**11
SensorTypeSeeCgmtxtypeEnum = 2**12
SensorTypeSeeCgmtxtypeEnum = 2**13
SensorTypeSeeCgmtxtypeEnum_11 = 2**11
SensorTypeSeeCgmtxtypeEnum_12 = 2**12
SensorTypeSeeCgmtxtypeEnum_13 = 2**13
@property
def egvInfoBitmask(self):
+29 -3
View File
@@ -39,15 +39,40 @@ def enumNameFormat(text):
return f'{t[0].upper()}{t[1:]}'
def uniqueMemberNames(tx):
names = {}
for key, value in tx.items():
name = enumNameFormat(value)
if not name:
continue
names.setdefault(name, []).append(str(key))
unique_names = {}
for key, value in tx.items():
name = enumNameFormat(value)
if not name:
continue
if len(names[name]) == 1:
unique_names[key] = name
continue
unique_names[key] = f'{name}_{key}'
return unique_names
def transform_enum(event_def, name, name_fmt, field, tx):
out = []
member_names = uniqueMemberNames(tx)
lines_for_out = json.dumps(tx, indent=4).splitlines()
out += [f'{enumNameFormat(name_fmt)}Map = {lines_for_out[0]}']
out += lines_for_out[1:]
out += ['']
out += [f'class {enumNameFormat(name_fmt)}Enum(Enum):']
out += [
f' {enumNameFormat(v)} = {k}' for k, v in tx.items() if enumNameFormat(v)
f' {member_names[k]} = {k}' for k, v in tx.items() if k in member_names
]
out += ['']
out += [
@@ -77,13 +102,14 @@ def transform_dictionary(event_def, name, name_fmt, field, tx):
def transform_bitmask(event_def, name, name_fmt, field, tx):
out = []
member_names = uniqueMemberNames(tx)
lines_for_out = json.dumps(tx, indent=4).splitlines()
out += [f'{enumNameFormat(name_fmt)}Map = {lines_for_out[0]}']
out += lines_for_out[1:]
out += ['']
out += [f'class {enumNameFormat(name_fmt)}Bitmask(IntFlag):',]
out += [
f' {enumNameFormat(v)} = 2**{k}' for k, v in tx.items() if enumNameFormat(v)
f' {member_names[k]} = 2**{k}' for k, v in tx.items() if k in member_names
]
out += ['']
out += [
@@ -129,4 +155,4 @@ TRANSFORMS = {
'bitmask': transform_bitmask,
'ratio': transform_ratio,
'battery_charge_percent': transform_battery_charge_percent
}
}