Skip to content

Commit e0b1c26

Browse files
Change Category from dataclass to enum (#1227)
1 parent 8b3a404 commit e0b1c26

File tree

3 files changed

+179
-254
lines changed

3 files changed

+179
-254
lines changed

.gencode_hash.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ f9d90861e568b27445bef241f04cce64cc44731c95c8bd9e3f65cef79d42dab0 gencode/python
157157
9f27d0a731ced4b83c9769661fed2656814983394532aac9e2a97c71dd185e2a gencode/python/udmi/schema/bucket.py
158158
b4f4a394ce4049fafe267a146458d5b1725e2532788c5811b4b0b96f84715e31 gencode/python/udmi/schema/building_config_entity.py
159159
6289f299f33104a14be1c67762c8bcb494c008d34a2ff906ef3760164538fc82 gencode/python/udmi/schema/building_translation.py
160-
d874c058eea491c9fe723d0b1c7bae06a008984a049bcb31ab5fea8de71f71a9 gencode/python/udmi/schema/category.py
160+
9839ac82da64c8ad1b9ae144fa6be9d819a68f8e22336403321cad9af0d0033f gencode/python/udmi/schema/category.py
161161
e92d040fe84cc1bbc6e6b2d81a39dae156e1501e1c07a0b6cfc42e1599403e64 gencode/python/udmi/schema/commands_discovery.py
162162
8468bc35ad108e4618555cab711bdee700b64780e0d8c18f641c6a0ed21e2338 gencode/python/udmi/schema/commands_mapping.py
163163
9e15cea83255f018e6e85fdbf8051211561c10ea34caa926a21eb140de31d82c gencode/python/udmi/schema/common.py

bin/gencode_py_categories

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,41 @@ REGEX = re.compile(
1212

1313
def generate_header():
1414
return [
15-
"from dataclasses import dataclass",
16-
"from typing import ClassVar, Dict",
17-
"",
18-
"from ._base import DataModel",
19-
"from .level import Level",
20-
"",
21-
"@dataclass",
22-
"class Category(DataModel):",
23-
" \"\"\"",
24-
" This class is manually curated, auto-generated, and then copied into "
25-
"the directory.",
26-
" Look for the proper source and don't be fooled! Ultimately sourced "
27-
"from docs/specs/categories.md",
28-
" \"\"\"",
29-
" LEVEL: ClassVar[Dict[str, Level]] = {}",
30-
""
15+
"\"\"\"",
16+
"This module defines the Category enum, representing system event "
17+
"categories",
18+
"and their default logging levels.",
19+
"\"\"\"",
20+
"from enum import Enum",
21+
"from .level import Level",
22+
"",
23+
"class Category(Enum):",
24+
" \"\"\"",
25+
" This class is manually curated, auto-generated, and then copied "
26+
"into the directory.",
27+
" Look for the proper source and don't be fooled! Ultimately sourced"
28+
" from docs/specs/categories.md",
29+
" \"\"\"",
30+
""
31+
]
32+
33+
def generate_footer():
34+
return [
35+
"",
36+
" def __init__(self, value_str: str, default_level: Level):",
37+
" self._value_str = value_str",
38+
" self.default_level = default_level",
39+
"",
40+
" @property",
41+
" def value(self) -> str:",
42+
" return self._value_str",
43+
"",
44+
" @property",
45+
" def level(self) -> int:",
46+
" return self.default_level.value",
47+
"",
48+
" def __str__(self) -> str:",
49+
" return self._value_str"
3150
]
3251

3352
def process_file():
@@ -61,10 +80,10 @@ def process_file():
6180
const_name = full_path.upper().replace(".", "_")
6281

6382
entries.append({
64-
"const": const_name,
65-
"val": full_path,
66-
"level": level,
67-
"desc": description
83+
"const": const_name,
84+
"val": full_path,
85+
"level": level,
86+
"desc": description
6887
})
6988

7089
return entries
@@ -82,12 +101,12 @@ def write_output(entries):
82101
lvl = entry["level"]
83102
desc = entry["desc"]
84103

85-
f.write(f" # {desc}\n")
86-
f.write(f" {c_name}: ClassVar[str] = \"{c_val}\"\n")
87-
f.write(f" {c_name}_LEVEL: ClassVar[Level] = Level.{lvl}\n")
88-
f.write(f" {c_name}_VALUE: ClassVar[int] = Level.{lvl}.value\n")
89-
f.write(f" LEVEL[{c_name}] = Level.{lvl}\n")
90-
f.write("\n")
104+
f.write(f" # {desc}\n")
105+
# Enum member definition: NAME = ("value", Level.CONST)
106+
f.write(f" {c_name} = (\"{c_val}\", Level.{lvl})\n\n")
107+
108+
for line in generate_footer():
109+
f.write(line + "\n")
91110

92111
print(f"Generated {len(entries)} categories into {OUTPUT_FILE}")
93112

0 commit comments

Comments
 (0)