Skip to content

Commit 839171e

Browse files
authored
feat: Avoid attributes named "self" (#301)
* Avoid attributes named "self" * Fix invalid tuple initialization
1 parent aede9be commit 839171e

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

openapi_python_client/utils.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ def fix_keywords(value: str) -> str:
1515
return value
1616

1717

18+
RESERVED_WORDS = ("self",)
19+
20+
21+
def fix_reserved_words(value: str) -> str:
22+
if value in RESERVED_WORDS:
23+
return f"{value}_"
24+
return value
25+
26+
1827
def group_title(value: str) -> str:
1928
value = re.sub(r"([A-Z]{2,})([A-Z][a-z]|[ \-_]|$)", lambda m: m.group(1).title() + m.group(2), value.strip())
2029
value = re.sub(r"(^|[ _-])([A-Z])", lambda m: m.group(1) + m.group(2).lower(), value)
@@ -49,7 +58,7 @@ def to_valid_python_identifier(value: str) -> str:
4958
See:
5059
https://docs.python.org/3/reference/lexical_analysis.html#identifiers
5160
"""
52-
new_value = fix_keywords(sanitize(value))
61+
new_value = fix_reserved_words(fix_keywords(sanitize(value)))
5362

5463
if new_value.isidentifier():
5564
return new_value

tests/test_utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def test__fix_keywords():
3838
assert utils.fix_keywords("None") == "None_"
3939

4040

41+
def test__fix_reserved_words():
42+
assert utils.fix_reserved_words("self") == "self_"
43+
44+
4145
def test_to_valid_python_identifier():
4246
assert utils.to_valid_python_identifier("valid") == "valid"
4347
assert utils.to_valid_python_identifier("1") == "field_1"

0 commit comments

Comments
 (0)