Skip to content

Commit 1895014

Browse files
habara-kYang-33
andauthored
Fix other overriding imports (#703)
This wil be merged after #702. ## Changes As mentioned in #702 (comment), `putIfAbsent` does not overwrite values, so it is meaningless. This change is intended to correct all instances where it is used, although it currently does not affect the generated codes. --------- Co-authored-by: Yuta Kasai <[email protected]>
1 parent 93f7447 commit 1895014

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

generator/src/main/java/line/bot/generator/PythonNextgenCustomClientGenerator.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -1246,6 +1246,9 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) {
12461246
pydanticImports.add("validator");
12471247
} else { // typical model
12481248
codegenProperties = model.vars;
1249+
if (model.getDiscriminator() != null && model.getDiscriminator().getMappedModels() != null) {
1250+
typingImports.add("Union");
1251+
}
12491252
}
12501253

12511254
//loop through properties/schemas to set up typing, pydantic
@@ -1323,39 +1326,37 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) {
13231326
}
13241327
}
13251328

1326-
if (!model.isEnum) {
1327-
pydanticImports.add("BaseModel");
1328-
}
1329-
13301329
// add parent model to import
13311330
if (!StringUtils.isEmpty(model.parent)) {
13321331
modelImports.add(model.parent);
13331332
// Extention for discriminator
13341333
modelImports.addAll(model.imports);
13351334

13361335
String mappedTypeName = mappingName(model.name, model.parentModel.getDiscriminator());
1337-
model.vendorExtensions.putIfAbsent("x-py-type-name", mappedTypeName);
1336+
model.vendorExtensions.put("x-py-type-name", mappedTypeName);
1337+
} else if (!model.isEnum) {
1338+
pydanticImports.add("BaseModel");
13381339
}
13391340

13401341
// set enum type in extensions and update `name` in enumVars
13411342
if (model.isEnum) {
13421343
for (Map<String, Object> enumVars : (List<Map<String, Object>>) model.getAllowableValues().get("enumVars")) {
13431344
if ((Boolean) enumVars.get("isString")) {
1344-
model.vendorExtensions.putIfAbsent("x-py-enum-type", "str");
1345+
model.vendorExtensions.put("x-py-enum-type", "str");
13451346
// update `name`, e.g.
13461347
enumVars.put("name", toEnumVariableName((String) enumVars.get("value"), "str"));
13471348
} else {
1348-
model.vendorExtensions.putIfAbsent("x-py-enum-type", "int");
1349+
model.vendorExtensions.put("x-py-enum-type", "int");
13491350
enumVars.put("name", toEnumVariableName((String) enumVars.get("value"), "int"));
13501351
}
13511352
}
13521353
}
13531354

13541355
// set the extensions if the key is absent
1355-
model.getVendorExtensions().putIfAbsent("x-py-typing-imports", typingImports);
1356-
model.getVendorExtensions().putIfAbsent("x-py-pydantic-imports", pydanticImports);
1357-
model.getVendorExtensions().putIfAbsent("x-py-datetime-imports", datetimeImports);
1358-
model.getVendorExtensions().putIfAbsent("x-py-readonly", readOnlyFields);
1356+
model.getVendorExtensions().put("x-py-typing-imports", typingImports);
1357+
model.getVendorExtensions().put("x-py-pydantic-imports", pydanticImports);
1358+
model.getVendorExtensions().put("x-py-datetime-imports", datetimeImports);
1359+
model.getVendorExtensions().put("x-py-readonly", readOnlyFields);
13591360

13601361
// import models one by one
13611362
if (!modelImports.isEmpty()) {

0 commit comments

Comments
 (0)