Skip to content

Commit 7ad07b0

Browse files
author
Constantinos Symeonides
committed
refactor: Avoid runtime type checks
1 parent 525d4d7 commit 7ad07b0

22 files changed

+443
-156
lines changed

end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py

+12-18
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
import json
21
from typing import Any, Dict, Optional, Union
32

43
import httpx
54

65
from ...client import Client
76
from ...models.body_upload_file_tests_upload_post import BodyUploadFileTestsUploadPost
87
from ...models.http_validation_error import HTTPValidationError
9-
from ...types import UNSET, Response, Unset, is_file
8+
from ...types import UNSET, Response, Unset
109

1110

1211
def _get_kwargs(
1312
*,
1413
client: Client,
15-
multipart_data: BodyUploadFileTestsUploadPost,
14+
multipart_body: BodyUploadFileTestsUploadPost,
1615
keep_alive: Union[Unset, bool] = UNSET,
1716
) -> Dict[str, Any]:
1817
url = "{}/tests/upload".format(client.base_url)
@@ -23,19 +22,14 @@ def _get_kwargs(
2322
if keep_alive is not UNSET:
2423
headers["keep-alive"] = keep_alive
2524

26-
files = {}
27-
for key, value in multipart_data.to_dict().items():
28-
if is_file(value) or isinstance(value, str):
29-
files[key] = value
30-
else:
31-
files[key] = (None, json.dumps(value), "application/json")
25+
multipart_multipart_body = multipart_body.to_multipart()
3226

3327
return {
3428
"url": url,
3529
"headers": headers,
3630
"cookies": cookies,
3731
"timeout": client.get_timeout(),
38-
"files": files,
32+
"files": multipart_multipart_body,
3933
}
4034

4135

@@ -63,12 +57,12 @@ def _build_response(*, response: httpx.Response) -> Response[Union[HTTPValidatio
6357
def sync_detailed(
6458
*,
6559
client: Client,
66-
multipart_data: BodyUploadFileTestsUploadPost,
60+
multipart_body: BodyUploadFileTestsUploadPost,
6761
keep_alive: Union[Unset, bool] = UNSET,
6862
) -> Response[Union[HTTPValidationError, None]]:
6963
kwargs = _get_kwargs(
7064
client=client,
71-
multipart_data=multipart_data,
65+
multipart_body=multipart_body,
7266
keep_alive=keep_alive,
7367
)
7468

@@ -82,27 +76,27 @@ def sync_detailed(
8276
def sync(
8377
*,
8478
client: Client,
85-
multipart_data: BodyUploadFileTestsUploadPost,
79+
multipart_body: BodyUploadFileTestsUploadPost,
8680
keep_alive: Union[Unset, bool] = UNSET,
8781
) -> Optional[Union[HTTPValidationError, None]]:
8882
"""Upload a file"""
8983

9084
return sync_detailed(
9185
client=client,
92-
multipart_data=multipart_data,
86+
multipart_body=multipart_body,
9387
keep_alive=keep_alive,
9488
).parsed
9589

9690

9791
async def asyncio_detailed(
9892
*,
9993
client: Client,
100-
multipart_data: BodyUploadFileTestsUploadPost,
94+
multipart_body: BodyUploadFileTestsUploadPost,
10195
keep_alive: Union[Unset, bool] = UNSET,
10296
) -> Response[Union[HTTPValidationError, None]]:
10397
kwargs = _get_kwargs(
10498
client=client,
105-
multipart_data=multipart_data,
99+
multipart_body=multipart_body,
106100
keep_alive=keep_alive,
107101
)
108102

@@ -115,15 +109,15 @@ async def asyncio_detailed(
115109
async def asyncio(
116110
*,
117111
client: Client,
118-
multipart_data: BodyUploadFileTestsUploadPost,
112+
multipart_body: BodyUploadFileTestsUploadPost,
119113
keep_alive: Union[Unset, bool] = UNSET,
120114
) -> Optional[Union[HTTPValidationError, None]]:
121115
"""Upload a file"""
122116

123117
return (
124118
await asyncio_detailed(
125119
client=client,
126-
multipart_data=multipart_data,
120+
multipart_body=multipart_body,
127121
keep_alive=keep_alive,
128122
)
129123
).parsed

end_to_end_tests/golden-record/my_test_api_client/models/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
from .an_int_enum import AnIntEnum
99
from .another_all_of_sub_model import AnotherAllOfSubModel
1010
from .body_upload_file_tests_upload_post import BodyUploadFileTestsUploadPost
11+
from .body_upload_file_tests_upload_post_some_nullable_object import BodyUploadFileTestsUploadPostSomeNullableObject
1112
from .body_upload_file_tests_upload_post_some_object import BodyUploadFileTestsUploadPostSomeObject
13+
from .body_upload_file_tests_upload_post_some_optional_object import BodyUploadFileTestsUploadPostSomeOptionalObject
1214
from .different_enum import DifferentEnum
1315
from .free_form_model import FreeFormModel
1416
from .http_validation_error import HTTPValidationError

end_to_end_tests/golden-record/my_test_api_client/models/body_upload_file_tests_upload_post.py

+86-13
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
import json
12
from io import BytesIO
2-
from typing import Any, Dict, List, Type, TypeVar, Union, cast
3+
from typing import Any, Dict, List, Optional, Type, TypeVar, Union, cast
34

45
import attr
56

7+
from ..models.body_upload_file_tests_upload_post_some_nullable_object import (
8+
BodyUploadFileTestsUploadPostSomeNullableObject,
9+
)
610
from ..models.body_upload_file_tests_upload_post_some_object import BodyUploadFileTestsUploadPostSomeObject
11+
from ..models.body_upload_file_tests_upload_post_some_optional_object import (
12+
BodyUploadFileTestsUploadPostSomeOptionalObject,
13+
)
714
from ..types import UNSET, File, FileJsonType, Unset
815

916
T = TypeVar("T", bound="BodyUploadFileTestsUploadPost")
@@ -14,15 +21,19 @@ class BodyUploadFileTestsUploadPost:
1421
""" """
1522

1623
some_file: File
24+
some_object: BodyUploadFileTestsUploadPostSomeObject
25+
some_nullable_object: Optional[BodyUploadFileTestsUploadPostSomeNullableObject]
1726
some_optional_file: Union[Unset, File] = UNSET
1827
some_string: Union[Unset, str] = "some_default_string"
1928
some_number: Union[Unset, float] = UNSET
2029
some_array: Union[Unset, List[float]] = UNSET
21-
some_object: Union[Unset, BodyUploadFileTestsUploadPostSomeObject] = UNSET
30+
some_optional_object: Union[Unset, BodyUploadFileTestsUploadPostSomeOptionalObject] = UNSET
2231

2332
def to_dict(self) -> Dict[str, Any]:
2433
some_file = self.some_file.to_tuple()
2534

35+
some_object = self.some_object.to_dict()
36+
2637
some_optional_file: Union[Unset, FileJsonType] = UNSET
2738
if not isinstance(self.some_optional_file, Unset):
2839
some_optional_file = self.some_optional_file.to_tuple()
@@ -33,14 +44,65 @@ def to_dict(self) -> Dict[str, Any]:
3344
if not isinstance(self.some_array, Unset):
3445
some_array = self.some_array
3546

36-
some_object: Union[Unset, Dict[str, Any]] = UNSET
37-
if not isinstance(self.some_object, Unset):
38-
some_object = self.some_object.to_dict()
47+
some_optional_object: Union[Unset, Dict[str, Any]] = UNSET
48+
if not isinstance(self.some_optional_object, Unset):
49+
some_optional_object = self.some_optional_object.to_dict()
50+
51+
some_nullable_object = self.some_nullable_object.to_dict() if self.some_nullable_object else None
52+
53+
field_dict: Dict[str, Any] = {}
54+
field_dict.update(
55+
{
56+
"some_file": some_file,
57+
"some_object": some_object,
58+
"some_nullable_object": some_nullable_object,
59+
}
60+
)
61+
if some_optional_file is not UNSET:
62+
field_dict["some_optional_file"] = some_optional_file
63+
if some_string is not UNSET:
64+
field_dict["some_string"] = some_string
65+
if some_number is not UNSET:
66+
field_dict["some_number"] = some_number
67+
if some_array is not UNSET:
68+
field_dict["some_array"] = some_array
69+
if some_optional_object is not UNSET:
70+
field_dict["some_optional_object"] = some_optional_object
71+
72+
return field_dict
73+
74+
def to_multipart(self) -> Dict[str, Any]:
75+
some_file = self.some_file.to_tuple()
76+
77+
some_object = (None, json.dumps(self.some_object.to_dict()), "application/json")
78+
79+
some_optional_file = UNSET
80+
if not isinstance(self.some_optional_file, Unset):
81+
some_optional_file = self.some_optional_file.to_tuple()
82+
83+
some_string = self.some_string
84+
some_number = self.some_number
85+
some_array = UNSET
86+
if not isinstance(self.some_array, Unset):
87+
some_array = self.some_array
88+
some_array = (None, json.dumps(some_array), "application/json")
89+
90+
some_optional_object = UNSET
91+
if not isinstance(self.some_optional_object, Unset):
92+
some_optional_object = (None, json.dumps(self.some_optional_object.to_dict()), "application/json")
93+
94+
some_nullable_object = (
95+
(None, json.dumps(self.some_nullable_object.to_dict()), "application/json")
96+
if self.some_nullable_object
97+
else None
98+
)
3999

40100
field_dict: Dict[str, Any] = {}
41101
field_dict.update(
42102
{
43103
"some_file": some_file,
104+
"some_object": some_object,
105+
"some_nullable_object": some_nullable_object,
44106
}
45107
)
46108
if some_optional_file is not UNSET:
@@ -51,8 +113,8 @@ def to_dict(self) -> Dict[str, Any]:
51113
field_dict["some_number"] = some_number
52114
if some_array is not UNSET:
53115
field_dict["some_array"] = some_array
54-
if some_object is not UNSET:
55-
field_dict["some_object"] = some_object
116+
if some_optional_object is not UNSET:
117+
field_dict["some_optional_object"] = some_optional_object
56118

57119
return field_dict
58120

@@ -61,6 +123,8 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
61123
d = src_dict.copy()
62124
some_file = File(payload=BytesIO(d.pop("some_file")))
63125

126+
some_object = BodyUploadFileTestsUploadPostSomeObject.from_dict(d.pop("some_object"))
127+
64128
_some_optional_file = d.pop("some_optional_file", UNSET)
65129
some_optional_file: Union[Unset, File]
66130
if isinstance(_some_optional_file, Unset):
@@ -74,20 +138,29 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
74138

75139
some_array = cast(List[float], d.pop("some_array", UNSET))
76140

77-
_some_object = d.pop("some_object", UNSET)
78-
some_object: Union[Unset, BodyUploadFileTestsUploadPostSomeObject]
79-
if isinstance(_some_object, Unset):
80-
some_object = UNSET
141+
_some_optional_object = d.pop("some_optional_object", UNSET)
142+
some_optional_object: Union[Unset, BodyUploadFileTestsUploadPostSomeOptionalObject]
143+
if isinstance(_some_optional_object, Unset):
144+
some_optional_object = UNSET
81145
else:
82-
some_object = BodyUploadFileTestsUploadPostSomeObject.from_dict(_some_object)
146+
some_optional_object = BodyUploadFileTestsUploadPostSomeOptionalObject.from_dict(_some_optional_object)
147+
148+
_some_nullable_object = d.pop("some_nullable_object")
149+
some_nullable_object: Optional[BodyUploadFileTestsUploadPostSomeNullableObject]
150+
if _some_nullable_object is None:
151+
some_nullable_object = None
152+
else:
153+
some_nullable_object = BodyUploadFileTestsUploadPostSomeNullableObject.from_dict(_some_nullable_object)
83154

84155
body_upload_file_tests_upload_post = cls(
85156
some_file=some_file,
157+
some_object=some_object,
86158
some_optional_file=some_optional_file,
87159
some_string=some_string,
88160
some_number=some_number,
89161
some_array=some_array,
90-
some_object=some_object,
162+
some_optional_object=some_optional_object,
163+
some_nullable_object=some_nullable_object,
91164
)
92165

93166
return body_upload_file_tests_upload_post
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from typing import Any, Dict, List, Type, TypeVar, Union
2+
3+
import attr
4+
5+
from ..types import UNSET, Unset
6+
7+
T = TypeVar("T", bound="BodyUploadFileTestsUploadPostSomeNullableObject")
8+
9+
10+
@attr.s(auto_attribs=True)
11+
class BodyUploadFileTestsUploadPostSomeNullableObject:
12+
""" """
13+
14+
bar: Union[Unset, str] = UNSET
15+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
16+
17+
def to_dict(self) -> Dict[str, Any]:
18+
bar = self.bar
19+
20+
field_dict: Dict[str, Any] = {}
21+
field_dict.update(self.additional_properties)
22+
field_dict.update({})
23+
if bar is not UNSET:
24+
field_dict["bar"] = bar
25+
26+
return field_dict
27+
28+
@classmethod
29+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
30+
d = src_dict.copy()
31+
bar = d.pop("bar", UNSET)
32+
33+
body_upload_file_tests_upload_post_some_nullable_object = cls(
34+
bar=bar,
35+
)
36+
37+
body_upload_file_tests_upload_post_some_nullable_object.additional_properties = d
38+
return body_upload_file_tests_upload_post_some_nullable_object
39+
40+
@property
41+
def additional_keys(self) -> List[str]:
42+
return list(self.additional_properties.keys())
43+
44+
def __getitem__(self, key: str) -> Any:
45+
return self.additional_properties[key]
46+
47+
def __setitem__(self, key: str, value: Any) -> None:
48+
self.additional_properties[key] = value
49+
50+
def __delitem__(self, key: str) -> None:
51+
del self.additional_properties[key]
52+
53+
def __contains__(self, key: str) -> bool:
54+
return key in self.additional_properties
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from typing import Any, Dict, List, Type, TypeVar
2+
3+
import attr
4+
5+
T = TypeVar("T", bound="BodyUploadFileTestsUploadPostSomeOptionalObject")
6+
7+
8+
@attr.s(auto_attribs=True)
9+
class BodyUploadFileTestsUploadPostSomeOptionalObject:
10+
""" """
11+
12+
foo: str
13+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
14+
15+
def to_dict(self) -> Dict[str, Any]:
16+
foo = self.foo
17+
18+
field_dict: Dict[str, Any] = {}
19+
field_dict.update(self.additional_properties)
20+
field_dict.update(
21+
{
22+
"foo": foo,
23+
}
24+
)
25+
26+
return field_dict
27+
28+
@classmethod
29+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
30+
d = src_dict.copy()
31+
foo = d.pop("foo")
32+
33+
body_upload_file_tests_upload_post_some_optional_object = cls(
34+
foo=foo,
35+
)
36+
37+
body_upload_file_tests_upload_post_some_optional_object.additional_properties = d
38+
return body_upload_file_tests_upload_post_some_optional_object
39+
40+
@property
41+
def additional_keys(self) -> List[str]:
42+
return list(self.additional_properties.keys())
43+
44+
def __getitem__(self, key: str) -> Any:
45+
return self.additional_properties[key]
46+
47+
def __setitem__(self, key: str, value: Any) -> None:
48+
self.additional_properties[key] = value
49+
50+
def __delitem__(self, key: str) -> None:
51+
del self.additional_properties[key]
52+
53+
def __contains__(self, key: str) -> bool:
54+
return key in self.additional_properties

0 commit comments

Comments
 (0)