mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-07-05 15:10:49 +00:00
[python-nextgen] fix enum default value (#14846)
* fix enum value * add test for default value * update samples, better code format
This commit is contained in:
parent
27a4355c6c
commit
60e2d605c4
@ -125,7 +125,6 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Return the default value of the property
|
||||
*
|
||||
@ -716,5 +715,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.PYTHON; }
|
||||
public GeneratorLanguage generatorLanguage() {
|
||||
return GeneratorLanguage.PYTHON;
|
||||
}
|
||||
}
|
||||
|
@ -1129,15 +1129,17 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
|
||||
modelImports.add(model.parent);
|
||||
}
|
||||
|
||||
// set enum type in extensions
|
||||
// set enum type in extensions and update `name` in enumVars
|
||||
if (model.isEnum) {
|
||||
for (Map<String, Object> enumVars : (List<Map<String, Object>>) model.getAllowableValues().get("enumVars")) {
|
||||
if ((Boolean) enumVars.get("isString")) {
|
||||
model.vendorExtensions.put("x-py-enum-type", "str");
|
||||
model.vendorExtensions.putIfAbsent("x-py-enum-type", "str");
|
||||
// update `name`, e.g.
|
||||
enumVars.put("name", toEnumVariableName((String) enumVars.get("value"), "str"));
|
||||
} else {
|
||||
model.vendorExtensions.put("x-py-enum-type", "int");
|
||||
model.vendorExtensions.putIfAbsent("x-py-enum-type", "int");
|
||||
enumVars.put("name", toEnumVariableName((String) enumVars.get("value"), "int"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1321,6 +1323,14 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
|
||||
|
||||
@Override
|
||||
public String toEnumVarName(String name, String datatype) {
|
||||
if ("int".equals(datatype) || "float".equals(datatype)) {
|
||||
return name;
|
||||
} else {
|
||||
return "\'" + name + "\'";
|
||||
}
|
||||
}
|
||||
|
||||
public String toEnumVariableName(String name, String datatype) {
|
||||
if (name.length() == 0) {
|
||||
return "EMPTY";
|
||||
}
|
||||
@ -1366,7 +1376,7 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
|
||||
|
||||
@Override
|
||||
public String toEnumDefaultValue(String value, String datatype) {
|
||||
return "self::" + datatype + "_" + value;
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1405,4 +1415,10 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
|
||||
public void setDateFormat(String dateFormat) {
|
||||
this.dateFormat = dateFormat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelsMap postProcessModels(ModelsMap objs) {
|
||||
// process enum in models
|
||||
return postProcessModelsEnum(objs);
|
||||
}
|
||||
}
|
||||
|
@ -1630,6 +1630,14 @@ components:
|
||||
- UPPER
|
||||
- lower
|
||||
- ''
|
||||
enum_integer_default:
|
||||
type: integer
|
||||
format: int32
|
||||
enum:
|
||||
- 1
|
||||
- 5
|
||||
- 14
|
||||
default: 5
|
||||
enum_integer:
|
||||
type: integer
|
||||
format: int32
|
||||
|
@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**enum_string** | **str** | | [optional]
|
||||
**enum_string_required** | **str** | |
|
||||
**enum_integer_default** | **int** | | [optional] [default to 5]
|
||||
**enum_integer** | **int** | | [optional]
|
||||
**enum_number** | **float** | | [optional]
|
||||
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||
|
@ -32,13 +32,14 @@ class EnumTest(BaseModel):
|
||||
"""
|
||||
enum_string: Optional[StrictStr] = None
|
||||
enum_string_required: StrictStr = ...
|
||||
enum_integer_default: Optional[StrictInt] = 5
|
||||
enum_integer: Optional[StrictInt] = None
|
||||
enum_number: Optional[float] = None
|
||||
outer_enum: Optional[OuterEnum] = Field(None, alias="outerEnum")
|
||||
outer_enum_integer: Optional[OuterEnumInteger] = Field(None, alias="outerEnumInteger")
|
||||
outer_enum_default_value: Optional[OuterEnumDefaultValue] = Field(None, alias="outerEnumDefaultValue")
|
||||
outer_enum_integer_default_value: Optional[OuterEnumIntegerDefaultValue] = Field(None, alias="outerEnumIntegerDefaultValue")
|
||||
__properties = ["enum_string", "enum_string_required", "enum_integer", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue"]
|
||||
__properties = ["enum_string", "enum_string_required", "enum_integer_default", "enum_integer", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue"]
|
||||
|
||||
@validator('enum_string')
|
||||
def enum_string_validate_enum(cls, v):
|
||||
@ -55,6 +56,15 @@ class EnumTest(BaseModel):
|
||||
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
||||
return v
|
||||
|
||||
@validator('enum_integer_default')
|
||||
def enum_integer_default_validate_enum(cls, v):
|
||||
if v is None:
|
||||
return v
|
||||
|
||||
if v not in (1, 5, 14):
|
||||
raise ValueError("must validate the enum values (1, 5, 14)")
|
||||
return v
|
||||
|
||||
@validator('enum_integer')
|
||||
def enum_integer_validate_enum(cls, v):
|
||||
if v is None:
|
||||
@ -114,6 +124,7 @@ class EnumTest(BaseModel):
|
||||
_obj = EnumTest.parse_obj({
|
||||
"enum_string": obj.get("enum_string"),
|
||||
"enum_string_required": obj.get("enum_string_required"),
|
||||
"enum_integer_default": obj.get("enum_integer_default") if obj.get("enum_integer_default") is not None else 5,
|
||||
"enum_integer": obj.get("enum_integer"),
|
||||
"enum_number": obj.get("enum_number"),
|
||||
"outer_enum": obj.get("outerEnum"),
|
||||
|
@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**enum_string** | **str** | | [optional]
|
||||
**enum_string_required** | **str** | |
|
||||
**enum_integer_default** | **int** | | [optional] [default to 5]
|
||||
**enum_integer** | **int** | | [optional]
|
||||
**enum_number** | **float** | | [optional]
|
||||
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||
|
@ -32,6 +32,7 @@ class EnumTest(BaseModel):
|
||||
"""
|
||||
enum_string: Optional[StrictStr] = None
|
||||
enum_string_required: StrictStr = ...
|
||||
enum_integer_default: Optional[StrictInt] = 5
|
||||
enum_integer: Optional[StrictInt] = None
|
||||
enum_number: Optional[StrictFloat] = None
|
||||
outer_enum: Optional[OuterEnum] = Field(None, alias="outerEnum")
|
||||
@ -39,7 +40,7 @@ class EnumTest(BaseModel):
|
||||
outer_enum_default_value: Optional[OuterEnumDefaultValue] = Field(None, alias="outerEnumDefaultValue")
|
||||
outer_enum_integer_default_value: Optional[OuterEnumIntegerDefaultValue] = Field(None, alias="outerEnumIntegerDefaultValue")
|
||||
additional_properties: Dict[str, Any] = {}
|
||||
__properties = ["enum_string", "enum_string_required", "enum_integer", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue"]
|
||||
__properties = ["enum_string", "enum_string_required", "enum_integer_default", "enum_integer", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue"]
|
||||
|
||||
@validator('enum_string')
|
||||
def enum_string_validate_enum(cls, v):
|
||||
@ -56,6 +57,15 @@ class EnumTest(BaseModel):
|
||||
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
||||
return v
|
||||
|
||||
@validator('enum_integer_default')
|
||||
def enum_integer_default_validate_enum(cls, v):
|
||||
if v is None:
|
||||
return v
|
||||
|
||||
if v not in (1, 5, 14):
|
||||
raise ValueError("must validate the enum values (1, 5, 14)")
|
||||
return v
|
||||
|
||||
@validator('enum_integer')
|
||||
def enum_integer_validate_enum(cls, v):
|
||||
if v is None:
|
||||
@ -121,6 +131,7 @@ class EnumTest(BaseModel):
|
||||
_obj = EnumTest.parse_obj({
|
||||
"enum_string": obj.get("enum_string"),
|
||||
"enum_string_required": obj.get("enum_string_required"),
|
||||
"enum_integer_default": obj.get("enum_integer_default") if obj.get("enum_integer_default") is not None else 5,
|
||||
"enum_integer": obj.get("enum_integer"),
|
||||
"enum_number": obj.get("enum_number"),
|
||||
"outer_enum": obj.get("outerEnum"),
|
||||
|
@ -382,3 +382,8 @@ class ModelTests(unittest.TestCase):
|
||||
## Serializing json
|
||||
#json_object = json.dumps(dictionary)
|
||||
#self.assertEqual(json_object, "")
|
||||
|
||||
def test_inline_enum_default(self):
|
||||
enum_test = petstore_api.EnumTest(enum_string_required="lower")
|
||||
self.assertEqual(enum_test.enum_integer_default, 5)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user