* better default types

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more mypy fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more fixes for mypy

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix mypy;

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix mypy;

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* I have generated the latest API!

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Jess Frazelle
2024-09-10 14:35:25 -07:00
committed by GitHub
parent 794213f713
commit cf1e048bea
19 changed files with 949 additions and 833 deletions

View File

@ -82,6 +82,7 @@ client = ClientFromEnv()
f = open(examples_test_path, "w")
f.write("import pytest\n\n")
f.write("import datetime\n\n")
f.write("\n\n".join(examples))
f.close()
@ -140,7 +141,12 @@ def generatePaths(cwd: str, parser: dict) -> dict:
def generateTypeAndExamplePython(
name: str, schema: dict, data: dict, import_path: Optional[str], tag: Optional[str]
name: str,
schema: dict,
data: dict,
import_path: Optional[str],
tag: Optional[str],
wrapper: Optional[str] = None,
) -> Tuple[str, str, str]:
parameter_type = ""
parameter_example = ""
@ -173,6 +179,64 @@ def generateTypeAndExamplePython(
else:
parameter_type = "str"
parameter_example = '"<uuid>"'
if "format" in schema and schema["format"] == "date-time":
if name != "":
parameter_type = name
if import_path is None:
example_imports = example_imports + (
"from kittycad.models."
+ camel_to_snake(parameter_type)
+ " import "
+ parameter_type
+ "\n"
)
else:
example_imports = example_imports + (
"from kittycad.models."
+ ip
+ " import "
+ parameter_type
+ "\n"
)
parameter_example = parameter_type + "(datetime.datetime.now())"
else:
parameter_type = "datetime"
parameter_example = "datetime.datetime.now()"
elif "format" in schema and schema["format"] == "byte":
if name != "":
parameter_type = name
if import_path is None:
example_imports = example_imports + (
"from kittycad.models."
+ camel_to_snake(parameter_type)
+ " import "
+ parameter_type
+ "\n"
)
else:
example_imports = example_imports + (
"from kittycad.models."
+ ip
+ " import "
+ parameter_type
+ "\n"
)
example_imports = (
example_imports
+ "from kittycad.models.base64data import Base64Data\n"
)
parameter_example = parameter_type + 'Base64Data(b"<bytes>")'
else:
example_imports = (
example_imports
+ "from kittycad.models.base64data import Base64Data\n"
)
parameter_type = "Base64Data"
parameter_example = 'Base64Data(b"<bytes>")'
elif (
schema["type"] == "string" and "enum" in schema and len(schema["enum"]) > 0
):
@ -300,6 +364,13 @@ def generateTypeAndExamplePython(
)
parameter_example = parameter_example + ")"
if wrapper is not None:
if wrapper != "WebSocketRequest":
example_imports = example_imports + (
"from kittycad.models." + ip + " import " + wrapper + "\n"
)
parameter_example = wrapper + "(" + parameter_example + ")"
elif (
schema["type"] == "object"
and "additionalProperties" in schema
@ -346,6 +417,7 @@ def generateTypeAndExamplePython(
data,
camel_to_snake(name),
tag,
name,
)
else:
return generateTypeAndExamplePython(name, one_of, data, None, None)
@ -1670,12 +1742,20 @@ def generateObjectTypeCode(
field_type = getTypeName(property_schema)
if property_name not in required:
if "default" in property_schema:
field_type += (
' = "' + property_schema["default"] + '"'
if field_type == "str"
or isinstance(property_schema["default"], str)
else " = " + str(property_schema["default"])
)
if field_type == "str":
field_type += ' = "' + property_schema["default"] + '"'
elif isinstance(property_schema["default"], str):
field_type += (
' = "' + property_schema["default"] + '" # type: ignore'
)
elif "allOf" in property_schema:
field_type += (
" = "
+ str(property_schema["default"])
+ " # type: ignore"
)
else:
field_type += " = " + str(property_schema["default"])
else:
field_type = "Optional[" + field_type + "] = None"
field2: FieldType = {