Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2022-06-11 18:30:39 -07:00
parent 61c79305dc
commit 441db38ca2
28 changed files with 132 additions and 148 deletions

View File

@ -208,7 +208,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
@ -282,6 +284,7 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
"XX",
"00") +
":\n")
is_one_of = False
if 'content' in response:
content = response['content']
for content_type in content:
@ -292,7 +295,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
schema = data['components']['schemas'][ref]
# Let's check if it is a oneOf.
if 'oneOf' in schema:
is_one_of = True
# We want to parse each of the possible types.
f.write("\t\tdata = response.json()\n")
for index, one_of in enumerate(schema['oneOf']):
ref = one_of['$ref'].replace(
'#/components/schemas/', '')
@ -364,7 +369,11 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
else:
f.write("\t\tresponse_" + response_code + " = None\n")
f.write("\t\treturn response_" + response_code + "\n")
if not is_one_of:
f.write(
"\t\treturn response_" +
response_code +
"\n")
# End the method.
f.write("\treturn None\n")
@ -395,7 +404,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
@ -419,29 +430,10 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
", ".join(endpoint_refs) +
"]]:\n")
f.write("\tkwargs = _get_kwargs(\n")
# Iterate over the parameters.
if 'parameters' in endpoint:
parameters = endpoint['parameters']
for parameter in parameters:
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
f.write(
"\t\t" +
camel_to_snake(parameter_name) +
"=" +
camel_to_snake(parameter_name) +
",\n")
if request_body_type:
params = get_function_parameters(endpoint, request_body_type)
for param in params:
f.write(
"\t\tbody=body,\n")
"\t\t" + param + "=" + param + ",\n")
f.write("\t\tclient=client,\n")
f.write("\t)\n")
f.write("\n")
@ -464,7 +456,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
@ -491,29 +485,10 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
f.write("\t\"\"\" " + endpoint['description'] + " \"\"\"\n")
f.write("\n")
f.write("\treturn sync_detailed(\n")
# Iterate over the parameters.
if 'parameters' in endpoint:
parameters = endpoint['parameters']
for parameter in parameters:
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
f.write(
"\t\t" +
camel_to_snake(parameter_name) +
"=" +
camel_to_snake(parameter_name) +
",\n")
if request_body_type:
params = get_function_parameters(endpoint, request_body_type)
for param in params:
f.write(
"\t\tbody=body,\n")
"\t\t" + param + "=" + param + ",\n")
f.write("\t\tclient=client,\n")
f.write("\t).parsed\n")
@ -529,7 +504,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
@ -553,29 +530,10 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
", ".join(endpoint_refs) +
"]]:\n")
f.write("\tkwargs = _get_kwargs(\n")
# Iterate over the parameters.
if 'parameters' in endpoint:
parameters = endpoint['parameters']
for parameter in parameters:
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
f.write(
"\t\t" +
camel_to_snake(parameter_name) +
"=" +
camel_to_snake(parameter_name) +
",\n")
if request_body_type:
params = get_function_parameters(endpoint, request_body_type)
for param in params:
f.write(
"\t\tbody=body,\n")
"\t\t" + param + "=" + param + ",\n")
f.write("\t\tclient=client,\n")
f.write("\t)\n")
f.write("\n")
@ -596,7 +554,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
@ -624,29 +584,10 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
f.write("\n")
f.write("\treturn (\n")
f.write("\t\tawait asyncio_detailed(\n")
# Iterate over the parameters.
if 'parameters' in endpoint:
parameters = endpoint['parameters']
for parameter in parameters:
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace('integer', 'int')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
f.write(
"\t\t\t" +
camel_to_snake(parameter_name) +
"=" +
camel_to_snake(parameter_name) +
",\n")
if request_body_type:
params = get_function_parameters(endpoint, request_body_type)
for param in params:
f.write(
"\t\t\tbody=body,\n")
"\t\t" + param + "=" + param + ",\n")
f.write("\t\t\tclient=client,\n")
f.write("\t\t)\n")
f.write("\t).parsed\n")
@ -698,6 +639,8 @@ def generateType(path: str, name: str, schema: dict):
generateEnumType(file_path, name, schema, type_name)
elif type_name == 'integer':
generateIntegerType(file_path, name, schema, type_name)
elif type_name == 'number':
generateIntegerType(file_path, name, schema, type_name)
elif type_name == 'string':
generateStringType(file_path, name, schema, type_name)
else:
@ -754,6 +697,20 @@ def generateIntegerType(path: str, name: str, schema: dict, type_name: str):
f.close()
def generateFloatType(path: str, name: str, schema: dict, type_name: str):
print("generating type: ", name, " at: ", path)
print(" schema: ", [schema])
f = open(path, "w")
f.write("class " + name + "(float):\n")
f.write("\n")
f.write("\tdef __float__(self) -> float:\n")
f.write("\t\treturn self\n")
# Close the file.
f.close()
def generateEnumType(path: str, name: str, schema: dict, type_name: str):
print("generating type: ", name, " at: ", path)
print(" schema: ", [schema])
@ -1456,6 +1413,29 @@ def camel_to_screaming_snake(name: str):
'_')
def get_function_parameters(endpoint: dict, request_body_type: bool) -> [str]:
params = []
if 'parameters' in endpoint:
parameters = endpoint['parameters']
for parameter in parameters:
parameter_name = parameter['name']
if 'type' in parameter['schema']:
parameter_type = parameter['schema']['type'].replace(
'string', 'str').replace(
'integer', 'int').replace(
'number', 'float')
elif '$ref' in parameter['schema']:
parameter_type = parameter['schema']['$ref'].replace(
'#/components/schemas/', '')
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
params.append(camel_to_snake(parameter_name))
if request_body_type:
params.append("body")
return params
if (__name__ == '__main__'):
exit_code = main()
exit(exit_code)

