Skip to content

Commit 500bdbc

Browse files
committed
fix: ensure module names are unique for models
See: openapi-generators#1163
1 parent 40d63f9 commit 500bdbc

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

openapi_python_client/parser/properties/schemas.py

+20
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,24 @@ def parse_reference_path(ref_path_raw: str) -> Union[ReferencePath, ParseError]:
4646
return cast(ReferencePath, parsed.fragment)
4747

4848

49+
EXISTING_MODULE_NAMES: set[PythonIdentifier] = set()
50+
51+
def _unique_module_name(candidate_name: PythonIdentifier) -> PythonIdentifier:
52+
if candidate_name not in EXISTING_MODULE_NAMES:
53+
EXISTING_MODULE_NAMES.add(candidate_name)
54+
return candidate_name
55+
56+
counter = 0
57+
while True:
58+
new_name = f"{candidate_name}{counter}"
59+
60+
if new_name not in EXISTING_MODULE_NAMES:
61+
EXISTING_MODULE_NAMES.add(new_name)
62+
return new_name
63+
64+
counter += 1
65+
66+
4967
@define
5068
class Class:
5169
"""Represents Python class which will be generated from an OpenAPI schema"""
@@ -67,7 +85,9 @@ def from_string(*, string: str, config: Config) -> "Class":
6785
module_name = override.module_name
6886
else:
6987
module_name = class_name
88+
7089
module_name = PythonIdentifier(module_name, config.field_prefix)
90+
module_name = _unique_module_name(module_name)
7191

7292
return Class(name=class_name, module_name=module_name)
7393

0 commit comments

Comments
 (0)