Skip to content

Commit 5bff508

Browse files
authored
Fixes python test_fake_api tests (#9483)
* Fixes test_upload_download_file * Fixes test_string * Fixes test_string_enum * Fixes test_number_with_validations test_composed_one_of_number_with_validations * Fixes two more tests * Fixes test_array_of_enums * Fixes two tests * Removes comment * Fixes serializationf of composed schema object models, fixes test * Samples regenerated * Removes pdb
1 parent 1adf7f0 commit 5bff508

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

.generator/templates/model_utils.mustache

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1335,12 +1335,20 @@ def model_to_dict(model_instance, serialize=True):
13351335
model_instances = [model_instance]
13361336
if model_instance._composed_schemas:
13371337
model_instances.extend(model_instance._composed_instances)
1338+
seen_json_attribute_names = set()
1339+
used_fallback_python_attribute_names = set()
1340+
py_to_json_map = {}
13381341
for model_instance in model_instances:
13391342
for attr, value in model_instance._data_store.items():
13401343
if serialize:
13411344
# we use get here because additional property key names do not
13421345
# exist in attribute_map
1343-
attr = model_instance.attribute_map.get(attr, attr)
1346+
try:
1347+
attr = model_instance.attribute_map[attr]
1348+
py_to_json_map.update(model_instance.attribute_map)
1349+
seen_json_attribute_names.add(attr)
1350+
except KeyError:
1351+
used_fallback_python_attribute_names.add(attr)
13441352
if isinstance(value, list):
13451353
if not value:
13461354
# empty list or None
@@ -1368,6 +1376,16 @@ def model_to_dict(model_instance, serialize=True):
13681376
result[attr] = model_to_dict(value, serialize=serialize)
13691377
else:
13701378
result[attr] = value
1379+
if serialize:
1380+
for python_key in used_fallback_python_attribute_names:
1381+
json_key = py_to_json_map.get(python_key)
1382+
if json_key is None:
1383+
continue
1384+
if python_key == json_key:
1385+
continue
1386+
json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names
1387+
if json_key_assigned_no_need_for_python_key:
1388+
del result[python_key]
13711389

13721390
return result
13731391

0 commit comments

Comments
 (0)