use Field(...) for required properties in python-nextgen (#15290)

This commit is contained in:
William Cheng 2023-04-24 16:07:09 +08:00 committed by GitHub
parent 98c2794b5d
commit 52417f0597
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 33 additions and 27 deletions

View File

@ -1289,6 +1289,12 @@ public class PythonNextgenClientCodegen extends AbstractPythonCodegen implements
fieldCustomization = String.format(Locale.ROOT, "Field(%s)", StringUtils.join(fields, ", ")); fieldCustomization = String.format(Locale.ROOT, "Field(%s)", StringUtils.join(fields, ", "));
} }
if ("...".equals(fieldCustomization)) {
// use Field() to avoid pylint warnings
pydanticImports.add("Field");
fieldCustomization = "Field(...)";
}
cp.vendorExtensions.put("x-py-typing", typing + " = " + fieldCustomization); cp.vendorExtensions.put("x-py-typing", typing + " = " + fieldCustomization);
// setup x-py-name for each oneOf/anyOf schema // setup x-py-name for each oneOf/anyOf schema

View File

@ -30,7 +30,7 @@ class Pet(BaseModel):
Pet Pet
""" """
id: Optional[StrictInt] = None id: Optional[StrictInt] = None
name: StrictStr = ... name: StrictStr = Field(...)
category: Optional[Category] = None category: Optional[Category] = None
photo_urls: conlist(StrictStr) = Field(..., alias="photoUrls") photo_urls: conlist(StrictStr) = Field(..., alias="photoUrls")
tags: Optional[conlist(Tag)] = None tags: Optional[conlist(Tag)] = None

View File

@ -27,7 +27,7 @@ class BasquePig(BaseModel):
BasquePig BasquePig
""" """
class_name: StrictStr = Field(..., alias="className") class_name: StrictStr = Field(..., alias="className")
color: StrictStr = ... color: StrictStr = Field(...)
__properties = ["className", "color"] __properties = ["className", "color"]
class Config: class Config:

View File

@ -20,14 +20,14 @@ import json
from typing import Optional from typing import Optional
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, Field, StrictInt, StrictStr
class Category(BaseModel): class Category(BaseModel):
""" """
Category Category
""" """
id: Optional[StrictInt] = None id: Optional[StrictInt] = None
name: StrictStr = ... name: StrictStr = Field(...)
__properties = ["id", "name"] __properties = ["id", "name"]
class Config: class Config:

View File

@ -27,7 +27,7 @@ class DanishPig(BaseModel):
DanishPig DanishPig
""" """
class_name: StrictStr = Field(..., alias="className") class_name: StrictStr = Field(..., alias="className")
size: StrictInt = ... size: StrictInt = Field(...)
__properties = ["className", "size"] __properties = ["className", "size"]
class Config: class Config:

View File

@ -31,7 +31,7 @@ class EnumTest(BaseModel):
EnumTest EnumTest
""" """
enum_string: Optional[StrictStr] = None enum_string: Optional[StrictStr] = None
enum_string_required: StrictStr = ... enum_string_required: StrictStr = Field(...)
enum_integer_default: Optional[StrictInt] = 5 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

View File

@ -29,7 +29,7 @@ class FormatTest(BaseModel):
integer: Optional[conint(strict=True, le=100, ge=10)] = None integer: Optional[conint(strict=True, le=100, ge=10)] = None
int32: Optional[conint(strict=True, le=200, ge=20)] = None int32: Optional[conint(strict=True, le=200, ge=20)] = None
int64: Optional[StrictInt] = None int64: Optional[StrictInt] = None
number: confloat(le=543.2, ge=32.1) = ... number: confloat(le=543.2, ge=32.1) = Field(...)
float: Optional[confloat(le=987.6, ge=54.3)] = None float: Optional[confloat(le=987.6, ge=54.3)] = None
double: Optional[confloat(le=123.4, ge=67.8)] = None double: Optional[confloat(le=123.4, ge=67.8)] = None
decimal: Optional[condecimal()] = None decimal: Optional[condecimal()] = None
@ -40,7 +40,7 @@ class FormatTest(BaseModel):
var_date: date = Field(..., alias="date") var_date: date = Field(..., alias="date")
date_time: Optional[datetime] = Field(None, alias="dateTime") date_time: Optional[datetime] = Field(None, alias="dateTime")
uuid: Optional[StrictStr] = None uuid: Optional[StrictStr] = None
password: constr(strict=True, max_length=64, min_length=10) = ... password: constr(strict=True, max_length=64, min_length=10) = Field(...)
pattern_with_digits: Optional[constr(strict=True)] = Field(None, description="A string that is a 10 digit number. Can have leading zeros.") pattern_with_digits: Optional[constr(strict=True)] = Field(None, description="A string that is a 10 digit number. Can have leading zeros.")
pattern_with_digits_and_delimiter: Optional[constr(strict=True)] = Field(None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.") pattern_with_digits_and_delimiter: Optional[constr(strict=True)] = Field(None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.")
__properties = ["integer", "int32", "int64", "number", "float", "double", "decimal", "string", "string_with_double_quote_pattern", "byte", "binary", "date", "dateTime", "uuid", "password", "pattern_with_digits", "pattern_with_digits_and_delimiter"] __properties = ["integer", "int32", "int64", "number", "float", "double", "decimal", "string", "string_with_double_quote_pattern", "byte", "binary", "date", "dateTime", "uuid", "password", "pattern_with_digits", "pattern_with_digits_and_delimiter"]

