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
|
* Return the default value of the property
|
||||||
*
|
*
|
||||||
@ -716,5 +715,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
modelImports.add(model.parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set enum type in extensions
|
// set enum type in extensions and update `name` in enumVars
|
||||||
if (model.isEnum) {
|
if (model.isEnum) {
|
||||||
for (Map<String, Object> enumVars : (List<Map<String, Object>>) model.getAllowableValues().get("enumVars")) {
|
for (Map<String, Object> enumVars : (List<Map<String, Object>>) model.getAllowableValues().get("enumVars")) {
|
||||||
if ((Boolean) enumVars.get("isString")) {
|
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 {
|
} 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
|
@Override
|
||||||
public String toEnumVarName(String name, String datatype) {
|
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) {
|
if (name.length() == 0) {
|
||||||
return "EMPTY";
|
return "EMPTY";
|
||||||
}
|
}
|
||||||
@ -1366,7 +1376,7 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumDefaultValue(String value, String datatype) {
|
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) {
|
public void setDateFormat(String dateFormat) {
|
||||||
this.dateFormat = dateFormat;
|
this.dateFormat = dateFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ModelsMap postProcessModels(ModelsMap objs) {
|
||||||
|
// process enum in models
|
||||||
|
return postProcessModelsEnum(objs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1630,6 +1630,14 @@ components:
|
|||||||
- UPPER
|
- UPPER
|
||||||
- lower
|
- lower
|
||||||
- ''
|
- ''
|
||||||
|
enum_integer_default:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 5
|
||||||
|
- 14
|
||||||
|
default: 5
|
||||||
enum_integer:
|
enum_integer:
|
||||||
type: integer
|
type: integer
|
||||||
format: int32
|
format: int32
|
||||||
|
@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
|||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**enum_string** | **str** | | [optional]
|
**enum_string** | **str** | | [optional]
|
||||||
**enum_string_required** | **str** | |
|
**enum_string_required** | **str** | |
|
||||||
|
**enum_integer_default** | **int** | | [optional] [default to 5]
|
||||||
**enum_integer** | **int** | | [optional]
|
**enum_integer** | **int** | | [optional]
|
||||||
**enum_number** | **float** | | [optional]
|
**enum_number** | **float** | | [optional]
|
||||||
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||||
|
@ -32,13 +32,14 @@ class EnumTest(BaseModel):
|
|||||||
"""
|
"""
|
||||||
enum_string: Optional[StrictStr] = None
|
enum_string: Optional[StrictStr] = None
|
||||||
enum_string_required: StrictStr = ...
|
enum_string_required: StrictStr = ...
|
||||||
|
enum_integer_default: Optional[StrictInt] = 5
|
||||||
enum_integer: Optional[StrictInt] = None
|
enum_integer: Optional[StrictInt] = None
|
||||||
enum_number: Optional[float] = None
|
enum_number: Optional[float] = None
|
||||||
outer_enum: Optional[OuterEnum] = Field(None, alias="outerEnum")
|
outer_enum: Optional[OuterEnum] = Field(None, alias="outerEnum")
|
||||||
outer_enum_integer: Optional[OuterEnumInteger] = Field(None, alias="outerEnumInteger")
|
outer_enum_integer: Optional[OuterEnumInteger] = Field(None, alias="outerEnumInteger")
|
||||||
outer_enum_default_value: Optional[OuterEnumDefaultValue] = Field(None, alias="outerEnumDefaultValue")
|
outer_enum_default_value: Optional[OuterEnumDefaultValue] = Field(None, alias="outerEnumDefaultValue")
|
||||||
outer_enum_integer_default_value: Optional[OuterEnumIntegerDefaultValue] = Field(None, alias="outerEnumIntegerDefaultValue")
|
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')
|
@validator('enum_string')
|
||||||
def enum_string_validate_enum(cls, v):
|
def enum_string_validate_enum(cls, v):
|
||||||
@ -55,6 +56,15 @@ class EnumTest(BaseModel):
|
|||||||
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
||||||
return v
|
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')
|
@validator('enum_integer')
|
||||||
def enum_integer_validate_enum(cls, v):
|
def enum_integer_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
@ -114,6 +124,7 @@ class EnumTest(BaseModel):
|
|||||||
_obj = EnumTest.parse_obj({
|
_obj = EnumTest.parse_obj({
|
||||||
"enum_string": obj.get("enum_string"),
|
"enum_string": obj.get("enum_string"),
|
||||||
"enum_string_required": obj.get("enum_string_required"),
|
"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_integer": obj.get("enum_integer"),
|
||||||
"enum_number": obj.get("enum_number"),
|
"enum_number": obj.get("enum_number"),
|
||||||
"outer_enum": obj.get("outerEnum"),
|
"outer_enum": obj.get("outerEnum"),
|
||||||
|
@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
|||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**enum_string** | **str** | | [optional]
|
**enum_string** | **str** | | [optional]
|
||||||
**enum_string_required** | **str** | |
|
**enum_string_required** | **str** | |
|
||||||
|
**enum_integer_default** | **int** | | [optional] [default to 5]
|
||||||
**enum_integer** | **int** | | [optional]
|
**enum_integer** | **int** | | [optional]
|
||||||
**enum_number** | **float** | | [optional]
|
**enum_number** | **float** | | [optional]
|
||||||
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||||
|
@ -32,6 +32,7 @@ class EnumTest(BaseModel):
|
|||||||
"""
|
"""
|
||||||
enum_string: Optional[StrictStr] = None
|
enum_string: Optional[StrictStr] = None
|
||||||
enum_string_required: StrictStr = ...
|
enum_string_required: StrictStr = ...
|
||||||
|
enum_integer_default: Optional[StrictInt] = 5
|
||||||
enum_integer: Optional[StrictInt] = None
|
enum_integer: Optional[StrictInt] = None
|
||||||
enum_number: Optional[StrictFloat] = None
|
enum_number: Optional[StrictFloat] = None
|
||||||
outer_enum: Optional[OuterEnum] = Field(None, alias="outerEnum")
|
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_default_value: Optional[OuterEnumDefaultValue] = Field(None, alias="outerEnumDefaultValue")
|
||||||
outer_enum_integer_default_value: Optional[OuterEnumIntegerDefaultValue] = Field(None, alias="outerEnumIntegerDefaultValue")
|
outer_enum_integer_default_value: Optional[OuterEnumIntegerDefaultValue] = Field(None, alias="outerEnumIntegerDefaultValue")
|
||||||
additional_properties: Dict[str, Any] = {}
|
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')
|
@validator('enum_string')
|
||||||
def enum_string_validate_enum(cls, v):
|
def enum_string_validate_enum(cls, v):
|
||||||
@ -56,6 +57,15 @@ class EnumTest(BaseModel):
|
|||||||
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
raise ValueError("must validate the enum values ('UPPER', 'lower', '')")
|
||||||
return v
|
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')
|
@validator('enum_integer')
|
||||||
def enum_integer_validate_enum(cls, v):
|
def enum_integer_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
@ -121,6 +131,7 @@ class EnumTest(BaseModel):
|
|||||||
_obj = EnumTest.parse_obj({
|
_obj = EnumTest.parse_obj({
|
||||||
"enum_string": obj.get("enum_string"),
|
"enum_string": obj.get("enum_string"),
|
||||||
"enum_string_required": obj.get("enum_string_required"),
|
"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_integer": obj.get("enum_integer"),
|
||||||
"enum_number": obj.get("enum_number"),
|
"enum_number": obj.get("enum_number"),
|
||||||
"outer_enum": obj.get("outerEnum"),
|
"outer_enum": obj.get("outerEnum"),
|
||||||
|
@ -382,3 +382,8 @@ class ModelTests(unittest.TestCase):
|
|||||||
## Serializing json
|
## Serializing json
|
||||||
#json_object = json.dumps(dictionary)
|
#json_object = json.dumps(dictionary)
|
||||||
#self.assertEqual(json_object, "")
|
#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