@@ -12,22 +12,41 @@ REGEX = re.compile(
1212
1313def 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
3352def 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