Skip to content

Commit 7b1efb5

Browse files
committed
Merge remote-tracking branch 'origin/master' into 5.2.x
2 parents 67da5bb + 22dbe3a commit 7b1efb5

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

.generator/templates/api.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ class {{classname}}(object):
230230
'min_length': {{minLength}},{{/minLength}}{{#maxItems}}
231231
'max_items': {{maxItems}},{{/maxItems}}{{#minItems}}
232232
'min_items': {{minItems}},{{/minItems}}{{#maximum}}
233-
{{#exclusiveMaximum}}'exclusive_maximum'{{/exclusiveMaximum}}'inclusive_maximum'{{^exclusiveMaximum}}{{/exclusiveMaximum}}: {{maximum}},{{/maximum}}{{#minimum}}
234-
{{#exclusiveMinimum}}'exclusive_minimum'{{/exclusiveMinimum}}'inclusive_minimum'{{^exclusiveMinimum}}{{/exclusiveMinimum}}: {{minimum}},{{/minimum}}{{#pattern}}
233+
{{#exclusiveMaximum}}'exclusive_maximum'{{/exclusiveMaximum}}{{^exclusiveMaximum}}'inclusive_maximum'{{/exclusiveMaximum}}: {{maximum}},{{/maximum}}{{#minimum}}
234+
{{#exclusiveMinimum}}'exclusive_minimum'{{/exclusiveMinimum}}{{^exclusiveMinimum}}'inclusive_minimum'{{/exclusiveMinimum}}: {{minimum}},{{/minimum}}{{#pattern}}
235235
'regex': {
236236
'pattern': r'{{{vendorExtensions.x-regex}}}', # noqa: E501{{#vendorExtensions.x-modifiers}}
237237
{{#-first}}'flags': (re.{{.}}{{/-first}}{{^-first}} re.{{.}}{{/-first}}{{^-last}} | {{/-last}}{{#-last}}){{/-last}}{{/vendorExtensions.x-modifiers}}

.generator/templates/model_utils.mustache

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,13 +1211,19 @@ def model_to_dict(model_instance, serialize=True):
12111211
# exist in attribute_map
12121212
attr = model_instance.attribute_map.get(attr, attr)
12131213
if isinstance(value, list):
1214-
if not value or isinstance(value[0], PRIMITIVE_TYPES):
1215-
# empty list or primitive types
1216-
result[attr] = value
1217-
elif isinstance(value[0], ModelSimple):
1218-
result[attr] = [x.value for x in value]
1219-
else:
1220-
result[attr] = [model_to_dict(x, serialize=serialize) for x in value]
1214+
if not value:
1215+
# empty list or None
1216+
result[attr] = value
1217+
else:
1218+
res = []
1219+
for v in value:
1220+
if isinstance(v, PRIMITIVE_TYPES) or v is None:
1221+
res.append(v)
1222+
elif isinstance(v, ModelSimple):
1223+
res.append(v.value)
1224+
else:
1225+
res.append(model_to_dict(v, serialize=serialize))
1226+
result[attr] = res
12211227
elif isinstance(value, dict):
12221228
result[attr] = dict(map(
12231229
lambda item: (item[0],
@@ -1277,11 +1283,16 @@ def get_valid_classes_phrase(input_classes):
12771283
def convert_js_args_to_python_args(fn):
12781284
from functools import wraps
12791285
@wraps(fn)
1280-
def wrapped_init(self, *args, **kwargs):
1286+
def wrapped_init(_self, *args, **kwargs):
1287+
"""
1288+
An attribute named `self` received from the api will conflicts with the reserved `self`
1289+
parameter of a class method. During generation, `self` attributes are mapped
1290+
to `_self` in models. Here, we name `_self` instead of `self` to avoid conflicts.
1291+
"""
12811292
spec_property_naming = kwargs.get('_spec_property_naming', False)
12821293
if spec_property_naming:
1283-
kwargs = change_keys_js_to_python(kwargs, self.__class__)
1284-
return fn(self, *args, **kwargs)
1294+
kwargs = change_keys_js_to_python(kwargs, _self.__class__)
1295+
return fn(_self, *args, **kwargs)
12851296
return wrapped_init
12861297

12871298

0 commit comments

Comments
 (0)