@@ -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