Skip to content

Fix deserialization of unions #332

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Mar 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
Client = httpx.Client

import datetime
from typing import Dict, List, Union
from typing import Dict, List, Optional, Union

from dateutil.parser import isoparse

Expand Down Expand Up @@ -42,28 +42,45 @@ def httpx_request(
*,
client: Client,
string_prop: Union[Unset, str] = "the default string",
datetime_prop: Union[Unset, datetime.datetime] = isoparse("1010-10-10T00:00:00"),
not_required_not_nullable_datetime_prop: Union[Unset, datetime.datetime] = isoparse("1010-10-10T00:00:00"),
not_required_nullable_datetime_prop: Union[Unset, None, datetime.datetime] = isoparse("1010-10-10T00:00:00"),
required_not_nullable_datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
required_nullable_datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Union[Unset, datetime.date] = isoparse("1010-10-10").date(),
float_prop: Union[Unset, float] = 3.14,
int_prop: Union[Unset, int] = 7,
boolean_prop: Union[Unset, bool] = False,
list_prop: Union[Unset, List[AnEnum]] = UNSET,
union_prop: Union[Unset, float, str] = "not a float",
union_prop_with_ref: Union[Unset, float, AnEnum] = 0.6,
union_prop_with_ref: Union[AnEnum, Unset, float] = 0.6,
enum_prop: Union[Unset, AnEnum] = UNSET,
model_prop: Union[ModelWithUnionProperty, Unset] = UNSET,
model_prop: Union[Unset, ModelWithUnionProperty] = UNSET,
required_model_prop: ModelWithUnionProperty,
nullable_model_prop: Union[ModelWithUnionProperty, None, Unset] = UNSET,
nullable_required_model_prop: Union[ModelWithUnionProperty, None],
) -> Response[Union[None, HTTPValidationError]]:

json_datetime_prop: Union[Unset, str] = UNSET
if not isinstance(datetime_prop, Unset):
json_datetime_prop = datetime_prop.isoformat()
json_not_required_not_nullable_datetime_prop: Union[Unset, str] = UNSET
if not isinstance(not_required_not_nullable_datetime_prop, Unset):
json_not_required_not_nullable_datetime_prop = not_required_not_nullable_datetime_prop.isoformat()

json_not_required_nullable_datetime_prop: Union[Unset, None, str] = UNSET
if not isinstance(not_required_nullable_datetime_prop, Unset):
json_not_required_nullable_datetime_prop = (
not_required_nullable_datetime_prop.isoformat() if not_required_nullable_datetime_prop else None
)

json_required_not_nullable_datetime_prop = required_not_nullable_datetime_prop.isoformat()

json_required_nullable_datetime_prop = (
required_nullable_datetime_prop.isoformat() if required_nullable_datetime_prop else None
)

json_date_prop: Union[Unset, str] = UNSET
if not isinstance(date_prop, Unset):
json_date_prop = date_prop.isoformat()

json_list_prop: Union[Unset, List[Any]] = UNSET
json_list_prop: Union[Unset, List[str]] = UNSET
if not isinstance(list_prop, Unset):
json_list_prop = []
for list_prop_item_data in list_prop:
Expand All @@ -77,30 +94,49 @@ def httpx_request(
else:
json_union_prop = union_prop

json_union_prop_with_ref: Union[Unset, float, AnEnum]
json_union_prop_with_ref: Union[Unset, float, str]
if isinstance(union_prop_with_ref, Unset):
json_union_prop_with_ref = UNSET
elif isinstance(union_prop_with_ref, AnEnum):
json_union_prop_with_ref = UNSET
if not isinstance(union_prop_with_ref, Unset):
json_union_prop_with_ref = union_prop_with_ref
json_union_prop_with_ref = union_prop_with_ref.value

else:
json_union_prop_with_ref = union_prop_with_ref

json_enum_prop: Union[Unset, AnEnum] = UNSET
json_enum_prop: Union[Unset, str] = UNSET
if not isinstance(enum_prop, Unset):
json_enum_prop = enum_prop
json_enum_prop = enum_prop.value

json_model_prop: Union[Unset, Dict[str, Any]] = UNSET
if not isinstance(model_prop, Unset):
json_model_prop = model_prop.to_dict()

json_required_model_prop = required_model_prop.to_dict()

json_nullable_model_prop: Union[Dict[str, Any], None, Unset]
if isinstance(nullable_model_prop, Unset):
json_nullable_model_prop = UNSET
elif nullable_model_prop is None:
json_nullable_model_prop = None
else:
json_nullable_model_prop = UNSET
if not isinstance(nullable_model_prop, Unset):
json_nullable_model_prop = nullable_model_prop.to_dict()

json_nullable_required_model_prop: Union[Dict[str, Any], None]
if nullable_required_model_prop is None:
json_nullable_required_model_prop = None
else:
json_nullable_required_model_prop = nullable_required_model_prop.to_dict()

params: Dict[str, Any] = {
"string_prop": string_prop,
"datetime_prop": json_datetime_prop,
"not_required_not_nullable_datetime_prop": json_not_required_not_nullable_datetime_prop,
"not_required_nullable_datetime_prop": json_not_required_nullable_datetime_prop,
"required_not_nullable_datetime_prop": json_required_not_nullable_datetime_prop,
"required_nullable_datetime_prop": json_required_nullable_datetime_prop,
"date_prop": json_date_prop,
"float_prop": float_prop,
"int_prop": int_prop,
Expand All @@ -109,6 +145,8 @@ def httpx_request(
"union_prop": json_union_prop,
"union_prop_with_ref": json_union_prop_with_ref,
"enum_prop": json_enum_prop,
"nullable_model_prop": json_nullable_model_prop,
"nullable_required_model_prop": json_nullable_required_model_prop,
}
if not isinstance(json_model_prop, Unset):
params.update(json_model_prop)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def httpx_request(
query_param: Union[Unset, List[str]] = UNSET,
) -> Response[Union[None, HTTPValidationError]]:

json_query_param: Union[Unset, List[Any]] = UNSET
json_query_param: Union[Unset, List[str]] = UNSET
if not isinstance(query_param, Unset):
json_query_param = query_param

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@
)
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
from .model_with_any_json_properties import ModelWithAnyJsonProperties
from .model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
from .model_with_any_json_properties_additional_property_type0 import ModelWithAnyJsonPropertiesAdditionalPropertyType0
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
from .model_with_union_property import ModelWithUnionProperty
from .model_with_union_property_inlined import ModelWithUnionPropertyInlined
from .model_with_union_property_inlined_fruit_type0 import ModelWithUnionPropertyInlinedFruitType0
from .model_with_union_property_inlined_fruit_type1 import ModelWithUnionPropertyInlinedFruitType1
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
from .test_inline_objects_response_200 import TestInlineObjectsResponse_200
from .validation_error import ValidationError
Loading