|
1 | 1 | {{>partial_header}} |
2 | 2 |
|
| 3 | +import copy |
3 | 4 | from datetime import date, datetime # noqa: F401 |
4 | 5 | import inspect |
5 | 6 | import io |
@@ -913,7 +914,10 @@ def deserialize_model(model_data, model_class, path_to_item, check_type, |
913 | 914 | if issubclass(model_class, ModelSimple): |
914 | 915 | return model_class(model_data, **kw_args) |
915 | 916 | elif isinstance(model_data, list): |
916 | | - return model_class(*model_data, **kw_args) |
| 917 | + if issubclass(model_class, ModelComposed) and allows_single_value_input(model_class): |
| 918 | + return model_class(model_data, **kw_args) |
| 919 | + else: |
| 920 | + return model_class(*model_data, **kw_args) |
917 | 921 | if isinstance(model_data, dict): |
918 | 922 | kw_args.update(model_data) |
919 | 923 | return model_class(**kw_args) |
@@ -1364,6 +1368,10 @@ def get_oneof_instance(cls, model_kwargs, constant_kwargs, model_arg=None): |
1364 | 1368 | if len(cls._composed_schemas['oneOf']) == 0: |
1365 | 1369 | return None |
1366 | 1370 |
|
| 1371 | + # Buld a configuration that doesn't discard unknown keys for primitive types |
| 1372 | + discard_configuration = copy.deepcopy(constant_kwargs["_configuration"]) |
| 1373 | + discard_configuration.discard_unknown_keys = False |
| 1374 | + |
1367 | 1375 | oneof_instances = [] |
1368 | 1376 | # Iterate over each oneOf schema and determine if the input data |
1369 | 1377 | # matches the oneOf schemas. |
@@ -1412,7 +1420,7 @@ def get_oneof_instance(cls, model_kwargs, constant_kwargs, model_arg=None): |
1412 | 1420 | constant_kwargs['_path_to_item'], |
1413 | 1421 | constant_kwargs['_spec_property_naming'], |
1414 | 1422 | constant_kwargs['_check_type'], |
1415 | | - configuration=constant_kwargs['_configuration'] |
| 1423 | + configuration=discard_configuration |
1416 | 1424 | ) |
1417 | 1425 | oneof_instances.append(oneof_instance) |
1418 | 1426 | except Exception: |
|
0 commit comments