Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Prefix generated identifiers to allow leading digits in field names (#206 - @kalzoo).

### Additions
- Better compatibility for "required" (whether or not the field must be included) and "nullable" (whether or not the field can be null) (#205 & #208). Thanks @bowenwr & @emannguitar!

## 0.6.1 - 2020-09-26

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,67 +7,76 @@
from ...client import Client
from ...models.an_enum import AnEnum
from ...models.http_validation_error import HTTPValidationError
from ...types import Response
from ...types import UNSET, Response


def _get_kwargs(
*,
client: Client,
json_body: Dict[Any, Any],
string_prop: Optional[str] = "the default string",
datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Optional[datetime.date] = isoparse("1010-10-10").date(),
float_prop: Optional[float] = 3.14,
int_prop: Optional[int] = 7,
boolean_prop: Optional[bool] = False,
list_prop: Optional[List[AnEnum]] = None,
union_prop: Optional[Union[Optional[float], Optional[str]]] = "not a float",
enum_prop: Optional[AnEnum] = None,
string_prop: str = "the default string",
datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
date_prop: datetime.date = isoparse("1010-10-10").date(),
float_prop: float = 3.14,
int_prop: int = 7,
boolean_prop: bool = cast(bool, UNSET),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the right thing to do with these would be to make the type Union[bool, Unset] when the prop is not required. That way we're not lying about the data that could be in an instance of this class.

list_prop: List[AnEnum] = cast(List[AnEnum], UNSET),
union_prop: Union[float, str] = "not a float",
enum_prop: AnEnum = cast(AnEnum, UNSET),
) -> Dict[str, Any]:
url = "{}/tests/defaults".format(client.base_url)

headers: Dict[str, Any] = client.get_headers()

json_datetime_prop = datetime_prop.isoformat() if datetime_prop else None
if datetime_prop is UNSET:
json_datetime_prop = UNSET
else:
json_datetime_prop = datetime_prop.isoformat()

json_date_prop = date_prop.isoformat() if date_prop else None
if date_prop is UNSET:
json_date_prop = UNSET
else:
json_date_prop = date_prop.isoformat()

if list_prop is None:
json_list_prop = None
if list_prop is UNSET:
json_list_prop = UNSET
else:
json_list_prop = []
for list_prop_item_data in list_prop:
list_prop_item = list_prop_item_data.value

json_list_prop.append(list_prop_item)

if union_prop is None:
json_union_prop: Optional[Union[Optional[float], Optional[str]]] = None
if union_prop is UNSET:
json_union_prop: Union[float, str] = UNSET
elif isinstance(union_prop, float):
json_union_prop = union_prop
else:
json_union_prop = union_prop

json_enum_prop = enum_prop.value if enum_prop else None
if enum_prop is UNSET:
json_enum_prop = UNSET
else:
json_enum_prop = enum_prop.value

params: Dict[str, Any] = {}
if string_prop is not None:
if string_prop is not UNSET:
params["string_prop"] = string_prop
if datetime_prop is not None:
if datetime_prop is not UNSET:
params["datetime_prop"] = json_datetime_prop
if date_prop is not None:
if date_prop is not UNSET:
params["date_prop"] = json_date_prop
if float_prop is not None:
if float_prop is not UNSET:
params["float_prop"] = float_prop
if int_prop is not None:
if int_prop is not UNSET:
params["int_prop"] = int_prop
if boolean_prop is not None:
if boolean_prop is not UNSET:
params["boolean_prop"] = boolean_prop
if list_prop is not None:
if list_prop is not UNSET:
params["list_prop"] = json_list_prop
if union_prop is not None:
if union_prop is not UNSET:
params["union_prop"] = json_union_prop
if enum_prop is not None:
if enum_prop is not UNSET:
params["enum_prop"] = json_enum_prop

json_json_body = json_body
Expand Down Expand Up @@ -103,15 +112,15 @@ def sync_detailed(
*,
client: Client,
json_body: Dict[Any, Any],
string_prop: Optional[str] = "the default string",
datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Optional[datetime.date] = isoparse("1010-10-10").date(),
float_prop: Optional[float] = 3.14,
int_prop: Optional[int] = 7,
boolean_prop: Optional[bool] = False,
list_prop: Optional[List[AnEnum]] = None,
union_prop: Optional[Union[Optional[float], Optional[str]]] = "not a float",
enum_prop: Optional[AnEnum] = None,
string_prop: str = "the default string",
datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
date_prop: datetime.date = isoparse("1010-10-10").date(),
float_prop: float = 3.14,
int_prop: int = 7,
boolean_prop: bool = cast(bool, UNSET),
list_prop: List[AnEnum] = cast(List[AnEnum], UNSET),
union_prop: Union[float, str] = "not a float",
enum_prop: AnEnum = cast(AnEnum, UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
Expand All @@ -138,15 +147,15 @@ def sync(
*,
client: Client,
json_body: Dict[Any, Any],
string_prop: Optional[str] = "the default string",
datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Optional[datetime.date] = isoparse("1010-10-10").date(),
float_prop: Optional[float] = 3.14,
int_prop: Optional[int] = 7,
boolean_prop: Optional[bool] = False,
list_prop: Optional[List[AnEnum]] = None,
union_prop: Optional[Union[Optional[float], Optional[str]]] = "not a float",
enum_prop: Optional[AnEnum] = None,
string_prop: str = "the default string",
datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
date_prop: datetime.date = isoparse("1010-10-10").date(),
float_prop: float = 3.14,
int_prop: int = 7,
boolean_prop: bool = cast(bool, UNSET),
list_prop: List[AnEnum] = cast(List[AnEnum], UNSET),
union_prop: Union[float, str] = "not a float",
enum_prop: AnEnum = cast(AnEnum, UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" """

Expand All @@ -169,15 +178,15 @@ async def asyncio_detailed(
*,
client: Client,
json_body: Dict[Any, Any],
string_prop: Optional[str] = "the default string",
datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Optional[datetime.date] = isoparse("1010-10-10").date(),
float_prop: Optional[float] = 3.14,
int_prop: Optional[int] = 7,
boolean_prop: Optional[bool] = False,
list_prop: Optional[List[AnEnum]] = None,
union_prop: Optional[Union[Optional[float], Optional[str]]] = "not a float",
enum_prop: Optional[AnEnum] = None,
string_prop: str = "the default string",
datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
date_prop: datetime.date = isoparse("1010-10-10").date(),
float_prop: float = 3.14,
int_prop: int = 7,
boolean_prop: bool = cast(bool, UNSET),
list_prop: List[AnEnum] = cast(List[AnEnum], UNSET),
union_prop: Union[float, str] = "not a float",
enum_prop: AnEnum = cast(AnEnum, UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
Expand All @@ -203,15 +212,15 @@ async def asyncio(
*,
client: Client,
json_body: Dict[Any, Any],
string_prop: Optional[str] = "the default string",
datetime_prop: Optional[datetime.datetime] = isoparse("1010-10-10T00:00:00"),
date_prop: Optional[datetime.date] = isoparse("1010-10-10").date(),
float_prop: Optional[float] = 3.14,
int_prop: Optional[int] = 7,
boolean_prop: Optional[bool] = False,
list_prop: Optional[List[AnEnum]] = None,
union_prop: Optional[Union[Optional[float], Optional[str]]] = "not a float",
enum_prop: Optional[AnEnum] = None,
string_prop: str = "the default string",
datetime_prop: datetime.datetime = isoparse("1010-10-10T00:00:00"),
date_prop: datetime.date = isoparse("1010-10-10").date(),
float_prop: float = 3.14,
int_prop: int = 7,
boolean_prop: bool = cast(bool, UNSET),
list_prop: List[AnEnum] = cast(List[AnEnum], UNSET),
union_prop: Union[float, str] = "not a float",
enum_prop: AnEnum = cast(AnEnum, UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" """

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def _get_kwargs(

headers: Dict[str, Any] = client.get_headers()

json_json_body = json_body.to_dict()
json_json_body = json_body.to_dict(exclude_unset=True)

return {
"url": url,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
from typing import Any, Dict, List, Optional, Union, cast

import httpx

from ...client import Client
from ...models.http_validation_error import HTTPValidationError
from ...types import UNSET, Response


def _get_kwargs(
*,
client: Client,
query_param: List[str] = cast(List[str], UNSET),
) -> Dict[str, Any]:
url = "{}/tests/optional_query_param/".format(client.base_url)

headers: Dict[str, Any] = client.get_headers()

if query_param is UNSET:
json_query_param = UNSET
else:
json_query_param = query_param

params: Dict[str, Any] = {}
if query_param is not UNSET:
params["query_param"] = json_query_param

return {
"url": url,
"headers": headers,
"cookies": client.get_cookies(),
"timeout": client.get_timeout(),
"params": params,
}


def _parse_response(*, response: httpx.Response) -> Optional[Union[None, HTTPValidationError]]:
if response.status_code == 200:
return None
if response.status_code == 422:
return HTTPValidationError.from_dict(cast(Dict[str, Any], response.json()))
return None


def _build_response(*, response: httpx.Response) -> Response[Union[None, HTTPValidationError]]:
return Response(
status_code=response.status_code,
content=response.content,
headers=response.headers,
parsed=_parse_response(response=response),
)


def sync_detailed(
*,
client: Client,
query_param: List[str] = cast(List[str], UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
query_param=query_param,
)

response = httpx.get(
**kwargs,
)

return _build_response(response=response)


def sync(
*,
client: Client,
query_param: List[str] = cast(List[str], UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" Test optional query parameters """

return sync_detailed(
client=client,
query_param=query_param,
).parsed


async def asyncio_detailed(
*,
client: Client,
query_param: List[str] = cast(List[str], UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
query_param=query_param,
)

async with httpx.AsyncClient() as _client:
response = await _client.get(**kwargs)

return _build_response(response=response)


async def asyncio(
*,
client: Client,
query_param: List[str] = cast(List[str], UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" Test optional query parameters """

return (
await asyncio_detailed(
client=client,
query_param=query_param,
)
).parsed
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
from ...client import Client
from ...models.body_upload_file_tests_upload_post import BodyUploadFileTestsUploadPost
from ...models.http_validation_error import HTTPValidationError
from ...types import Response
from ...types import UNSET, Response


def _get_kwargs(
*,
client: Client,
multipart_data: BodyUploadFileTestsUploadPost,
keep_alive: Optional[bool] = None,
keep_alive: bool = cast(bool, UNSET),
) -> Dict[str, Any]:
url = "{}/tests/upload".format(client.base_url)

headers: Dict[str, Any] = client.get_headers()

if keep_alive is not None:
if keep_alive is not UNSET:
headers["keep-alive"] = keep_alive

return {
Expand Down Expand Up @@ -51,7 +51,7 @@ def sync_detailed(
*,
client: Client,
multipart_data: BodyUploadFileTestsUploadPost,
keep_alive: Optional[bool] = None,
keep_alive: bool = cast(bool, UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
Expand All @@ -70,7 +70,7 @@ def sync(
*,
client: Client,
multipart_data: BodyUploadFileTestsUploadPost,
keep_alive: Optional[bool] = None,
keep_alive: bool = cast(bool, UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" Upload a file """

Expand All @@ -85,7 +85,7 @@ async def asyncio_detailed(
*,
client: Client,
multipart_data: BodyUploadFileTestsUploadPost,
keep_alive: Optional[bool] = None,
keep_alive: bool = cast(bool, UNSET),
) -> Response[Union[None, HTTPValidationError]]:
kwargs = _get_kwargs(
client=client,
Expand All @@ -103,7 +103,7 @@ async def asyncio(
*,
client: Client,
multipart_data: BodyUploadFileTestsUploadPost,
keep_alive: Optional[bool] = None,
keep_alive: bool = cast(bool, UNSET),
) -> Optional[Union[None, HTTPValidationError]]:
""" Upload a file """

Expand Down
Loading