View File

@ -14,3 +14,7 @@ poetry run autopep8 --in-place --aggressive --aggressive kittycad/models/*.py
poetry run autopep8 --in-place --aggressive --aggressive kittycad/api/*.py
poetry run autopep8 --in-place --aggressive --aggressive kittycad/*.py
poetry run autopep8 --in-place --aggressive --aggressive generate/*.py
# Lint
poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

View File

@ -107,7 +107,7 @@ Only KittyCAD employees can view API calls for other users. """
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -103,7 +103,7 @@ async def asyncio(
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -107,7 +107,7 @@ async def asyncio(
return (
await asyncio_detailed(
group_by=group_by,
group_by=group_by,
client=client,
)
).parsed

View File

@ -29,6 +29,7 @@ def _get_kwargs(
def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConversion, FileMass, FileVolume, Error]]:
if response.status_code == 200:
data = response.json()
try:
if not isinstance(data, dict):
raise TypeError()
@ -50,7 +51,6 @@ def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConv
return option
except:
raise
return response_200
if response.status_code == 400:
response_4XX = Error.from_dict(response.json())
return response_4XX
@ -131,7 +131,7 @@ Only KittyCAD employees with the proper access can view async operations for oth
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -120,9 +120,9 @@ async def asyncio(
return (
await asyncio_detailed(
limit=limit,
page_token=page_token,
sort_by=sort_by,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -134,10 +134,10 @@ The API calls are returned in order of creation, with the most recently created
return (
await asyncio_detailed(
id=id,
limit=limit,
page_token=page_token,
sort_by=sort_by,
id=id,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -122,9 +122,9 @@ The API calls are returned in order of creation, with the most recently created
return (
await asyncio_detailed(
limit=limit,
page_token=page_token,
sort_by=sort_by,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -104,7 +104,7 @@ This endpoint does not actually delete the API token from the database. It merel
return (
await asyncio_detailed(
token=token,
token=token,
client=client,
)
).parsed

View File

@ -103,7 +103,7 @@ async def asyncio(
return (
await asyncio_detailed(
token=token,
token=token,
client=client,
)
).parsed

View File

@ -122,9 +122,9 @@ The API tokens are returned in order of creation, with the most recently created
return (
await asyncio_detailed(
limit=limit,
page_token=page_token,
sort_by=sort_by,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -126,9 +126,9 @@ If the operation is performed asynchronously, the `id` of the operation will be
return (
await asyncio_detailed(
output_format=output_format,
src_format=src_format,
body=body,
output_format=output_format,
src_format=src_format,
body=body,
client=client,
)
).parsed

View File

@ -119,9 +119,9 @@ async def asyncio(
return (
await asyncio_detailed(
lang=lang,
output=output,
body=body,
lang=lang,
output=output,
body=body,
client=client,
)
).parsed

View File

@ -9,7 +9,7 @@ from ...models.file_source_format import FileSourceFormat
from ...types import Response
def _get_kwargs(
material_density: number,
material_density: float,
src_format: FileSourceFormat,
body: bytes,
*,
@ -52,7 +52,7 @@ def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileMass
def sync_detailed(
material_density: number,
material_density: float,
src_format: FileSourceFormat,
body: bytes,
*,
@ -74,7 +74,7 @@ def sync_detailed(
def sync(
material_density: number,
material_density: float,
src_format: FileSourceFormat,
body: bytes,
*,
@ -92,7 +92,7 @@ If the operation is performed asynchronously, the `id` of the operation will be
async def asyncio_detailed(
material_density: number,
material_density: float,
src_format: FileSourceFormat,
body: bytes,
*,
@ -112,7 +112,7 @@ async def asyncio_detailed(
async def asyncio(
material_density: number,
material_density: float,
src_format: FileSourceFormat,
body: bytes,
*,
@ -123,9 +123,9 @@ If the operation is performed asynchronously, the `id` of the operation will be
return (
await asyncio_detailed(
material_density=material_density,
src_format=src_format,
body=body,
material_density=material_density,
src_format=src_format,
body=body,
client=client,
)
).parsed

View File

@ -115,8 +115,8 @@ If the operation is performed asynchronously, the `id` of the operation will be
return (
await asyncio_detailed(
src_format=src_format,
body=body,
src_format=src_format,
body=body,
client=client,
)
).parsed

View File

@ -29,6 +29,7 @@ def _get_kwargs(
def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConversion, FileMass, FileVolume, Error]]:
if response.status_code == 200:
data = response.json()
try:
if not isinstance(data, dict):
raise TypeError()
@ -50,7 +51,6 @@ def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConv
return option
except:
raise
return response_200
if response.status_code == 400:
response_4XX = Error.from_dict(response.json())
return response_4XX
@ -131,7 +131,7 @@ Only KittyCAD employees with the proper access can view file conversions for oth
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -29,6 +29,7 @@ def _get_kwargs(
def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConversion, FileMass, FileVolume, Error]]:
if response.status_code == 200:
data = response.json()
try:
if not isinstance(data, dict):
raise TypeError()
@ -50,7 +51,6 @@ def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConv
return option
except:
raise
return response_200
if response.status_code == 400:
response_4XX = Error.from_dict(response.json())
return response_4XX
@ -127,7 +127,7 @@ This endpoint requires authentication by any KittyCAD user. It returns details o
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -102,7 +102,7 @@ async def asyncio(
return (
await asyncio_detailed(
body=body,
body=body,
client=client,
)
).parsed

View File

@ -107,7 +107,7 @@ This endpoint requires authentication by any KittyCAD user. It creates the payme
return (
await asyncio_detailed(
body=body,
body=body,
client=client,
)
).parsed

View File

@ -102,7 +102,7 @@ async def asyncio(
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -107,7 +107,7 @@ This endpoint requires authentication by any KittyCAD user. It updates the payme
return (
await asyncio_detailed(
body=body,
body=body,
client=client,
)
).parsed

View File

@ -103,7 +103,7 @@ async def asyncio(
return (
await asyncio_detailed(
token=token,
token=token,
client=client,
)
).parsed

View File

@ -107,7 +107,7 @@ To get information about any KittyCAD user, you must be a KittyCAD employee. """
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -107,7 +107,7 @@ To get information about any KittyCAD user, you must be a KittyCAD employee. """
return (
await asyncio_detailed(
id=id,
id=id,
client=client,
)
).parsed

View File

@ -120,9 +120,9 @@ async def asyncio(
return (
await asyncio_detailed(
limit=limit,
page_token=page_token,
sort_by=sort_by,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -120,9 +120,9 @@ async def asyncio(
return (
await asyncio_detailed(
limit=limit,
page_token=page_token,
sort_by=sort_by,
limit=limit,
page_token=page_token,
sort_by=sort_by,
client=client,
)
).parsed

View File

@ -105,7 +105,7 @@ async def asyncio(
return (
await asyncio_detailed(
body=body,
body=body,
client=client,
)
).parsed