View File

@ -26,7 +26,7 @@ class Name(BaseModel):
""" """
Model for testing model name same as property name Model for testing model name same as property name
""" """
name: StrictInt = ... name: StrictInt = Field(...)
snake_case: Optional[StrictInt] = None snake_case: Optional[StrictInt] = None
var_property: Optional[StrictStr] = Field(None, alias="property") var_property: Optional[StrictStr] = Field(None, alias="property")
var_123_number: Optional[StrictInt] = Field(None, alias="123Number") var_123_number: Optional[StrictInt] = Field(None, alias="123Number")

View File

@ -20,13 +20,13 @@ import json
from datetime import date, datetime from datetime import date, datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
from pydantic import BaseModel, StrictBool, StrictInt, StrictStr, conlist from pydantic import BaseModel, Field, StrictBool, StrictInt, StrictStr, conlist
class NullableClass(BaseModel): class NullableClass(BaseModel):
""" """
NullableClass NullableClass
""" """
required_integer_prop: Optional[StrictInt] = ... required_integer_prop: Optional[StrictInt] = Field(...)
integer_prop: Optional[StrictInt] = None integer_prop: Optional[StrictInt] = None
number_prop: Optional[float] = None number_prop: Optional[float] = None
boolean_prop: Optional[StrictBool] = None boolean_prop: Optional[StrictBool] = None

View File

@ -20,7 +20,7 @@ import json
from typing import Optional from typing import Optional
from pydantic import BaseModel from pydantic import BaseModel, Field
from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.outer_enum import OuterEnum
from petstore_api.models.outer_enum_integer import OuterEnumInteger from petstore_api.models.outer_enum_integer import OuterEnumInteger
@ -29,7 +29,7 @@ class OuterObjectWithEnumProperty(BaseModel):
OuterObjectWithEnumProperty OuterObjectWithEnumProperty
""" """
str_value: Optional[OuterEnum] = None str_value: Optional[OuterEnum] = None
value: OuterEnumInteger = ... value: OuterEnumInteger = Field(...)
__properties = ["str_value", "value"] __properties = ["str_value", "value"]
class Config: class Config:

View File

@ -30,7 +30,7 @@ class Pet(BaseModel):
""" """
id: Optional[StrictInt] = None id: Optional[StrictInt] = None
category: Optional[Category] = None category: Optional[Category] = None
name: StrictStr = ... name: StrictStr = Field(...)
photo_urls: conlist(StrictStr, min_items=0, unique_items=True) = Field(..., alias="photoUrls") photo_urls: conlist(StrictStr, min_items=0, unique_items=True) = Field(..., alias="photoUrls")
tags: Optional[conlist(Tag)] = None tags: Optional[conlist(Tag)] = None
status: Optional[StrictStr] = Field(None, description="pet status in the store") status: Optional[StrictStr] = Field(None, description="pet status in the store")

View File

@ -27,7 +27,7 @@ class BasquePig(BaseModel):
BasquePig BasquePig
""" """
class_name: StrictStr = Field(..., alias="className") class_name: StrictStr = Field(..., alias="className")
color: StrictStr = ... color: StrictStr = Field(...)
additional_properties: Dict[str, Any] = {} additional_properties: Dict[str, Any] = {}
__properties = ["className", "color"] __properties = ["className", "color"]

View File

@ -20,14 +20,14 @@ import json
from typing import Optional from typing import Optional
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, Field, StrictInt, StrictStr
class Category(BaseModel): class Category(BaseModel):
""" """
Category Category
""" """
id: Optional[StrictInt] = None id: Optional[StrictInt] = None
name: StrictStr = ... name: StrictStr = Field(...)
additional_properties: Dict[str, Any] = {} additional_properties: Dict[str, Any] = {}
__properties = ["id", "name"] __properties = ["id", "name"]

View File

@ -27,7 +27,7 @@ class DanishPig(BaseModel):
DanishPig DanishPig
""" """
class_name: StrictStr = Field(..., alias="className") class_name: StrictStr = Field(..., alias="className")
size: StrictInt = ... size: StrictInt = Field(...)
additional_properties: Dict[str, Any] = {} additional_properties: Dict[str, Any] = {}
__properties = ["className", "size"] __properties = ["className", "size"]

View File

@ -31,7 +31,7 @@ class EnumTest(BaseModel):
EnumTest EnumTest
""" """
enum_string: Optional[StrictStr] = None enum_string: Optional[StrictStr] = None
enum_string_required: StrictStr = ... enum_string_required: StrictStr = Field(...)
enum_integer_default: Optional[StrictInt] = 5 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

