Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bin/configs/python-aiohttp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ additionalProperties:
packageName: petstore_api
mapNumberTo: float
poetry1: true
enumUnknownDefaultCase: true
nameMappings:
_type: underscore_type
type_: type_with_underscore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `XML` (value: `'XML'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `LEFT_PARENTHESIS_XYZ_RIGHT_PARENTHESIS` (value: `'(xyz)'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `FiftySix` (value: `56`)

* `unknown_default_open_api` (value: `11184809`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

* `B` (value: `'b'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

* `D` (value: `'d'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `bazVar_XEnumVarname` (value: `'baz'`)

* `'unknown_default_open_api'` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ oneOf enum strings

* `D` (value: `'d'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `DELIVERED` (value: `'delivered'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `DELIVERED` (value: `'delivered'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `NUMBER_2` (value: `2`)

* `NUMBER_11184809` (value: `11184809`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

* `NUMBER_2` (value: `2`)

* `NUMBER_11184809` (value: `11184809`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

* `USER` (value: `'user'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@

* `HELLO_WORLD` (value: `' hello world '`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

* `FOUR` (value: `'foUr'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

* `DREI` (value: `'DREI'`)

* `UNKNOWN_DEFAULT_OPEN_API` (value: `'unknown_default_open_api'`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


2 changes: 2 additions & 0 deletions samples/openapi3/client/petstore/python-aiohttp/docs/Type.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

* `NUMBER_0_DOT_25` (value: `0.25`)

* `NUMBER_11184809` (value: `11184809`)

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ class Bathing(BaseModel):
@field_validator('task_name')
def task_name_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['cleaning_deep']):
raise ValueError("must be one of enum values ('cleaning_deep')")
if value not in set(['cleaning_deep', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('cleaning_deep', 'unknown_default_open_api')")
return value

@field_validator('function_name')
def function_name_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['care_nourish']):
raise ValueError("must be one of enum values ('care_nourish')")
if value not in set(['care_nourish', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('care_nourish', 'unknown_default_open_api')")
return value

model_config = ConfigDict(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ class DataOutputFormat(str, Enum):
JSON = 'JSON'
CSV = 'CSV'
XML = 'XML'
UNKNOWN_DEFAULT_OPEN_API = 'unknown_default_open_api'

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of DataOutputFormat from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ def just_symbol_validate_enum(cls, value):
if value is None:
return value

if value not in set(['>=', '$']):
raise ValueError("must be one of enum values ('>=', '$')")
if value not in set(['>=', '$', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('>=', '$', 'unknown_default_open_api')")
return value

@field_validator('array_enum')
Expand All @@ -47,8 +47,8 @@ def array_enum_validate_enum(cls, value):
return value

for i in value:
if i not in set(['fish', 'crab']):
raise ValueError("each list item must be one of ('fish', 'crab')")
if i not in set(['fish', 'crab', 'unknown_default_open_api']):
raise ValueError("each list item must be one of ('fish', 'crab', 'unknown_default_open_api')")
return value

model_config = ConfigDict(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ class EnumClass(str, Enum):
ABC = '_abc'
MINUS_EFG = '-efg'
LEFT_PARENTHESIS_XYZ_RIGHT_PARENTHESIS = '(xyz)'
UNKNOWN_DEFAULT_OPEN_API = 'unknown_default_open_api'

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnumClass from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ class EnumNumberVendorExt(int, Enum):
FortyTwo = 42
Eigtheen = 18
FiftySix = 56
unknown_default_open_api = 11184809

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnumNumberVendorExt from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,16 @@ class EnumString1(str, Enum):
"""
A = 'a'
B = 'b'
UNKNOWN_DEFAULT_OPEN_API = 'unknown_default_open_api'

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnumString1 from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,16 @@ class EnumString2(str, Enum):
"""
C = 'c'
D = 'd'
UNKNOWN_DEFAULT_OPEN_API = 'unknown_default_open_api'

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnumString2 from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ class EnumStringVendorExt(str, Enum):
FOO_XEnumVarname = 'FOO'
BarVar_XEnumVarname = 'Bar'
bazVar_XEnumVarname = 'baz'
'unknown_default_open_api' = 'unknown_default_open_api'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a strong interest in getting this feature for the Python generator merged soon.

To me, this line seems to be the cause for the failing tests:

-    'unknown_default_open_api' = 'unknown_default_open_api'
+    UNKNOWN_DEFAULT_OPEN_API  = 'unknown_default_open_api'

Could you please adapt this line and try running the tests again?


@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnumStringVendorExt from a JSON string"""
return cls(json.loads(json_str))

@classmethod
def _missing_(cls, value):
"""Handle unknown enum values"""
return cls.UNKNOWN_DEFAULT_OPEN_API


Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@ def enum_string_validate_enum(cls, value):
if value is None:
return value

if value not in set(['UPPER', 'lower', '']):
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
if value not in set(['UPPER', 'lower', '', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('UPPER', 'lower', '', 'unknown_default_open_api')")
return value

@field_validator('enum_string_required')
def enum_string_required_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['UPPER', 'lower', '']):
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
if value not in set(['UPPER', 'lower', '', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('UPPER', 'lower', '', 'unknown_default_open_api')")
return value

@field_validator('enum_integer_default')
Expand All @@ -70,8 +70,8 @@ def enum_integer_default_validate_enum(cls, value):
if value is None:
return value

if value not in set([1, 5, 14]):
raise ValueError("must be one of enum values (1, 5, 14)")
if value not in set([1, 5, 14, 11184809]):
raise ValueError("must be one of enum values (1, 5, 14, 11184809)")
return value

@field_validator('enum_integer')
Expand All @@ -80,8 +80,8 @@ def enum_integer_validate_enum(cls, value):
if value is None:
return value

if value not in set([1, -1]):
raise ValueError("must be one of enum values (1, -1)")
if value not in set([1, -1, 11184809]):
raise ValueError("must be one of enum values (1, -1, 11184809)")
return value

@field_validator('enum_number')
Expand All @@ -90,8 +90,8 @@ def enum_number_validate_enum(cls, value):
if value is None:
return value

if value not in set([1.1, -1.2]):
raise ValueError("must be one of enum values (1.1, -1.2)")
if value not in set([1.1, -1.2, 11184809]):
raise ValueError("must be one of enum values (1.1, -1.2, 11184809)")
return value

@field_validator('enum_string_single_member')
Expand All @@ -100,8 +100,8 @@ def enum_string_single_member_validate_enum(cls, value):
if value is None:
return value

if value not in set(['abc']):
raise ValueError("must be one of enum values ('abc')")
if value not in set(['abc', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('abc', 'unknown_default_open_api')")
return value

@field_validator('enum_integer_single_member')
Expand All @@ -110,8 +110,8 @@ def enum_integer_single_member_validate_enum(cls, value):
if value is None:
return value

if value not in set([100]):
raise ValueError("must be one of enum values (100)")
if value not in set([100, 11184809]):
raise ValueError("must be one of enum values (100, 11184809)")
return value

model_config = ConfigDict(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ class Feeding(BaseModel):
@field_validator('task_name')
def task_name_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['cleaning']):
raise ValueError("must be one of enum values ('cleaning')")
if value not in set(['cleaning', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('cleaning', 'unknown_default_open_api')")
return value

@field_validator('function_name')
def function_name_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['care_nourish']):
raise ValueError("must be one of enum values ('care_nourish')")
if value not in set(['care_nourish', 'unknown_default_open_api']):
raise ValueError("must be one of enum values ('care_nourish', 'unknown_default_open_api')")
return value

model_config = ConfigDict(
Expand Down
Loading
Loading