22
22
23
23
"""Generate builtin setting classes."""
24
24
25
+ import re
26
+
25
27
from ansys .fluent .core import FluentVersion , config
26
- from ansys .fluent .core .solver .flobject import CreatableNamedObjectMixin , NamedObject
28
+ from ansys .fluent .core .solver .flobject import (
29
+ CreatableNamedObjectMixin ,
30
+ NamedObject ,
31
+ _ChildNamedObjectAccessorMixin ,
32
+ )
27
33
from ansys .fluent .core .solver .settings_builtin_data import DATA
28
34
from ansys .fluent .core .utils .fluent_version import all_versions
29
35
@@ -41,6 +47,13 @@ def _get_settings_root(version: str):
41
47
return settings .root
42
48
43
49
50
+ def _convert_camel_case_to_snake_case (name : str ) -> str :
51
+ """Convert CamelCase to snake_case."""
52
+ # Replace uppercase letters with lowercase and prepend an underscore
53
+ name = re .sub (r"(?<!^)(?=[A-Z])" , "_" , name ).lower ()
54
+ return name
55
+
56
+
44
57
def _get_named_objects_in_path (root , path , kind ):
45
58
named_objects = []
46
59
cls = root
@@ -52,6 +65,8 @@ def _get_named_objects_in_path(root, path, kind):
52
65
cls = cls .child_object_type
53
66
final_type = ""
54
67
if kind == "NamedObject" :
68
+ if not issubclass (cls , (NamedObject , _ChildNamedObjectAccessorMixin )):
69
+ raise TypeError (f"{ cls .__name__ } is not NamedObject type." )
55
70
if issubclass (cls , CreatableNamedObjectMixin ):
56
71
final_type = "Creatable"
57
72
else :
@@ -72,8 +87,11 @@ def generate(version: str):
72
87
"from ansys.fluent.core.solver.flobject import SettingsBase\n \n \n "
73
88
)
74
89
f .write ("__all__ = [\n " )
75
- for name , _ in DATA .items ():
90
+ for name , ( kind , _ ) in DATA .items ():
76
91
f .write (f' "{ name } ",\n ' )
92
+ if kind == "Command" :
93
+ command_name = _convert_camel_case_to_snake_case (name )
94
+ f .write (f' "{ command_name } ",\n ' )
77
95
f .write ("]\n \n " )
78
96
for name , v in DATA .items ():
79
97
kind , path = v
@@ -86,35 +104,39 @@ def generate(version: str):
86
104
if kind == "NamedObject" :
87
105
kind = f"{ final_type } NamedObject"
88
106
f .write (f"class { name } (_{ kind } Setting):\n " )
89
- doc_kind = "command" if kind == "Command" else "setting"
107
+ doc_kind = "command object " if kind == "Command" else "setting"
90
108
f .write (f' """{ name } { doc_kind } ."""\n \n ' )
109
+ f .write (f' _db_name = "{ name } "\n \n ' )
110
+ f .write (" def __init__(self" )
111
+ for named_object in named_objects :
112
+ f .write (f", { named_object } : str" )
113
+ f .write (", settings_source: SettingsBase | Solver | None = None" )
114
+ if kind == "NonCreatableNamedObject" :
115
+ f .write (", name: str = None" )
116
+ elif kind == "CreatableNamedObject" :
117
+ f .write (", name: str = None, new_instance_name: str = None" )
118
+ f .write ("):\n " )
119
+ f .write (" super().__init__(settings_source=settings_source" )
120
+ if kind == "NonCreatableNamedObject" :
121
+ f .write (", name=name" )
122
+ elif kind == "CreatableNamedObject" :
123
+ f .write (", name=name, new_instance_name=new_instance_name" )
124
+ for named_object in named_objects :
125
+ f .write (f", { named_object } ={ named_object } " )
126
+ f .write (")\n \n " )
91
127
if kind == "Command" :
128
+ command_name = _convert_camel_case_to_snake_case (name )
129
+ f .write (f"class { command_name } (_{ kind } Setting):\n " )
130
+ f .write (f' """{ command_name } command."""\n \n ' )
131
+ f .write (f' _db_name = "{ name } "\n \n ' )
92
132
f .write (
93
133
" def __new__(cls, settings_source: SettingsBase | Solver | None = None, **kwargs):\n "
94
134
)
95
135
f .write (" instance = super().__new__(cls)\n " )
96
136
f .write (
97
137
" instance.__init__(settings_source=settings_source, **kwargs)\n "
98
138
)
99
- f .write (" return instance(**kwargs" )
100
- else :
101
- f .write (" def __init__(self" )
102
- for named_object in named_objects :
103
- f .write (f", { named_object } : str" )
104
- f .write (", settings_source: SettingsBase | Solver | None = None" )
105
- if kind == "NonCreatableNamedObject" :
106
- f .write (", name: str = None" )
107
- elif kind == "CreatableNamedObject" :
108
- f .write (", name: str = None, new_instance_name: str = None" )
109
- f .write ("):\n " )
110
- f .write (" super().__init__(settings_source=settings_source" )
111
- if kind == "NonCreatableNamedObject" :
112
- f .write (", name=name" )
113
- elif kind == "CreatableNamedObject" :
114
- f .write (", name=name, new_instance_name=new_instance_name" )
115
- for named_object in named_objects :
116
- f .write (f", { named_object } ={ named_object } " )
117
- f .write (")\n \n " )
139
+ f .write (" return instance(**kwargs)\n \n " )
118
140
119
141
with open (_PYI_FILE , "w" ) as f :
120
142
for version in FluentVersion :
0 commit comments