View File

@ -29,7 +29,7 @@ class FormatTest(BaseModel):
integer: Optional[conint(strict=True, le=100, ge=10)] = None integer: Optional[conint(strict=True, le=100, ge=10)] = None
int32: Optional[conint(strict=True, le=200, ge=20)] = None int32: Optional[conint(strict=True, le=200, ge=20)] = None
int64: Optional[StrictInt] = None int64: Optional[StrictInt] = None
number: confloat(le=543.2, ge=32.1, strict=True) = ... number: confloat(le=543.2, ge=32.1, strict=True) = Field(...)
float: Optional[confloat(le=987.6, ge=54.3, strict=True)] = None float: Optional[confloat(le=987.6, ge=54.3, strict=True)] = None
double: Optional[confloat(le=123.4, ge=67.8, strict=True)] = None double: Optional[confloat(le=123.4, ge=67.8, strict=True)] = None
decimal: Optional[condecimal()] = None decimal: Optional[condecimal()] = None
@ -40,7 +40,7 @@ class FormatTest(BaseModel):
var_date: date = Field(..., alias="date") var_date: date = Field(..., alias="date")
date_time: Optional[datetime] = Field(None, alias="dateTime") date_time: Optional[datetime] = Field(None, alias="dateTime")
uuid: Optional[StrictStr] = None uuid: Optional[StrictStr] = None
password: constr(strict=True, max_length=64, min_length=10) = ... password: constr(strict=True, max_length=64, min_length=10) = Field(...)
pattern_with_digits: Optional[constr(strict=True)] = Field(None, description="A string that is a 10 digit number. Can have leading zeros.") pattern_with_digits: Optional[constr(strict=True)] = Field(None, description="A string that is a 10 digit number. Can have leading zeros.")
pattern_with_digits_and_delimiter: Optional[constr(strict=True)] = Field(None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.") pattern_with_digits_and_delimiter: Optional[constr(strict=True)] = Field(None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.")
additional_properties: Dict[str, Any] = {} additional_properties: Dict[str, Any] = {}

View File

@ -26,7 +26,7 @@ class Name(BaseModel):
""" """
Model for testing model name same as property name Model for testing model name same as property name
""" """
name: StrictInt = ... name: StrictInt = Field(...)
snake_case: Optional[StrictInt] = None snake_case: Optional[StrictInt] = None
var_property: Optional[StrictStr] = Field(None, alias="property") var_property: Optional[StrictStr] = Field(None, alias="property")
var_123_number: Optional[StrictInt] = Field(None, alias="123Number") var_123_number: Optional[StrictInt] = Field(None, alias="123Number")

View File

@ -20,13 +20,13 @@ import json
from datetime import date, datetime from datetime import date, datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
from pydantic import BaseModel, StrictBool, StrictFloat, StrictInt, StrictStr, conlist from pydantic import BaseModel, Field, StrictBool, StrictFloat, StrictInt, StrictStr, conlist
class NullableClass(BaseModel): class NullableClass(BaseModel):
""" """
NullableClass NullableClass
""" """
required_integer_prop: Optional[StrictInt] = ... required_integer_prop: Optional[StrictInt] = Field(...)
integer_prop: Optional[StrictInt] = None integer_prop: Optional[StrictInt] = None
number_prop: Optional[StrictFloat] = None number_prop: Optional[StrictFloat] = None
boolean_prop: Optional[StrictBool] = None boolean_prop: Optional[StrictBool] = None

View File

@ -20,7 +20,7 @@ import json
from typing import Optional from typing import Optional
from pydantic import BaseModel from pydantic import BaseModel, Field
from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.outer_enum import OuterEnum
from petstore_api.models.outer_enum_integer import OuterEnumInteger from petstore_api.models.outer_enum_integer import OuterEnumInteger
@ -29,7 +29,7 @@ class OuterObjectWithEnumProperty(BaseModel):
OuterObjectWithEnumProperty OuterObjectWithEnumProperty
""" """
str_value: Optional[OuterEnum] = None str_value: Optional[OuterEnum] = None
value: OuterEnumInteger = ... value: OuterEnumInteger = Field(...)
additional_properties: Dict[str, Any] = {} additional_properties: Dict[str, Any] = {}
__properties = ["str_value", "value"] __properties = ["str_value", "value"]

View File

@ -30,7 +30,7 @@ class Pet(BaseModel):
""" """
id: Optional[StrictInt] = None id: Optional[StrictInt] = None
category: Optional[Category] = None category: Optional[Category] = None
name: StrictStr = ... name: StrictStr = Field(...)
photo_urls: conlist(StrictStr, min_items=0, unique_items=True) = Field(..., alias="photoUrls") photo_urls: conlist(StrictStr, min_items=0, unique_items=True) = Field(..., alias="photoUrls")
tags: Optional[conlist(Tag)] = None tags: Optional[conlist(Tag)] = None
status: Optional[StrictStr] = Field(None, description="pet status in the store") status: Optional[StrictStr] = Field(None, description="pet status in the store")