Skip to content

Commit 5af7edf

Browse files
wing328Goopher Maijenburg
authored andcommitted
[python] fix default value when enum is a reference (#21923)
* fix default value when enum is ref (python) * update spec
1 parent 910792b commit 5af7edf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1080
-2
lines changed

modules/openapi-generator/src/main/resources/python-pydantic-v1/model_generic.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
343343
"{{{name}}}": {{{dataType}}}.from_dict(obj.get("{{{baseName}}}")) if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}}
344344
{{/isEnumOrRef}}
345345
{{#isEnumOrRef}}
346-
"{{{name}}}": obj.get("{{{baseName}}}"){{#defaultValue}} if obj.get("{{baseName}}") is not None else {{defaultValue}}{{/defaultValue}}{{^-last}},{{/-last}}
346+
"{{{name}}}": obj.get("{{{baseName}}}"){{#defaultValue}} if obj.get("{{baseName}}") is not None else {{{defaultValue}}}{{/defaultValue}}{{^-last}},{{/-last}}
347347
{{/isEnumOrRef}}
348348
{{/isPrimitiveType}}
349349
{{#isPrimitiveType}}

modules/openapi-generator/src/main/resources/python/model_generic.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
370370
"{{{baseName}}}": {{{dataType}}}.from_dict(obj["{{{baseName}}}"]) if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}}
371371
{{/isEnumOrRef}}
372372
{{#isEnumOrRef}}
373-
"{{{baseName}}}": obj.get("{{{baseName}}}"){{#defaultValue}} if obj.get("{{baseName}}") is not None else {{defaultValue}}{{/defaultValue}}{{^-last}},{{/-last}}
373+
"{{{baseName}}}": obj.get("{{{baseName}}}"){{#defaultValue}} if obj.get("{{baseName}}") is not None else {{{defaultValue}}}{{/defaultValue}}{{^-last}},{{/-last}}
374374
{{/isEnumOrRef}}
375375
{{/isPrimitiveType}}
376376
{{#isPrimitiveType}}

modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2910,3 +2910,12 @@ components:
29102910
- 1.0
29112911
- 0.5
29122912
- 0.25
2913+
EnumRefWithDefaultValue:
2914+
type: object
2915+
properties:
2916+
report_format:
2917+
$ref: '#/components/schemas/DataOutputFormat'
2918+
DataOutputFormat:
2919+
type: string
2920+
enum: [JSON, CSV, XML]
2921+
default: JSON

samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ docs/Color.md
3131
docs/Creature.md
3232
docs/CreatureInfo.md
3333
docs/DanishPig.md
34+
docs/DataOutputFormat.md
3435
docs/DefaultApi.md
3536
docs/DeprecatedObject.md
3637
docs/DiscriminatorAllOfSub.md
@@ -40,6 +41,7 @@ docs/DummyModel.md
4041
docs/EnumArrays.md
4142
docs/EnumClass.md
4243
docs/EnumNumberVendorExt.md
44+
docs/EnumRefWithDefaultValue.md
4345
docs/EnumString1.md
4446
docs/EnumString2.md
4547
docs/EnumStringVendorExt.md
@@ -164,6 +166,7 @@ petstore_api/models/color.py
164166
petstore_api/models/creature.py
165167
petstore_api/models/creature_info.py
166168
petstore_api/models/danish_pig.py
169+
petstore_api/models/data_output_format.py
167170
petstore_api/models/deprecated_object.py
168171
petstore_api/models/discriminator_all_of_sub.py
169172
petstore_api/models/discriminator_all_of_super.py
@@ -172,6 +175,7 @@ petstore_api/models/dummy_model.py
172175
petstore_api/models/enum_arrays.py
173176
petstore_api/models/enum_class.py
174177
petstore_api/models/enum_number_vendor_ext.py
178+
petstore_api/models/enum_ref_with_default_value.py
175179
petstore_api/models/enum_string1.py
176180
petstore_api/models/enum_string2.py
177181
petstore_api/models/enum_string_vendor_ext.py

samples/openapi3/client/petstore/python-aiohttp/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ Class | Method | HTTP request | Description
178178
- [Creature](docs/Creature.md)
179179
- [CreatureInfo](docs/CreatureInfo.md)
180180
- [DanishPig](docs/DanishPig.md)
181+
- [DataOutputFormat](docs/DataOutputFormat.md)
181182
- [DeprecatedObject](docs/DeprecatedObject.md)
182183
- [DiscriminatorAllOfSub](docs/DiscriminatorAllOfSub.md)
183184
- [DiscriminatorAllOfSuper](docs/DiscriminatorAllOfSuper.md)
@@ -186,6 +187,7 @@ Class | Method | HTTP request | Description
186187
- [EnumArrays](docs/EnumArrays.md)
187188
- [EnumClass](docs/EnumClass.md)
188189
- [EnumNumberVendorExt](docs/EnumNumberVendorExt.md)
190+
- [EnumRefWithDefaultValue](docs/EnumRefWithDefaultValue.md)
189191
- [EnumString1](docs/EnumString1.md)
190192
- [EnumString2](docs/EnumString2.md)
191193
- [EnumStringVendorExt](docs/EnumStringVendorExt.md)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# DataOutputFormat
2+
3+
4+
## Enum
5+
6+
* `JSON` (value: `'JSON'`)
7+
8+
* `CSV` (value: `'CSV'`)
9+
10+
* `XML` (value: `'XML'`)
11+
12+
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
13+
14+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# EnumRefWithDefaultValue
2+
3+
4+
## Properties
5+
6+
Name | Type | Description | Notes
7+
------------ | ------------- | ------------- | -------------
8+
**report_format** | [**DataOutputFormat**](DataOutputFormat.md) | | [optional] [default to DataOutputFormat.JSON]
9+
10+
## Example
11+
12+
```python
13+
from petstore_api.models.enum_ref_with_default_value import EnumRefWithDefaultValue
14+
15+
# TODO update the JSON string below
16+
json = "{}"
17+
# create an instance of EnumRefWithDefaultValue from a JSON string
18+
enum_ref_with_default_value_instance = EnumRefWithDefaultValue.from_json(json)
19+
# print the JSON string representation of the object
20+
print(EnumRefWithDefaultValue.to_json())
21+
22+
# convert the object into a dict
23+
enum_ref_with_default_value_dict = enum_ref_with_default_value_instance.to_dict()
24+
# create an instance of EnumRefWithDefaultValue from a dict
25+
enum_ref_with_default_value_from_dict = EnumRefWithDefaultValue.from_dict(enum_ref_with_default_value_dict)
26+
```
27+
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
28+
29+

samples/openapi3/client/petstore/python-aiohttp/petstore_api/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
"Creature",
6464
"CreatureInfo",
6565
"DanishPig",
66+
"DataOutputFormat",
6667
"DeprecatedObject",
6768
"DiscriminatorAllOfSub",
6869
"DiscriminatorAllOfSuper",
@@ -71,6 +72,7 @@
7172
"EnumArrays",
7273
"EnumClass",
7374
"EnumNumberVendorExt",
75+
"EnumRefWithDefaultValue",
7476
"EnumString1",
7577
"EnumString2",
7678
"EnumStringVendorExt",
@@ -199,6 +201,7 @@
199201
from petstore_api.models.creature import Creature as Creature
200202
from petstore_api.models.creature_info import CreatureInfo as CreatureInfo
201203
from petstore_api.models.danish_pig import DanishPig as DanishPig
204+
from petstore_api.models.data_output_format import DataOutputFormat as DataOutputFormat
202205
from petstore_api.models.deprecated_object import DeprecatedObject as DeprecatedObject
203206
from petstore_api.models.discriminator_all_of_sub import DiscriminatorAllOfSub as DiscriminatorAllOfSub
204207
from petstore_api.models.discriminator_all_of_super import DiscriminatorAllOfSuper as DiscriminatorAllOfSuper
@@ -207,6 +210,7 @@
207210
from petstore_api.models.enum_arrays import EnumArrays as EnumArrays
208211
from petstore_api.models.enum_class import EnumClass as EnumClass
209212
from petstore_api.models.enum_number_vendor_ext import EnumNumberVendorExt as EnumNumberVendorExt
213+
from petstore_api.models.enum_ref_with_default_value import EnumRefWithDefaultValue as EnumRefWithDefaultValue
210214
from petstore_api.models.enum_string1 import EnumString1 as EnumString1
211215
from petstore_api.models.enum_string2 import EnumString2 as EnumString2
212216
from petstore_api.models.enum_string_vendor_ext import EnumStringVendorExt as EnumStringVendorExt
@@ -341,6 +345,7 @@
341345
from petstore_api.models.creature import Creature as Creature
342346
from petstore_api.models.creature_info import CreatureInfo as CreatureInfo
343347
from petstore_api.models.danish_pig import DanishPig as DanishPig
348+
from petstore_api.models.data_output_format import DataOutputFormat as DataOutputFormat
344349
from petstore_api.models.deprecated_object import DeprecatedObject as DeprecatedObject
345350
from petstore_api.models.discriminator_all_of_sub import DiscriminatorAllOfSub as DiscriminatorAllOfSub
346351
from petstore_api.models.discriminator_all_of_super import DiscriminatorAllOfSuper as DiscriminatorAllOfSuper
@@ -349,6 +354,7 @@
349354
from petstore_api.models.enum_arrays import EnumArrays as EnumArrays
350355
from petstore_api.models.enum_class import EnumClass as EnumClass
351356
from petstore_api.models.enum_number_vendor_ext import EnumNumberVendorExt as EnumNumberVendorExt
357+
from petstore_api.models.enum_ref_with_default_value import EnumRefWithDefaultValue as EnumRefWithDefaultValue
352358
from petstore_api.models.enum_string1 import EnumString1 as EnumString1
353359
from petstore_api.models.enum_string2 import EnumString2 as EnumString2
354360
from petstore_api.models.enum_string_vendor_ext import EnumStringVendorExt as EnumStringVendorExt

samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
from petstore_api.models.creature import Creature
4343
from petstore_api.models.creature_info import CreatureInfo
4444
from petstore_api.models.danish_pig import DanishPig
45+
from petstore_api.models.data_output_format import DataOutputFormat
4546
from petstore_api.models.deprecated_object import DeprecatedObject
4647
from petstore_api.models.discriminator_all_of_sub import DiscriminatorAllOfSub
4748
from petstore_api.models.discriminator_all_of_super import DiscriminatorAllOfSuper
@@ -50,6 +51,7 @@
5051
from petstore_api.models.enum_arrays import EnumArrays
5152
from petstore_api.models.enum_class import EnumClass
5253
from petstore_api.models.enum_number_vendor_ext import EnumNumberVendorExt
54+
from petstore_api.models.enum_ref_with_default_value import EnumRefWithDefaultValue
5355
from petstore_api.models.enum_string1 import EnumString1
5456
from petstore_api.models.enum_string2 import EnumString2
5557
from petstore_api.models.enum_string_vendor_ext import EnumStringVendorExt
@@ -160,6 +162,7 @@
160162
from petstore_api.models.creature import Creature
161163
from petstore_api.models.creature_info import CreatureInfo
162164
from petstore_api.models.danish_pig import DanishPig
165+
from petstore_api.models.data_output_format import DataOutputFormat
163166
from petstore_api.models.deprecated_object import DeprecatedObject
164167
from petstore_api.models.discriminator_all_of_sub import DiscriminatorAllOfSub
165168
from petstore_api.models.discriminator_all_of_super import DiscriminatorAllOfSuper
@@ -168,6 +171,7 @@
168171
from petstore_api.models.enum_arrays import EnumArrays
169172
from petstore_api.models.enum_class import EnumClass
170173
from petstore_api.models.enum_number_vendor_ext import EnumNumberVendorExt
174+
from petstore_api.models.enum_ref_with_default_value import EnumRefWithDefaultValue
171175
from petstore_api.models.enum_string1 import EnumString1
172176
from petstore_api.models.enum_string2 import EnumString2
173177
from petstore_api.models.enum_string_vendor_ext import EnumStringVendorExt
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# coding: utf-8
2+
3+
"""
4+
OpenAPI Petstore
5+
6+
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
7+
8+
The version of the OpenAPI document: 1.0.0
9+
Generated by OpenAPI Generator (https://openapi-generator.tech)
10+
11+
Do not edit the class manually.
12+
""" # noqa: E501
13+
14+
15+
from __future__ import annotations
16+
import json
17+
from enum import Enum
18+
from typing_extensions import Self
19+
20+
21+
class DataOutputFormat(str, Enum):
22+
"""
23+
DataOutputFormat
24+
"""
25+
26+
"""
27+
allowed enum values
28+
"""
29+
JSON = 'JSON'
30+
CSV = 'CSV'
31+
XML = 'XML'
32+
33+
@classmethod
34+
def from_json(cls, json_str: str) -> Self:
35+
"""Create an instance of DataOutputFormat from a JSON string"""
36+
return cls(json.loads(json_str))
37+
38+

0 commit comments

Comments
 (0)