Skip to content

Commit 22ed511

Browse files
committed
Improved jinja2 generator handling of settings starting with digits
1 parent 114f42e commit 22ed511

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

tools/generate-settings-dataclasses-jinja.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import keyword
1717
from argparse import ArgumentParser
1818
from functools import cached_property
19+
from itertools import dropwhile
1920
from pathlib import Path
2021
from re import Pattern
2122
from re import compile as regex_compile
@@ -95,6 +96,10 @@
9596
'link-watchers': 'LinkWatchers',
9697
}
9798

99+
setting_name_replacement: dict[str, str] = {
100+
'x': 'eapol',
101+
}
102+
98103

99104
def must_replace_name(name: str) -> bool:
100105
return (keyword.iskeyword(name)
@@ -143,15 +148,32 @@ def __init__(self, name: str, description: str, name_upper: str,
143148
self.name = name
144149
self.description = description
145150
self.name_upper = name_upper
146-
self.python_class_name = name.capitalize() + 'Settings'
147151

148152
self.typing_imports = {'Optional'}
149153

150154
self.properties: List[NmSettingPropertyIntrospection] = []
151155

156+
@cached_property
157+
def python_class_name(self) -> str:
158+
159+
camel_case = ''.join(
160+
map(str.title, self.snake_name.split('_'))
161+
)
162+
163+
return camel_case + 'Settings'
164+
152165
@cached_property
153166
def snake_name(self) -> str:
154-
return self.name_upper.lower()
167+
underscore_name = self.name.replace('-', '_')
168+
169+
no_first_digits_name = ''.join(
170+
dropwhile(
171+
lambda s: not str.isalpha(s), underscore_name))
172+
173+
return setting_name_replacement.get(
174+
no_first_digits_name,
175+
no_first_digits_name,
176+
)
155177

156178
@cached_property
157179
def datatypes_imports(self) -> list[str]:

0 commit comments

Comments
 (0)