Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
24171eea43 | |||
a008a9d1aa | |||
5011954847 | |||
2c7445c5a6 | |||
bf5e3e1839 | |||
f80767454a | |||
bfb243c233 | |||
e0209e29d6 | |||
213c4d681c | |||
60c42befdf | |||
d31d9507d2 | |||
ca84069e9a | |||
dd2e3848cc | |||
8c56b88113 | |||
cc0bb86a53 | |||
b3eeaef41d | |||
0ac4e4c9c0 | |||
35bbe91eb4 | |||
b4ce8e9642 | |||
479cf6a937 | |||
acea57bcba | |||
64e8aa2816 | |||
38801b52a7 | |||
e73f39cfa9 | |||
7536ca8683 | |||
493991edd1 | |||
29003eae80 | |||
79b977a55a | |||
df9083c3e2 | |||
f3e7f4f229 | |||
12864cdb44 | |||
671a0a8391 | |||
553b1c1fcd | |||
f040c6454d | |||
f0599f6d54 | |||
042bb964e5 | |||
a3089ef956 | |||
0683a11b78 | |||
532fbb352c |
2
.github/workflows/make-release.yml
vendored
2
.github/workflows/make-release.yml
vendored
@ -28,4 +28,4 @@ jobs:
|
|||||||
# TODO: generate a nice little doc for the release text like we do for the
|
# TODO: generate a nice little doc for the release text like we do for the
|
||||||
# cli repo.
|
# cli repo.
|
||||||
- name: Create a Release
|
- name: Create a Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
|
2
.github/workflows/ruff.yml
vendored
2
.github/workflows/ruff.yml
vendored
@ -35,4 +35,4 @@ jobs:
|
|||||||
- name: Run ruff
|
- name: Run ruff
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
poetry run ruff check --format=github .
|
poetry run ruff check --output-format=github .
|
||||||
|
3
.github/workflows/update-spec-for-docs.yml
vendored
3
.github/workflows/update-spec-for-docs.yml
vendored
@ -67,6 +67,9 @@ jobs:
|
|||||||
gh pr create --title "Update lang spec docs for python" \
|
gh pr create --title "Update lang spec docs for python" \
|
||||||
--body "Updating the generated docs for python" \
|
--body "Updating the generated docs for python" \
|
||||||
--head "$NEW_BRANCH" \
|
--head "$NEW_BRANCH" \
|
||||||
|
--reviewer jessfraz \
|
||||||
|
--reviewer irev-dev \
|
||||||
|
--reviewer franknoirot \
|
||||||
--base main || true
|
--base main || true
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||||
|
@ -154,10 +154,19 @@ class WebSocket:
|
|||||||
self.ws = sync(
|
self.ws = sync(
|
||||||
{% for arg in args %}
|
{% for arg in args %}
|
||||||
{% if arg.in_query %}
|
{% if arg.in_query %}
|
||||||
|
{% if arg.is_optional == False %}
|
||||||
{{arg.name}},
|
{{arg.name}},
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
client=client,
|
client=client,
|
||||||
|
{% for arg in args %}
|
||||||
|
{% if arg.in_query %}
|
||||||
|
{% if arg.is_optional %}
|
||||||
|
{{arg.name}}={{arg.name}},
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
)
|
)
|
||||||
|
|
||||||
def __enter__(self,
|
def __enter__(self,
|
||||||
|
@ -478,6 +478,11 @@ from kittycad.types import Response
|
|||||||
for endpoint_ref in endpoint_refs:
|
for endpoint_ref in endpoint_refs:
|
||||||
if endpoint_ref == "Error":
|
if endpoint_ref == "Error":
|
||||||
continue
|
continue
|
||||||
|
# For some reason, PrivacySettings is showing up twice so we want to skip
|
||||||
|
# it here. Obviously this is a hack and we should fix the root cause.
|
||||||
|
# When this happens again with another struct there might be a more obvious
|
||||||
|
# solution, but alas, I am lazy.
|
||||||
|
if endpoint_ref != "PrivacySettings" and endpoint_ref != "List[str]":
|
||||||
example_imports = example_imports + (
|
example_imports = example_imports + (
|
||||||
"""from kittycad.models import """
|
"""from kittycad.models import """
|
||||||
+ endpoint_ref.replace("List[", "").replace("]", "")
|
+ endpoint_ref.replace("List[", "").replace("]", "")
|
||||||
@ -841,6 +846,20 @@ async def test_"""
|
|||||||
"\t\t\tfor item in response.json()\n"
|
"\t\t\tfor item in response.json()\n"
|
||||||
)
|
)
|
||||||
parse_response.write("\t\t]\n")
|
parse_response.write("\t\t]\n")
|
||||||
|
elif "type" in items:
|
||||||
|
if items["type"] == "string":
|
||||||
|
parse_response.write(
|
||||||
|
"\t\tresponse_"
|
||||||
|
+ response_code
|
||||||
|
+ " = [\n"
|
||||||
|
)
|
||||||
|
parse_response.write("\t\t\tstr(**item)\n")
|
||||||
|
parse_response.write(
|
||||||
|
"\t\t\tfor item in response.json()\n"
|
||||||
|
)
|
||||||
|
parse_response.write("\t\t]\n")
|
||||||
|
else:
|
||||||
|
raise Exception("Unknown array type", items)
|
||||||
else:
|
else:
|
||||||
raise Exception("Unknown array type")
|
raise Exception("Unknown array type")
|
||||||
elif json["type"] == "string":
|
elif json["type"] == "string":
|
||||||
@ -1031,7 +1050,7 @@ def generateType(path: str, name: str, schema: dict, data: dict):
|
|||||||
elif type_name == "integer":
|
elif type_name == "integer":
|
||||||
generateIntegerType(file_path, name, schema, type_name)
|
generateIntegerType(file_path, name, schema, type_name)
|
||||||
elif type_name == "number":
|
elif type_name == "number":
|
||||||
generateIntegerType(file_path, name, schema, type_name)
|
generateFloatType(file_path, name, schema, type_name)
|
||||||
elif type_name == "string":
|
elif type_name == "string":
|
||||||
generateStringType(file_path, name, schema, type_name)
|
generateStringType(file_path, name, schema, type_name)
|
||||||
else:
|
else:
|
||||||
@ -1251,7 +1270,7 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict):
|
|||||||
f.write("from ." + camel_to_snake(ref_name) + " import " + ref_name + "\n")
|
f.write("from ." + camel_to_snake(ref_name) + " import " + ref_name + "\n")
|
||||||
all_options.append(ref_name)
|
all_options.append(ref_name)
|
||||||
|
|
||||||
if isNestedObjectOneOf(schema):
|
if isNestedObjectAnyOf(schema):
|
||||||
# We want to write each of the nested objects.
|
# We want to write each of the nested objects.
|
||||||
for any_of in schema["anyOf"]:
|
for any_of in schema["anyOf"]:
|
||||||
# Get the nested object.
|
# Get the nested object.
|
||||||
@ -1307,6 +1326,47 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict):
|
|||||||
f.write(object_code)
|
f.write(object_code)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
all_options.append(object_name)
|
all_options.append(object_name)
|
||||||
|
else:
|
||||||
|
# We want to write each of the nested objects.
|
||||||
|
for any_of in schema["anyOf"]:
|
||||||
|
# Get the nested object.
|
||||||
|
if "properties" in any_of:
|
||||||
|
for prop_name in any_of["properties"]:
|
||||||
|
nested_object = any_of["properties"][prop_name]
|
||||||
|
if nested_object == {}:
|
||||||
|
f.write("from typing import Any\n")
|
||||||
|
f.write(prop_name + " = Any\n")
|
||||||
|
f.write("\n")
|
||||||
|
all_options.append(prop_name)
|
||||||
|
elif "$ref" in nested_object:
|
||||||
|
ref = nested_object["$ref"]
|
||||||
|
ref_name = ref[ref.rfind("/") + 1 :]
|
||||||
|
f.write(
|
||||||
|
"from ."
|
||||||
|
+ camel_to_snake(ref_name)
|
||||||
|
+ " import "
|
||||||
|
+ ref_name
|
||||||
|
+ "\n"
|
||||||
|
)
|
||||||
|
f.write("\n")
|
||||||
|
if prop_name != ref_name:
|
||||||
|
f.write(prop_name + " = " + ref_name + "\n")
|
||||||
|
f.write("\n")
|
||||||
|
all_options.append(prop_name)
|
||||||
|
else:
|
||||||
|
object_code = generateObjectTypeCode(
|
||||||
|
prop_name, nested_object, "object", data, None, None
|
||||||
|
)
|
||||||
|
f.write(object_code)
|
||||||
|
f.write("\n")
|
||||||
|
all_options.append(prop_name)
|
||||||
|
elif "type" in any_of and any_of["type"] == "string":
|
||||||
|
enum_code = generateEnumTypeCode(
|
||||||
|
any_of["enum"][0], any_of, "string", []
|
||||||
|
)
|
||||||
|
f.write(enum_code)
|
||||||
|
f.write("\n")
|
||||||
|
all_options.append(any_of["enum"][0])
|
||||||
|
|
||||||
# Write the sum type.
|
# Write the sum type.
|
||||||
description = getAnyOfDescription(schema)
|
description = getAnyOfDescription(schema)
|
||||||
@ -1577,7 +1637,7 @@ def generateObjectTypeCode(
|
|||||||
|
|
||||||
description = ""
|
description = ""
|
||||||
if "description" in schema:
|
if "description" in schema:
|
||||||
description = schema["description"]
|
description = schema["description"].replace('"', '\\"')
|
||||||
|
|
||||||
imports = []
|
imports = []
|
||||||
refs = getRefs(schema)
|
refs = getRefs(schema)
|
||||||
@ -1677,8 +1737,9 @@ def getRefs(schema: dict) -> List[str]:
|
|||||||
# do nothing
|
# do nothing
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
logging.error("unsupported type: ", schema)
|
# This is likely an empty object like above but with a description
|
||||||
raise Exception("unsupported type: ", schema)
|
# so we will just skip it.
|
||||||
|
pass
|
||||||
elif type_name == "array":
|
elif type_name == "array":
|
||||||
if "items" in schema:
|
if "items" in schema:
|
||||||
schema_refs = getRefs(schema["items"])
|
schema_refs = getRefs(schema["items"])
|
||||||
@ -1722,8 +1783,13 @@ def getEndpointRefs(endpoint: dict, data: dict) -> List[str]:
|
|||||||
if "$ref" in items:
|
if "$ref" in items:
|
||||||
ref = items["$ref"].replace("#/components/schemas/", "")
|
ref = items["$ref"].replace("#/components/schemas/", "")
|
||||||
refs.append("List[" + ref + "]")
|
refs.append("List[" + ref + "]")
|
||||||
|
elif "type" in items:
|
||||||
|
if items["type"] == "string":
|
||||||
|
refs.append("List[str]")
|
||||||
else:
|
else:
|
||||||
raise Exception("Unknown array type")
|
raise Exception("Unknown array type", items)
|
||||||
|
else:
|
||||||
|
raise Exception("Unknown array type", items)
|
||||||
elif json["type"] == "string":
|
elif json["type"] == "string":
|
||||||
refs.append("str")
|
refs.append("str")
|
||||||
elif (
|
elif (
|
||||||
@ -1801,6 +1867,11 @@ def getRequestBodyRefs(endpoint: dict) -> List[str]:
|
|||||||
if "$ref" in form:
|
if "$ref" in form:
|
||||||
ref = form["$ref"].replace("#/components/schemas/", "")
|
ref = form["$ref"].replace("#/components/schemas/", "")
|
||||||
refs.append(ref)
|
refs.append(ref)
|
||||||
|
elif content_type == "multipart/form-data":
|
||||||
|
form = content[content_type]["schema"]
|
||||||
|
if "$ref" in form:
|
||||||
|
ref = form["$ref"].replace("#/components/schemas/", "")
|
||||||
|
refs.append(ref)
|
||||||
else:
|
else:
|
||||||
# Throw an error for an unsupported content type.
|
# Throw an error for an unsupported content type.
|
||||||
logging.error("content: ", content)
|
logging.error("content: ", content)
|
||||||
@ -1839,6 +1910,15 @@ def getRequestBodyTypeSchema(
|
|||||||
elif form != {}:
|
elif form != {}:
|
||||||
logging.error("not a ref: ", form)
|
logging.error("not a ref: ", form)
|
||||||
raise Exception("not a ref")
|
raise Exception("not a ref")
|
||||||
|
elif content_type == "multipart/form-data":
|
||||||
|
form = content[content_type]["schema"]
|
||||||
|
if "$ref" in form:
|
||||||
|
ref = form["$ref"].replace("#/components/schemas/", "")
|
||||||
|
type_schema = data["components"]["schemas"][ref]
|
||||||
|
return ref, type_schema
|
||||||
|
elif form != {}:
|
||||||
|
type_schema = form
|
||||||
|
return None, type_schema
|
||||||
else:
|
else:
|
||||||
logging.error("unsupported content type: ", content_type)
|
logging.error("unsupported content type: ", content_type)
|
||||||
raise Exception("unsupported content type")
|
raise Exception("unsupported content type")
|
||||||
@ -1914,6 +1994,40 @@ def getOneOfRefType(schema: dict) -> str:
|
|||||||
raise Exception("Cannot get oneOf ref type for schema: ", schema)
|
raise Exception("Cannot get oneOf ref type for schema: ", schema)
|
||||||
|
|
||||||
|
|
||||||
|
def isNestedObjectAnyOf(schema: dict) -> bool:
|
||||||
|
if "anyOf" not in schema:
|
||||||
|
return False
|
||||||
|
|
||||||
|
is_nested_object = False
|
||||||
|
for any_of in schema["anyOf"]:
|
||||||
|
# Check if each are an object w 1 property in it.
|
||||||
|
if (
|
||||||
|
"type" in any_of
|
||||||
|
and any_of["type"] == "object"
|
||||||
|
and "properties" in any_of
|
||||||
|
and len(any_of["properties"]) == 1
|
||||||
|
):
|
||||||
|
for prop_name in any_of["properties"]:
|
||||||
|
nested_object = any_of["properties"][prop_name]
|
||||||
|
if "type" in nested_object and nested_object["type"] == "object":
|
||||||
|
is_nested_object = True
|
||||||
|
else:
|
||||||
|
is_nested_object = False
|
||||||
|
break
|
||||||
|
elif (
|
||||||
|
"type" in any_of
|
||||||
|
and any_of["type"] == "string"
|
||||||
|
and "enum" in any_of
|
||||||
|
and len(any_of["enum"]) == 1
|
||||||
|
):
|
||||||
|
is_nested_object = True
|
||||||
|
else:
|
||||||
|
is_nested_object = False
|
||||||
|
break
|
||||||
|
|
||||||
|
return is_nested_object
|
||||||
|
|
||||||
|
|
||||||
def isNestedObjectOneOf(schema: dict) -> bool:
|
def isNestedObjectOneOf(schema: dict) -> bool:
|
||||||
if "oneOf" not in schema:
|
if "oneOf" not in schema:
|
||||||
return False
|
return False
|
||||||
@ -1922,7 +2036,8 @@ def isNestedObjectOneOf(schema: dict) -> bool:
|
|||||||
for one_of in schema["oneOf"]:
|
for one_of in schema["oneOf"]:
|
||||||
# Check if each are an object w 1 property in it.
|
# Check if each are an object w 1 property in it.
|
||||||
if (
|
if (
|
||||||
one_of["type"] == "object"
|
"type" in one_of
|
||||||
|
and one_of["type"] == "object"
|
||||||
and "properties" in one_of
|
and "properties" in one_of
|
||||||
and len(one_of["properties"]) == 1
|
and len(one_of["properties"]) == 1
|
||||||
):
|
):
|
||||||
@ -1934,7 +2049,10 @@ def isNestedObjectOneOf(schema: dict) -> bool:
|
|||||||
is_nested_object = False
|
is_nested_object = False
|
||||||
break
|
break
|
||||||
elif (
|
elif (
|
||||||
one_of["type"] == "string" and "enum" in one_of and len(one_of["enum"]) == 1
|
"type" in one_of
|
||||||
|
and one_of["type"] == "string"
|
||||||
|
and "enum" in one_of
|
||||||
|
and len(one_of["enum"]) == 1
|
||||||
):
|
):
|
||||||
is_nested_object = True
|
is_nested_object = True
|
||||||
else:
|
else:
|
||||||
|
@ -20,7 +20,7 @@ poetry run python generate/generate.py
|
|||||||
|
|
||||||
# Format and lint.
|
# Format and lint.
|
||||||
poetry run isort .
|
poetry run isort .
|
||||||
poetry run black . generate/generate.py docs/conf.py kittycad/client_test.py kittycad/examples_test.py
|
poetry run black . generate/generate.py docs/conf.py kittycad/client_test.py kittycad/examples_test.py kittycad/models/*.py kittycad/api/*.py kittycad/api/*/*.py
|
||||||
poetry run ruff check --fix .
|
poetry run ruff check --fix .
|
||||||
poetry run mypy . || true
|
poetry run mypy . || true
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -79,6 +79,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[KclCodeCompletionResponse, Error]]:
|
) -> Optional[Union[KclCodeCompletionResponse, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
body=body,
|
body=body,
|
||||||
client=client,
|
client=client,
|
||||||
@ -106,6 +107,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[KclCodeCompletionResponse, Error]]:
|
) -> Optional[Union[KclCodeCompletionResponse, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
body=body,
|
body=body,
|
||||||
|
@ -20,6 +20,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if feedback is not None:
|
if feedback is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&feedback=" + str(feedback)
|
url = url + "&feedback=" + str(feedback)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -22,24 +22,28 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
url = url + "?sort_by=" + str(sort_by)
|
url = url + "?sort_by=" + str(sort_by)
|
||||||
|
|
||||||
if no_models is not None:
|
if no_models is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&no_models=" + str(no_models)
|
url = url + "&no_models=" + str(no_models)
|
||||||
else:
|
else:
|
||||||
|
@ -19,6 +19,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if group_by is not None:
|
if group_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&group_by=" + str(group_by)
|
url = url + "&group_by=" + str(group_by)
|
||||||
else:
|
else:
|
||||||
|
@ -35,9 +35,7 @@ def _get_kwargs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _parse_response(
|
def _parse_response(*, response: httpx.Response) -> Optional[
|
||||||
*, response: httpx.Response
|
|
||||||
) -> Optional[
|
|
||||||
Union[
|
Union[
|
||||||
FileConversion,
|
FileConversion,
|
||||||
FileCenterOfMass,
|
FileCenterOfMass,
|
||||||
@ -123,9 +121,7 @@ def _parse_response(
|
|||||||
return Error(**response.json())
|
return Error(**response.json())
|
||||||
|
|
||||||
|
|
||||||
def _build_response(
|
def _build_response(*, response: httpx.Response) -> Response[
|
||||||
*, response: httpx.Response
|
|
||||||
) -> Response[
|
|
||||||
Optional[
|
Optional[
|
||||||
Union[
|
Union[
|
||||||
FileConversion,
|
FileConversion,
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -23,18 +23,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -23,24 +23,28 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
url = url + "?sort_by=" + str(sort_by)
|
url = url + "?sort_by=" + str(sort_by)
|
||||||
|
|
||||||
if status is not None:
|
if status is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&status=" + str(status)
|
url = url + "&status=" + str(status)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -18,6 +18,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if label is not None:
|
if label is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&label=" + str(label)
|
url = url + "&label=" + str(label)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -22,6 +22,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if output is not None:
|
if output is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output=" + str(output)
|
url = url + "&output=" + str(output)
|
||||||
else:
|
else:
|
||||||
@ -40,9 +41,9 @@ def _get_kwargs(
|
|||||||
|
|
||||||
|
|
||||||
def _parse_response(*, response: httpx.Response) -> Optional[Union[CodeOutput, Error]]:
|
def _parse_response(*, response: httpx.Response) -> Optional[Union[CodeOutput, Error]]:
|
||||||
if response.status_code == 200:
|
if response.status_code == 201:
|
||||||
response_200 = CodeOutput(**response.json())
|
response_201 = CodeOutput(**response.json())
|
||||||
return response_200
|
return response_201
|
||||||
if response.status_code == 400:
|
if response.status_code == 400:
|
||||||
response_4XX = Error(**response.json())
|
response_4XX = Error(**response.json())
|
||||||
return response_4XX
|
return response_4XX
|
||||||
@ -92,6 +93,7 @@ def sync(
|
|||||||
client: Client,
|
client: Client,
|
||||||
output: Optional[str] = None,
|
output: Optional[str] = None,
|
||||||
) -> Optional[Union[CodeOutput, Error]]:
|
) -> Optional[Union[CodeOutput, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
lang=lang,
|
lang=lang,
|
||||||
output=output,
|
output=output,
|
||||||
@ -127,6 +129,7 @@ async def asyncio(
|
|||||||
client: Client,
|
client: Client,
|
||||||
output: Optional[str] = None,
|
output: Optional[str] = None,
|
||||||
) -> Optional[Union[CodeOutput, Error]]:
|
) -> Optional[Union[CodeOutput, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
lang=lang,
|
lang=lang,
|
||||||
|
@ -22,12 +22,14 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if output_unit is not None:
|
if output_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output_unit=" + str(output_unit)
|
url = url + "&output_unit=" + str(output_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?output_unit=" + str(output_unit)
|
url = url + "?output_unit=" + str(output_unit)
|
||||||
|
|
||||||
if src_format is not None:
|
if src_format is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&src_format=" + str(src_format)
|
url = url + "&src_format=" + str(src_format)
|
||||||
else:
|
else:
|
||||||
|
@ -25,24 +25,28 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if material_mass is not None:
|
if material_mass is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&material_mass=" + str(material_mass)
|
url = url + "&material_mass=" + str(material_mass)
|
||||||
else:
|
else:
|
||||||
url = url + "?material_mass=" + str(material_mass)
|
url = url + "?material_mass=" + str(material_mass)
|
||||||
|
|
||||||
if material_mass_unit is not None:
|
if material_mass_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&material_mass_unit=" + str(material_mass_unit)
|
url = url + "&material_mass_unit=" + str(material_mass_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?material_mass_unit=" + str(material_mass_unit)
|
url = url + "?material_mass_unit=" + str(material_mass_unit)
|
||||||
|
|
||||||
if output_unit is not None:
|
if output_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output_unit=" + str(output_unit)
|
url = url + "&output_unit=" + str(output_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?output_unit=" + str(output_unit)
|
url = url + "?output_unit=" + str(output_unit)
|
||||||
|
|
||||||
if src_format is not None:
|
if src_format is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&src_format=" + str(src_format)
|
url = url + "&src_format=" + str(src_format)
|
||||||
else:
|
else:
|
||||||
|
@ -25,24 +25,28 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if material_density is not None:
|
if material_density is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&material_density=" + str(material_density)
|
url = url + "&material_density=" + str(material_density)
|
||||||
else:
|
else:
|
||||||
url = url + "?material_density=" + str(material_density)
|
url = url + "?material_density=" + str(material_density)
|
||||||
|
|
||||||
if material_density_unit is not None:
|
if material_density_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&material_density_unit=" + str(material_density_unit)
|
url = url + "&material_density_unit=" + str(material_density_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?material_density_unit=" + str(material_density_unit)
|
url = url + "?material_density_unit=" + str(material_density_unit)
|
||||||
|
|
||||||
if output_unit is not None:
|
if output_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output_unit=" + str(output_unit)
|
url = url + "&output_unit=" + str(output_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?output_unit=" + str(output_unit)
|
url = url + "?output_unit=" + str(output_unit)
|
||||||
|
|
||||||
if src_format is not None:
|
if src_format is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&src_format=" + str(src_format)
|
url = url + "&src_format=" + str(src_format)
|
||||||
else:
|
else:
|
||||||
|
@ -22,12 +22,14 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if output_unit is not None:
|
if output_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output_unit=" + str(output_unit)
|
url = url + "&output_unit=" + str(output_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?output_unit=" + str(output_unit)
|
url = url + "?output_unit=" + str(output_unit)
|
||||||
|
|
||||||
if src_format is not None:
|
if src_format is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&src_format=" + str(src_format)
|
url = url + "&src_format=" + str(src_format)
|
||||||
else:
|
else:
|
||||||
|
@ -22,12 +22,14 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if output_unit is not None:
|
if output_unit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&output_unit=" + str(output_unit)
|
url = url + "&output_unit=" + str(output_unit)
|
||||||
else:
|
else:
|
||||||
url = url + "?output_unit=" + str(output_unit)
|
url = url + "?output_unit=" + str(output_unit)
|
||||||
|
|
||||||
if src_format is not None:
|
if src_format is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&src_format=" + str(src_format)
|
url = url + "&src_format=" + str(src_format)
|
||||||
else:
|
else:
|
||||||
|
@ -79,6 +79,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[VerificationTokenResponse, Error]]:
|
) -> Optional[Union[VerificationTokenResponse, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
body=body,
|
body=body,
|
||||||
client=client,
|
client=client,
|
||||||
@ -106,6 +107,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[VerificationTokenResponse, Error]]:
|
) -> Optional[Union[VerificationTokenResponse, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
body=body,
|
body=body,
|
||||||
|
@ -19,18 +19,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if callback_url is not None:
|
if callback_url is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&callback_url=" + str(callback_url)
|
url = url + "&callback_url=" + str(callback_url)
|
||||||
else:
|
else:
|
||||||
url = url + "?callback_url=" + str(callback_url)
|
url = url + "?callback_url=" + str(callback_url)
|
||||||
|
|
||||||
if email is not None:
|
if email is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&email=" + str(email)
|
url = url + "&email=" + str(email)
|
||||||
else:
|
else:
|
||||||
url = url + "?email=" + str(email)
|
url = url + "?email=" + str(email)
|
||||||
|
|
||||||
if token is not None:
|
if token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&token=" + str(token)
|
url = url + "&token=" + str(token)
|
||||||
else:
|
else:
|
||||||
@ -96,6 +99,7 @@ def sync(
|
|||||||
client: Client,
|
client: Client,
|
||||||
callback_url: Optional[str] = None,
|
callback_url: Optional[str] = None,
|
||||||
) -> Optional[Error]:
|
) -> Optional[Error]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
callback_url=callback_url,
|
callback_url=callback_url,
|
||||||
email=email,
|
email=email,
|
||||||
@ -131,6 +135,7 @@ async def asyncio(
|
|||||||
client: Client,
|
client: Client,
|
||||||
callback_url: Optional[str] = None,
|
callback_url: Optional[str] = None,
|
||||||
) -> Optional[Error]:
|
) -> Optional[Error]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
callback_url=callback_url,
|
callback_url=callback_url,
|
||||||
|
@ -20,6 +20,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if callback_url is not None:
|
if callback_url is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&callback_url=" + str(callback_url)
|
url = url + "&callback_url=" + str(callback_url)
|
||||||
else:
|
else:
|
||||||
|
@ -77,6 +77,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Error]:
|
) -> Optional[Error]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
provider_id=provider_id,
|
provider_id=provider_id,
|
||||||
body=body,
|
body=body,
|
||||||
@ -108,6 +109,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Error]:
|
) -> Optional[Error]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
provider_id=provider_id,
|
provider_id=provider_id,
|
||||||
|
104
kittycad/api/meta/create_debug_uploads.py
Normal file
104
kittycad/api/meta/create_debug_uploads.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
from typing import Any, Dict, List, Optional, Union
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
|
||||||
|
from ...client import Client
|
||||||
|
from ...models.error import Error
|
||||||
|
from ...types import Response
|
||||||
|
|
||||||
|
|
||||||
|
def _get_kwargs(
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
url = "{}/debug/uploads".format(
|
||||||
|
client.base_url,
|
||||||
|
) # noqa: E501
|
||||||
|
|
||||||
|
headers: Dict[str, Any] = client.get_headers()
|
||||||
|
cookies: Dict[str, Any] = client.get_cookies()
|
||||||
|
|
||||||
|
return {
|
||||||
|
"url": url,
|
||||||
|
"headers": headers,
|
||||||
|
"cookies": cookies,
|
||||||
|
"timeout": client.get_timeout(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_response(*, response: httpx.Response) -> Optional[Union[List[str], Error]]:
|
||||||
|
if response.status_code == 201:
|
||||||
|
response_201 = [str(**item) for item in response.json()]
|
||||||
|
return response_201
|
||||||
|
if response.status_code == 400:
|
||||||
|
response_4XX = Error(**response.json())
|
||||||
|
return response_4XX
|
||||||
|
if response.status_code == 500:
|
||||||
|
response_5XX = Error(**response.json())
|
||||||
|
return response_5XX
|
||||||
|
return Error(**response.json())
|
||||||
|
|
||||||
|
|
||||||
|
def _build_response(
|
||||||
|
*, response: httpx.Response
|
||||||
|
) -> Response[Optional[Union[List[str], Error]]]:
|
||||||
|
return Response(
|
||||||
|
status_code=response.status_code,
|
||||||
|
content=response.content,
|
||||||
|
headers=response.headers,
|
||||||
|
parsed=_parse_response(response=response),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def sync_detailed(
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Union[List[str], Error]]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
response = httpx.post(
|
||||||
|
verify=client.verify_ssl,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
def sync(
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Union[List[str], Error]]:
|
||||||
|
"""Do NOT send files here that you don't want to be public.""" # noqa: E501
|
||||||
|
|
||||||
|
return sync_detailed(
|
||||||
|
client=client,
|
||||||
|
).parsed
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio_detailed(
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Union[List[str], Error]]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||||
|
response = await _client.post(**kwargs)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio(
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Union[List[str], Error]]:
|
||||||
|
"""Do NOT send files here that you don't want to be public.""" # noqa: E501
|
||||||
|
|
||||||
|
return (
|
||||||
|
await asyncio_detailed(
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
).parsed
|
111
kittycad/api/meta/create_event.py
Normal file
111
kittycad/api/meta/create_event.py
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
|
||||||
|
from ...client import Client
|
||||||
|
from ...models.error import Error
|
||||||
|
from ...models.event import Event
|
||||||
|
from ...types import Response
|
||||||
|
|
||||||
|
|
||||||
|
def _get_kwargs(
|
||||||
|
body: Event,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
url = "{}/events".format(
|
||||||
|
client.base_url,
|
||||||
|
) # noqa: E501
|
||||||
|
|
||||||
|
headers: Dict[str, Any] = client.get_headers()
|
||||||
|
cookies: Dict[str, Any] = client.get_cookies()
|
||||||
|
|
||||||
|
return {
|
||||||
|
"url": url,
|
||||||
|
"headers": headers,
|
||||||
|
"cookies": cookies,
|
||||||
|
"timeout": client.get_timeout(),
|
||||||
|
"content": body.model_dump_json(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_response(*, response: httpx.Response) -> Optional[Error]:
|
||||||
|
return None
|
||||||
|
if response.status_code == 400:
|
||||||
|
response_4XX = Error(**response.json())
|
||||||
|
return response_4XX
|
||||||
|
if response.status_code == 500:
|
||||||
|
response_5XX = Error(**response.json())
|
||||||
|
return response_5XX
|
||||||
|
return Error(**response.json())
|
||||||
|
|
||||||
|
|
||||||
|
def _build_response(*, response: httpx.Response) -> Response[Optional[Error]]:
|
||||||
|
return Response(
|
||||||
|
status_code=response.status_code,
|
||||||
|
content=response.content,
|
||||||
|
headers=response.headers,
|
||||||
|
parsed=_parse_response(response=response),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def sync_detailed(
|
||||||
|
body: Event,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Error]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
response = httpx.post(
|
||||||
|
verify=client.verify_ssl,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
def sync(
|
||||||
|
body: Event,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Error]:
|
||||||
|
"""We collect anonymous telemetry data for improving our product.""" # noqa: E501
|
||||||
|
|
||||||
|
return sync_detailed(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
).parsed
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio_detailed(
|
||||||
|
body: Event,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Error]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||||
|
response = await _client.post(**kwargs)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio(
|
||||||
|
body: Event,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Error]:
|
||||||
|
"""We collect anonymous telemetry data for improving our product.""" # noqa: E501
|
||||||
|
|
||||||
|
return (
|
||||||
|
await asyncio_detailed(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
).parsed
|
@ -71,6 +71,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[IpAddrInfo, Error]]:
|
) -> Optional[Union[IpAddrInfo, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
).parsed
|
).parsed
|
||||||
@ -94,6 +95,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[IpAddrInfo, Error]]:
|
) -> Optional[Union[IpAddrInfo, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
|
@ -70,6 +70,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[dict, Error]]:
|
) -> Optional[Union[dict, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
).parsed
|
).parsed
|
||||||
@ -93,6 +94,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[dict, Error]]:
|
) -> Optional[Union[dict, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
|
@ -71,6 +71,7 @@ def sync(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[Pong, Error]]:
|
) -> Optional[Union[Pong, Error]]:
|
||||||
|
|
||||||
return sync_detailed(
|
return sync_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
).parsed
|
).parsed
|
||||||
@ -94,6 +95,7 @@ async def asyncio(
|
|||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
) -> Optional[Union[Pong, Error]]:
|
) -> Optional[Union[Pong, Error]]:
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await asyncio_detailed(
|
await asyncio_detailed(
|
||||||
client=client,
|
client=client,
|
||||||
|
@ -1,51 +1,81 @@
|
|||||||
import json
|
import json
|
||||||
from typing import Any, Dict, Iterator
|
from typing import Any, Dict, Iterator, Optional
|
||||||
|
|
||||||
import bson
|
import bson
|
||||||
from websockets.client import WebSocketClientProtocol, connect as ws_connect_async
|
from websockets.client import WebSocketClientProtocol, connect as ws_connect_async
|
||||||
from websockets.sync.client import ClientConnection, connect as ws_connect
|
from websockets.sync.client import ClientConnection, connect as ws_connect
|
||||||
|
|
||||||
from ...client import Client
|
from ...client import Client
|
||||||
|
from ...models.post_effect_type import PostEffectType
|
||||||
from ...models.web_socket_request import WebSocketRequest
|
from ...models.web_socket_request import WebSocketRequest
|
||||||
from ...models.web_socket_response import WebSocketResponse
|
from ...models.web_socket_response import WebSocketResponse
|
||||||
|
|
||||||
|
|
||||||
def _get_kwargs(
|
def _get_kwargs(
|
||||||
fps: int,
|
fps: int,
|
||||||
|
post_effect: PostEffectType,
|
||||||
|
show_grid: bool,
|
||||||
unlocked_framerate: bool,
|
unlocked_framerate: bool,
|
||||||
video_res_height: int,
|
video_res_height: int,
|
||||||
video_res_width: int,
|
video_res_width: int,
|
||||||
webrtc: bool,
|
webrtc: bool,
|
||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
|
pool: Optional[str] = None,
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
url = "{}/ws/modeling/commands".format(client.base_url) # noqa: E501
|
url = "{}/ws/modeling/commands".format(client.base_url) # noqa: E501
|
||||||
|
|
||||||
if fps is not None:
|
if fps is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&fps=" + str(fps)
|
url = url + "&fps=" + str(fps)
|
||||||
else:
|
else:
|
||||||
url = url + "?fps=" + str(fps)
|
url = url + "?fps=" + str(fps)
|
||||||
|
|
||||||
|
if pool is not None:
|
||||||
|
|
||||||
|
if "?" in url:
|
||||||
|
url = url + "&pool=" + str(pool)
|
||||||
|
else:
|
||||||
|
url = url + "?pool=" + str(pool)
|
||||||
|
|
||||||
|
if post_effect is not None:
|
||||||
|
|
||||||
|
if "?" in url:
|
||||||
|
url = url + "&post_effect=" + str(post_effect)
|
||||||
|
else:
|
||||||
|
url = url + "?post_effect=" + str(post_effect)
|
||||||
|
|
||||||
|
if show_grid is not None:
|
||||||
|
|
||||||
|
if "?" in url:
|
||||||
|
url = url + "&show_grid=" + str(show_grid).lower()
|
||||||
|
else:
|
||||||
|
url = url + "?show_grid=" + str(show_grid).lower()
|
||||||
|
|
||||||
if unlocked_framerate is not None:
|
if unlocked_framerate is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&unlocked_framerate=" + str(unlocked_framerate).lower()
|
url = url + "&unlocked_framerate=" + str(unlocked_framerate).lower()
|
||||||
else:
|
else:
|
||||||
url = url + "?unlocked_framerate=" + str(unlocked_framerate).lower()
|
url = url + "?unlocked_framerate=" + str(unlocked_framerate).lower()
|
||||||
|
|
||||||
if video_res_height is not None:
|
if video_res_height is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&video_res_height=" + str(video_res_height)
|
url = url + "&video_res_height=" + str(video_res_height)
|
||||||
else:
|
else:
|
||||||
url = url + "?video_res_height=" + str(video_res_height)
|
url = url + "?video_res_height=" + str(video_res_height)
|
||||||
|
|
||||||
if video_res_width is not None:
|
if video_res_width is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&video_res_width=" + str(video_res_width)
|
url = url + "&video_res_width=" + str(video_res_width)
|
||||||
else:
|
else:
|
||||||
url = url + "?video_res_width=" + str(video_res_width)
|
url = url + "?video_res_width=" + str(video_res_width)
|
||||||
|
|
||||||
if webrtc is not None:
|
if webrtc is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&webrtc=" + str(webrtc).lower()
|
url = url + "&webrtc=" + str(webrtc).lower()
|
||||||
else:
|
else:
|
||||||
@ -64,17 +94,23 @@ def _get_kwargs(
|
|||||||
|
|
||||||
def sync(
|
def sync(
|
||||||
fps: int,
|
fps: int,
|
||||||
|
post_effect: PostEffectType,
|
||||||
|
show_grid: bool,
|
||||||
unlocked_framerate: bool,
|
unlocked_framerate: bool,
|
||||||
video_res_height: int,
|
video_res_height: int,
|
||||||
video_res_width: int,
|
video_res_width: int,
|
||||||
webrtc: bool,
|
webrtc: bool,
|
||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
|
pool: Optional[str] = None,
|
||||||
) -> ClientConnection:
|
) -> ClientConnection:
|
||||||
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
||||||
|
|
||||||
kwargs = _get_kwargs(
|
kwargs = _get_kwargs(
|
||||||
fps=fps,
|
fps=fps,
|
||||||
|
pool=pool,
|
||||||
|
post_effect=post_effect,
|
||||||
|
show_grid=show_grid,
|
||||||
unlocked_framerate=unlocked_framerate,
|
unlocked_framerate=unlocked_framerate,
|
||||||
video_res_height=video_res_height,
|
video_res_height=video_res_height,
|
||||||
video_res_width=video_res_width,
|
video_res_width=video_res_width,
|
||||||
@ -87,17 +123,23 @@ def sync(
|
|||||||
|
|
||||||
async def asyncio(
|
async def asyncio(
|
||||||
fps: int,
|
fps: int,
|
||||||
|
post_effect: PostEffectType,
|
||||||
|
show_grid: bool,
|
||||||
unlocked_framerate: bool,
|
unlocked_framerate: bool,
|
||||||
video_res_height: int,
|
video_res_height: int,
|
||||||
video_res_width: int,
|
video_res_width: int,
|
||||||
webrtc: bool,
|
webrtc: bool,
|
||||||
*,
|
*,
|
||||||
client: Client,
|
client: Client,
|
||||||
|
pool: Optional[str] = None,
|
||||||
) -> WebSocketClientProtocol:
|
) -> WebSocketClientProtocol:
|
||||||
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
||||||
|
|
||||||
kwargs = _get_kwargs(
|
kwargs = _get_kwargs(
|
||||||
fps=fps,
|
fps=fps,
|
||||||
|
pool=pool,
|
||||||
|
post_effect=post_effect,
|
||||||
|
show_grid=show_grid,
|
||||||
unlocked_framerate=unlocked_framerate,
|
unlocked_framerate=unlocked_framerate,
|
||||||
video_res_height=video_res_height,
|
video_res_height=video_res_height,
|
||||||
video_res_width=video_res_width,
|
video_res_width=video_res_width,
|
||||||
@ -121,19 +163,25 @@ class WebSocket:
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
fps: int,
|
fps: int,
|
||||||
|
post_effect: PostEffectType,
|
||||||
|
show_grid: bool,
|
||||||
unlocked_framerate: bool,
|
unlocked_framerate: bool,
|
||||||
video_res_height: int,
|
video_res_height: int,
|
||||||
video_res_width: int,
|
video_res_width: int,
|
||||||
webrtc: bool,
|
webrtc: bool,
|
||||||
client: Client,
|
client: Client,
|
||||||
|
pool: Optional[str] = None,
|
||||||
):
|
):
|
||||||
self.ws = sync(
|
self.ws = sync(
|
||||||
fps,
|
fps,
|
||||||
|
post_effect,
|
||||||
|
show_grid,
|
||||||
unlocked_framerate,
|
unlocked_framerate,
|
||||||
video_res_height,
|
video_res_height,
|
||||||
video_res_width,
|
video_res_width,
|
||||||
webrtc,
|
webrtc,
|
||||||
client=client,
|
client=client,
|
||||||
|
pool=pool,
|
||||||
)
|
)
|
||||||
|
|
||||||
def __enter__(
|
def __enter__(
|
||||||
|
@ -23,24 +23,28 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
url = url + "?sort_by=" + str(sort_by)
|
url = url + "?sort_by=" + str(sort_by)
|
||||||
|
|
||||||
if role is not None:
|
if role is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&role=" + str(role)
|
url = url + "&role=" + str(role)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -18,6 +18,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if label is not None:
|
if label is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&label=" + str(label)
|
url = url + "&label=" + str(label)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,7 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&value=" + str(value)
|
url = url + "&value=" + str(value)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -21,18 +21,21 @@ def _get_kwargs(
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&limit=" + str(limit)
|
url = url + "&limit=" + str(limit)
|
||||||
else:
|
else:
|
||||||
url = url + "?limit=" + str(limit)
|
url = url + "?limit=" + str(limit)
|
||||||
|
|
||||||
if page_token is not None:
|
if page_token is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&page_token=" + str(page_token)
|
url = url + "&page_token=" + str(page_token)
|
||||||
else:
|
else:
|
||||||
url = url + "?page_token=" + str(page_token)
|
url = url + "?page_token=" + str(page_token)
|
||||||
|
|
||||||
if sort_by is not None:
|
if sort_by is not None:
|
||||||
|
|
||||||
if "?" in url:
|
if "?" in url:
|
||||||
url = url + "&sort_by=" + str(sort_by)
|
url = url + "&sort_by=" + str(sort_by)
|
||||||
else:
|
else:
|
||||||
|
@ -39,6 +39,7 @@ from .models import (
|
|||||||
ModelingCmd,
|
ModelingCmd,
|
||||||
ModelingCmdId,
|
ModelingCmdId,
|
||||||
Pong,
|
Pong,
|
||||||
|
PostEffectType,
|
||||||
System,
|
System,
|
||||||
TextToCad,
|
TextToCad,
|
||||||
TextToCadCreateBody,
|
TextToCadCreateBody,
|
||||||
@ -173,14 +174,14 @@ async def test_file_convert_stl_async():
|
|||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
# Get the fc.
|
# Get the fc.
|
||||||
result: Optional[
|
result: Optional[Union[FileConversion, Error]] = (
|
||||||
Union[FileConversion, Error]
|
await create_file_conversion.asyncio(
|
||||||
] = await create_file_conversion.asyncio(
|
|
||||||
client=client,
|
client=client,
|
||||||
body=content,
|
body=content,
|
||||||
src_format=FileImportFormat.STL,
|
src_format=FileImportFormat.STL,
|
||||||
output_format=FileExportFormat.OBJ,
|
output_format=FileExportFormat.OBJ,
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
assert isinstance(result, FileConversion)
|
assert isinstance(result, FileConversion)
|
||||||
|
|
||||||
@ -212,14 +213,14 @@ async def test_file_convert_obj_async():
|
|||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
# Get the fc.
|
# Get the fc.
|
||||||
result: Optional[
|
result: Optional[Union[FileConversion, Error]] = (
|
||||||
Union[FileConversion, Error]
|
await create_file_conversion.asyncio(
|
||||||
] = await create_file_conversion.asyncio(
|
|
||||||
client=client,
|
client=client,
|
||||||
body=content,
|
body=content,
|
||||||
src_format=FileImportFormat.OBJ,
|
src_format=FileImportFormat.OBJ,
|
||||||
output_format=FileExportFormat.STL,
|
output_format=FileExportFormat.STL,
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
assert isinstance(result, FileConversion)
|
assert isinstance(result, FileConversion)
|
||||||
|
|
||||||
@ -356,6 +357,8 @@ def test_ws_simple():
|
|||||||
with modeling_commands_ws.WebSocket(
|
with modeling_commands_ws.WebSocket(
|
||||||
client=client,
|
client=client,
|
||||||
fps=30,
|
fps=30,
|
||||||
|
show_grid=False,
|
||||||
|
post_effect=PostEffectType.NOEFFECT,
|
||||||
unlocked_framerate=False,
|
unlocked_framerate=False,
|
||||||
video_res_height=360,
|
video_res_height=360,
|
||||||
video_res_width=480,
|
video_res_width=480,
|
||||||
@ -383,6 +386,8 @@ def test_ws_import():
|
|||||||
with modeling_commands_ws.WebSocket(
|
with modeling_commands_ws.WebSocket(
|
||||||
client=client,
|
client=client,
|
||||||
fps=30,
|
fps=30,
|
||||||
|
post_effect=PostEffectType.NOEFFECT,
|
||||||
|
show_grid=False,
|
||||||
unlocked_framerate=False,
|
unlocked_framerate=False,
|
||||||
video_res_height=360,
|
video_res_height=360,
|
||||||
video_res_width=480,
|
video_res_width=480,
|
||||||
@ -556,12 +561,12 @@ def test_text_to_cad():
|
|||||||
while (
|
while (
|
||||||
body.status == ApiCallStatus.IN_PROGRESS or body.status == ApiCallStatus.QUEUED
|
body.status == ApiCallStatus.IN_PROGRESS or body.status == ApiCallStatus.QUEUED
|
||||||
) and time.time() - start_time < 120:
|
) and time.time() - start_time < 120:
|
||||||
result_status: Optional[
|
result_status: Optional[Union[TextToCad, Error]] = (
|
||||||
Union[TextToCad, Error]
|
get_text_to_cad_model_for_user.sync(
|
||||||
] = get_text_to_cad_model_for_user.sync(
|
|
||||||
client=client,
|
client=client,
|
||||||
id=body.id,
|
id=body.id,
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if isinstance(result_status, Error) or result_status is None:
|
if isinstance(result_status, Error) or result_status is None:
|
||||||
print(result_status)
|
print(result_status)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -31,13 +31,18 @@ from .async_api_call_type import AsyncApiCallType
|
|||||||
from .auth_callback import AuthCallback
|
from .auth_callback import AuthCallback
|
||||||
from .axis import Axis
|
from .axis import Axis
|
||||||
from .axis_direction_pair import AxisDirectionPair
|
from .axis_direction_pair import AxisDirectionPair
|
||||||
|
from .batch_response import BatchResponse
|
||||||
from .billing_info import BillingInfo
|
from .billing_info import BillingInfo
|
||||||
from .block_reason import BlockReason
|
from .block_reason import BlockReason
|
||||||
from .cache_metadata import CacheMetadata
|
from .cache_metadata import CacheMetadata
|
||||||
|
from .camera_drag_end import CameraDragEnd
|
||||||
from .camera_drag_interaction_type import CameraDragInteractionType
|
from .camera_drag_interaction_type import CameraDragInteractionType
|
||||||
|
from .camera_drag_move import CameraDragMove
|
||||||
|
from .camera_settings import CameraSettings
|
||||||
from .card_details import CardDetails
|
from .card_details import CardDetails
|
||||||
from .center_of_mass import CenterOfMass
|
from .center_of_mass import CenterOfMass
|
||||||
from .client_metrics import ClientMetrics
|
from .client_metrics import ClientMetrics
|
||||||
|
from .close_path import ClosePath
|
||||||
from .cluster import Cluster
|
from .cluster import Cluster
|
||||||
from .code_language import CodeLanguage
|
from .code_language import CodeLanguage
|
||||||
from .code_output import CodeOutput
|
from .code_output import CodeOutput
|
||||||
@ -53,6 +58,10 @@ from .curve_get_type import CurveGetType
|
|||||||
from .curve_type import CurveType
|
from .curve_type import CurveType
|
||||||
from .customer import Customer
|
from .customer import Customer
|
||||||
from .customer_balance import CustomerBalance
|
from .customer_balance import CustomerBalance
|
||||||
|
from .cut_type import CutType
|
||||||
|
from .default_camera_focus_on import DefaultCameraFocusOn
|
||||||
|
from .default_camera_get_settings import DefaultCameraGetSettings
|
||||||
|
from .default_camera_zoom import DefaultCameraZoom
|
||||||
from .density import Density
|
from .density import Density
|
||||||
from .der_encoded_key_pair import DerEncodedKeyPair
|
from .der_encoded_key_pair import DerEncodedKeyPair
|
||||||
from .device_access_token_request_form import DeviceAccessTokenRequestForm
|
from .device_access_token_request_form import DeviceAccessTokenRequestForm
|
||||||
@ -71,16 +80,22 @@ from .entity_get_distance import EntityGetDistance
|
|||||||
from .entity_get_num_children import EntityGetNumChildren
|
from .entity_get_num_children import EntityGetNumChildren
|
||||||
from .entity_get_parent_id import EntityGetParentId
|
from .entity_get_parent_id import EntityGetParentId
|
||||||
from .entity_linear_pattern import EntityLinearPattern
|
from .entity_linear_pattern import EntityLinearPattern
|
||||||
|
from .entity_linear_pattern_transform import EntityLinearPatternTransform
|
||||||
from .entity_type import EntityType
|
from .entity_type import EntityType
|
||||||
from .environment import Environment
|
from .environment import Environment
|
||||||
from .error import Error
|
from .error import Error
|
||||||
from .error_code import ErrorCode
|
from .error_code import ErrorCode
|
||||||
|
from .event import Event
|
||||||
from .export import Export
|
from .export import Export
|
||||||
from .export_file import ExportFile
|
from .export_file import ExportFile
|
||||||
from .extended_user import ExtendedUser
|
from .extended_user import ExtendedUser
|
||||||
from .extended_user_results_page import ExtendedUserResultsPage
|
from .extended_user_results_page import ExtendedUserResultsPage
|
||||||
from .extrusion_face_cap_type import ExtrusionFaceCapType
|
from .extrusion_face_cap_type import ExtrusionFaceCapType
|
||||||
from .extrusion_face_info import ExtrusionFaceInfo
|
from .extrusion_face_info import ExtrusionFaceInfo
|
||||||
|
from .face_get_center import FaceGetCenter
|
||||||
|
from .face_get_gradient import FaceGetGradient
|
||||||
|
from .face_get_position import FaceGetPosition
|
||||||
|
from .face_is_planar import FaceIsPlanar
|
||||||
from .failure_web_socket_response import FailureWebSocketResponse
|
from .failure_web_socket_response import FailureWebSocketResponse
|
||||||
from .fbx_storage import FbxStorage
|
from .fbx_storage import FbxStorage
|
||||||
from .file_center_of_mass import FileCenterOfMass
|
from .file_center_of_mass import FileCenterOfMass
|
||||||
@ -94,6 +109,7 @@ from .file_system_metadata import FileSystemMetadata
|
|||||||
from .file_volume import FileVolume
|
from .file_volume import FileVolume
|
||||||
from .gateway import Gateway
|
from .gateway import Gateway
|
||||||
from .get_entity_type import GetEntityType
|
from .get_entity_type import GetEntityType
|
||||||
|
from .get_num_objects import GetNumObjects
|
||||||
from .get_sketch_mode_plane import GetSketchModePlane
|
from .get_sketch_mode_plane import GetSketchModePlane
|
||||||
from .global_axis import GlobalAxis
|
from .global_axis import GlobalAxis
|
||||||
from .gltf_presentation import GltfPresentation
|
from .gltf_presentation import GltfPresentation
|
||||||
@ -104,6 +120,7 @@ from .idp_metadata_source import IdpMetadataSource
|
|||||||
from .image_format import ImageFormat
|
from .image_format import ImageFormat
|
||||||
from .import_file import ImportFile
|
from .import_file import ImportFile
|
||||||
from .import_files import ImportFiles
|
from .import_files import ImportFiles
|
||||||
|
from .imported_geometry import ImportedGeometry
|
||||||
from .input_format import InputFormat
|
from .input_format import InputFormat
|
||||||
from .invoice import Invoice
|
from .invoice import Invoice
|
||||||
from .invoice_line_item import InvoiceLineItem
|
from .invoice_line_item import InvoiceLineItem
|
||||||
@ -118,10 +135,12 @@ from .kcl_code_completion_request import KclCodeCompletionRequest
|
|||||||
from .kcl_code_completion_response import KclCodeCompletionResponse
|
from .kcl_code_completion_response import KclCodeCompletionResponse
|
||||||
from .leaf_node import LeafNode
|
from .leaf_node import LeafNode
|
||||||
from .length_unit import LengthUnit
|
from .length_unit import LengthUnit
|
||||||
|
from .linear_transform import LinearTransform
|
||||||
from .mass import Mass
|
from .mass import Mass
|
||||||
from .meta_cluster_info import MetaClusterInfo
|
from .meta_cluster_info import MetaClusterInfo
|
||||||
from .metadata import Metadata
|
from .metadata import Metadata
|
||||||
from .method import Method
|
from .method import Method
|
||||||
|
from .modeling_app_event_type import ModelingAppEventType
|
||||||
from .modeling_app_individual_subscription_tier import (
|
from .modeling_app_individual_subscription_tier import (
|
||||||
ModelingAppIndividualSubscriptionTier,
|
ModelingAppIndividualSubscriptionTier,
|
||||||
)
|
)
|
||||||
@ -165,7 +184,9 @@ from .plane_intersect_and_project import PlaneIntersectAndProject
|
|||||||
from .ply_storage import PlyStorage
|
from .ply_storage import PlyStorage
|
||||||
from .point2d import Point2d
|
from .point2d import Point2d
|
||||||
from .point3d import Point3d
|
from .point3d import Point3d
|
||||||
|
from .point4d import Point4d
|
||||||
from .pong import Pong
|
from .pong import Pong
|
||||||
|
from .post_effect_type import PostEffectType
|
||||||
from .privacy_settings import PrivacySettings
|
from .privacy_settings import PrivacySettings
|
||||||
from .raw_file import RawFile
|
from .raw_file import RawFile
|
||||||
from .rtc_ice_candidate_init import RtcIceCandidateInit
|
from .rtc_ice_candidate_init import RtcIceCandidateInit
|
||||||
@ -237,6 +258,7 @@ from .user_org_role import UserOrgRole
|
|||||||
from .user_results_page import UserResultsPage
|
from .user_results_page import UserResultsPage
|
||||||
from .uuid import Uuid
|
from .uuid import Uuid
|
||||||
from .verification_token_response import VerificationTokenResponse
|
from .verification_token_response import VerificationTokenResponse
|
||||||
|
from .view_isometric import ViewIsometric
|
||||||
from .volume import Volume
|
from .volume import Volume
|
||||||
from .web_socket_request import WebSocketRequest
|
from .web_socket_request import WebSocketRequest
|
||||||
from .web_socket_response import WebSocketResponse
|
from .web_socket_response import WebSocketResponse
|
||||||
@ -245,3 +267,4 @@ from .zoo_product_subscriptions import ZooProductSubscriptions
|
|||||||
from .zoo_product_subscriptions_org_request import ZooProductSubscriptionsOrgRequest
|
from .zoo_product_subscriptions_org_request import ZooProductSubscriptionsOrgRequest
|
||||||
from .zoo_product_subscriptions_user_request import ZooProductSubscriptionsUserRequest
|
from .zoo_product_subscriptions_user_request import ZooProductSubscriptionsUserRequest
|
||||||
from .zoo_tool import ZooTool
|
from .zoo_tool import ZooTool
|
||||||
|
from .zoom_to_fit import ZoomToFit
|
||||||
|
24
kittycad/models/batch_response.py
Normal file
24
kittycad/models/batch_response.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from typing import Union
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict, RootModel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class response(BaseModel):
|
||||||
|
"""Response to the modeling command."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class errors(BaseModel):
|
||||||
|
"""Errors that occurred during the modeling command."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
BatchResponse = RootModel[
|
||||||
|
Union[
|
||||||
|
response,
|
||||||
|
errors,
|
||||||
|
]
|
||||||
|
]
|
12
kittycad/models/camera_drag_end.py
Normal file
12
kittycad/models/camera_drag_end.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class CameraDragEnd(BaseModel):
|
||||||
|
"""The response from the `CameraDragEnd` command."""
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/camera_drag_move.py
Normal file
12
kittycad/models/camera_drag_move.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class CameraDragMove(BaseModel):
|
||||||
|
"""The response from the `CameraDragMove` command. Note this is an \"unreliable\" channel message, so this data may need more data like a \"sequence\" """
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
26
kittycad/models/camera_settings.py
Normal file
26
kittycad/models/camera_settings.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
from ..models.point4d import Point4d
|
||||||
|
|
||||||
|
|
||||||
|
class CameraSettings(BaseModel):
|
||||||
|
"""Camera settings including position, center, fov etc"""
|
||||||
|
|
||||||
|
center: Point3d
|
||||||
|
|
||||||
|
fov_y: Optional[float] = None
|
||||||
|
|
||||||
|
orientation: Point4d
|
||||||
|
|
||||||
|
ortho: bool
|
||||||
|
|
||||||
|
ortho_scale: Optional[float] = None
|
||||||
|
|
||||||
|
pos: Point3d
|
||||||
|
|
||||||
|
up: Point3d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
11
kittycad/models/close_path.py
Normal file
11
kittycad/models/close_path.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ClosePath(BaseModel):
|
||||||
|
"""The response from the `ClosePath` command."""
|
||||||
|
|
||||||
|
face_id: str
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -10,7 +10,7 @@ class CodeOutput(BaseModel):
|
|||||||
|
|
||||||
<details><summary>JSON schema</summary>
|
<details><summary>JSON schema</summary>
|
||||||
|
|
||||||
```json { "description": "Output of the code being executed.", "type": "object", "properties": { "output_files": { "description": "The contents of the files requested if they were passed.", "type": "array", "items": { "$ref": "#/components/schemas/OutputFile" } }, "stderr": { "description": "The stderr of the code.", "default": "", "type": "string" }, "stdout": { "description": "The stdout of the code.", "default": "", "type": "string" } } } ``` </details>
|
```json { \"description\": \"Output of the code being executed.\", \"type\": \"object\", \"properties\": { \"output_files\": { \"description\": \"The contents of the files requested if they were passed.\", \"type\": \"array\", \"items\": { \"$ref\": \"#/components/schemas/OutputFile\" } }, \"stderr\": { \"description\": \"The stderr of the code.\", \"default\": \"\", \"type\": \"string\" }, \"stdout\": { \"description\": \"The stdout of the code.\", \"default\": \"\", \"type\": \"string\" } } } ``` </details>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
output_files: Optional[List[OutputFile]] = None
|
output_files: Optional[List[OutputFile]] = None
|
||||||
|
@ -8,7 +8,7 @@ from ..models.currency import Currency
|
|||||||
|
|
||||||
|
|
||||||
class Customer(BaseModel):
|
class Customer(BaseModel):
|
||||||
"""The resource representing a payment "Customer"."""
|
"""The resource representing a payment \"Customer\"."""
|
||||||
|
|
||||||
address: Optional[AddressDetails] = None
|
address: Optional[AddressDetails] = None
|
||||||
|
|
||||||
|
13
kittycad/models/cut_type.py
Normal file
13
kittycad/models/cut_type.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class CutType(str, Enum):
|
||||||
|
"""What kind of cut to do""" # noqa: E501
|
||||||
|
|
||||||
|
"""# Round off an edge. """ # noqa: E501
|
||||||
|
FILLET = "fillet"
|
||||||
|
"""# Cut away an edge. """ # noqa: E501
|
||||||
|
CHAMFER = "chamfer"
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return str(self.value)
|
9
kittycad/models/default_camera_focus_on.py
Normal file
9
kittycad/models/default_camera_focus_on.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultCameraFocusOn(BaseModel):
|
||||||
|
"""The response from the `DefaultCameraFocusOn` command."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/default_camera_get_settings.py
Normal file
12
kittycad/models/default_camera_get_settings.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultCameraGetSettings(BaseModel):
|
||||||
|
"""The response from the `DefaultCameraGetSettings` command."""
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/default_camera_zoom.py
Normal file
12
kittycad/models/default_camera_zoom.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultCameraZoom(BaseModel):
|
||||||
|
"""The response from the `DefaultCameraZoom` command."""
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/entity_linear_pattern_transform.py
Normal file
12
kittycad/models/entity_linear_pattern_transform.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class EntityLinearPatternTransform(BaseModel):
|
||||||
|
"""The response from the `EntityLinearPatternTransform` command."""
|
||||||
|
|
||||||
|
entity_ids: List[str]
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -10,6 +10,10 @@ class ErrorCode(str, Enum):
|
|||||||
INTERNAL_API = "internal_api"
|
INTERNAL_API = "internal_api"
|
||||||
"""# User requested something geometrically or graphically impossible. Don't retry this request, as it's inherently impossible. Instead, read the error message and change your request. """ # noqa: E501
|
"""# User requested something geometrically or graphically impossible. Don't retry this request, as it's inherently impossible. Instead, read the error message and change your request. """ # noqa: E501
|
||||||
BAD_REQUEST = "bad_request"
|
BAD_REQUEST = "bad_request"
|
||||||
|
"""# Auth token is missing from the request """ # noqa: E501
|
||||||
|
AUTH_TOKEN_MISSING = "auth_token_missing"
|
||||||
|
"""# Auth token is invalid in some way (expired, incorrect format, etc) """ # noqa: E501
|
||||||
|
AUTH_TOKEN_INVALID = "auth_token_invalid"
|
||||||
"""# Client sent invalid JSON. """ # noqa: E501
|
"""# Client sent invalid JSON. """ # noqa: E501
|
||||||
INVALID_JSON = "invalid_json"
|
INVALID_JSON = "invalid_json"
|
||||||
"""# Client sent invalid BSON. """ # noqa: E501
|
"""# Client sent invalid BSON. """ # noqa: E501
|
||||||
|
34
kittycad/models/event.py
Normal file
34
kittycad/models/event.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import datetime
|
||||||
|
from typing import Literal, Optional, Union
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||||
|
from typing_extensions import Annotated
|
||||||
|
|
||||||
|
from ..models.modeling_app_event_type import ModelingAppEventType
|
||||||
|
|
||||||
|
|
||||||
|
class modeling_app_event(BaseModel):
|
||||||
|
"""An event related to modeling app files"""
|
||||||
|
|
||||||
|
attachment_uri: Optional[str] = None
|
||||||
|
|
||||||
|
created_at: datetime.datetime
|
||||||
|
|
||||||
|
event_type: ModelingAppEventType
|
||||||
|
|
||||||
|
last_compiled_at: Optional[datetime.datetime] = None
|
||||||
|
|
||||||
|
project_description: Optional[str] = None
|
||||||
|
|
||||||
|
project_name: str
|
||||||
|
|
||||||
|
source_id: str
|
||||||
|
|
||||||
|
type: Literal["modeling_app_event"] = "modeling_app_event"
|
||||||
|
|
||||||
|
user_id: str
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
Event = RootModel[Annotated[Union[modeling_app_event,], Field(discriminator="type")]]
|
12
kittycad/models/face_get_center.py
Normal file
12
kittycad/models/face_get_center.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
|
class FaceGetCenter(BaseModel):
|
||||||
|
"""The 3D center of mass on the surface"""
|
||||||
|
|
||||||
|
pos: Point3d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
16
kittycad/models/face_get_gradient.py
Normal file
16
kittycad/models/face_get_gradient.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
|
class FaceGetGradient(BaseModel):
|
||||||
|
"""The gradient (dFdu, dFdv) + normal vector on a brep face"""
|
||||||
|
|
||||||
|
df_du: Point3d
|
||||||
|
|
||||||
|
df_dv: Point3d
|
||||||
|
|
||||||
|
normal: Point3d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/face_get_position.py
Normal file
12
kittycad/models/face_get_position.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
|
class FaceGetPosition(BaseModel):
|
||||||
|
"""The 3D position on the surface that was evaluated"""
|
||||||
|
|
||||||
|
pos: Point3d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
19
kittycad/models/face_is_planar.py
Normal file
19
kittycad/models/face_is_planar.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
|
class FaceIsPlanar(BaseModel):
|
||||||
|
"""Surface-local planar axes (if available)"""
|
||||||
|
|
||||||
|
origin: Optional[Point3d] = None
|
||||||
|
|
||||||
|
x_axis: Optional[Point3d] = None
|
||||||
|
|
||||||
|
y_axis: Optional[Point3d] = None
|
||||||
|
|
||||||
|
z_axis: Optional[Point3d] = None
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
11
kittycad/models/get_num_objects.py
Normal file
11
kittycad/models/get_num_objects.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class GetNumObjects(BaseModel):
|
||||||
|
"""The response from the `GetNumObjects` command."""
|
||||||
|
|
||||||
|
num_objects: int
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -7,6 +7,8 @@ from ..models.point3d import Point3d
|
|||||||
class GetSketchModePlane(BaseModel):
|
class GetSketchModePlane(BaseModel):
|
||||||
"""The plane for sketch mode."""
|
"""The plane for sketch mode."""
|
||||||
|
|
||||||
|
origin: Point3d
|
||||||
|
|
||||||
x_axis: Point3d
|
x_axis: Point3d
|
||||||
|
|
||||||
y_axis: Point3d
|
y_axis: Point3d
|
||||||
|
14
kittycad/models/imported_geometry.py
Normal file
14
kittycad/models/imported_geometry.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ImportedGeometry(BaseModel):
|
||||||
|
"""Data from importing the files"""
|
||||||
|
|
||||||
|
id: str
|
||||||
|
|
||||||
|
value: List[str]
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -4,14 +4,14 @@ from pydantic import GetCoreSchemaHandler
|
|||||||
from pydantic_core import CoreSchema, core_schema
|
from pydantic_core import CoreSchema, core_schema
|
||||||
|
|
||||||
|
|
||||||
class LengthUnit(int):
|
class LengthUnit(float):
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
def __int__(self) -> int:
|
def __float__(self) -> float:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __get_pydantic_core_schema__(
|
def __get_pydantic_core_schema__(
|
||||||
cls, source_type: Any, handler: GetCoreSchemaHandler
|
cls, source_type: Any, handler: GetCoreSchemaHandler
|
||||||
) -> CoreSchema:
|
) -> CoreSchema:
|
||||||
return core_schema.no_info_after_validator_function(cls, handler(int))
|
return core_schema.no_info_after_validator_function(cls, handler(float))
|
||||||
|
17
kittycad/models/linear_transform.py
Normal file
17
kittycad/models/linear_transform.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
|
class LinearTransform(BaseModel):
|
||||||
|
"""Ways to transform each solid being replicated in a repeating pattern."""
|
||||||
|
|
||||||
|
replicate: Optional[bool] = None
|
||||||
|
|
||||||
|
scale: Optional[Point3d] = None
|
||||||
|
|
||||||
|
translate: Optional[Point3d] = None
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
11
kittycad/models/modeling_app_event_type.py
Normal file
11
kittycad/models/modeling_app_event_type.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class ModelingAppEventType(str, Enum):
|
||||||
|
"""Type for modeling-app events""" # noqa: E501
|
||||||
|
|
||||||
|
"""# This event is sent before the modeling app or project is closed. The attachment should contain the contents of the most recent successful compile. """ # noqa: E501
|
||||||
|
SUCCESSFUL_COMPILE_BEFORE_CLOSE = "successful_compile_before_close"
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return str(self.value)
|
@ -3,16 +3,19 @@ from typing import List, Literal, Optional, Union
|
|||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
|
||||||
|
from ..models.angle import Angle
|
||||||
from ..models.annotation_options import AnnotationOptions
|
from ..models.annotation_options import AnnotationOptions
|
||||||
from ..models.annotation_type import AnnotationType
|
from ..models.annotation_type import AnnotationType
|
||||||
from ..models.camera_drag_interaction_type import CameraDragInteractionType
|
from ..models.camera_drag_interaction_type import CameraDragInteractionType
|
||||||
from ..models.color import Color
|
from ..models.color import Color
|
||||||
|
from ..models.cut_type import CutType
|
||||||
from ..models.distance_type import DistanceType
|
from ..models.distance_type import DistanceType
|
||||||
from ..models.entity_type import EntityType
|
from ..models.entity_type import EntityType
|
||||||
from ..models.image_format import ImageFormat
|
from ..models.image_format import ImageFormat
|
||||||
from ..models.import_file import ImportFile
|
from ..models.import_file import ImportFile
|
||||||
from ..models.input_format import InputFormat
|
from ..models.input_format import InputFormat
|
||||||
from ..models.length_unit import LengthUnit
|
from ..models.length_unit import LengthUnit
|
||||||
|
from ..models.linear_transform import LinearTransform
|
||||||
from ..models.modeling_cmd_id import ModelingCmdId
|
from ..models.modeling_cmd_id import ModelingCmdId
|
||||||
from ..models.output_format import OutputFormat
|
from ..models.output_format import OutputFormat
|
||||||
from ..models.path_component_constraint_bound import PathComponentConstraintBound
|
from ..models.path_component_constraint_bound import PathComponentConstraintBound
|
||||||
@ -39,7 +42,7 @@ class start_path(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class move_path_pen(BaseModel):
|
class move_path_pen(BaseModel):
|
||||||
"""Move the path's "pen"."""
|
"""Move the path's \"pen\"."""
|
||||||
|
|
||||||
path: ModelingCmdId
|
path: ModelingCmdId
|
||||||
|
|
||||||
@ -51,7 +54,7 @@ class move_path_pen(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class extend_path(BaseModel):
|
class extend_path(BaseModel):
|
||||||
"""Extend a path by adding a new segment which starts at the path's "pen". If no "pen" location has been set before (via `MovePen`), then the pen is at the origin."""
|
"""Extend a path by adding a new segment which starts at the path's \"pen\". If no \"pen\" location has been set before (via `MovePen`), then the pen is at the origin."""
|
||||||
|
|
||||||
path: ModelingCmdId
|
path: ModelingCmdId
|
||||||
|
|
||||||
@ -63,7 +66,7 @@ class extend_path(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class extrude(BaseModel):
|
class extrude(BaseModel):
|
||||||
"""Command for extruding a solid."""
|
"""Command for extruding a solid 2d."""
|
||||||
|
|
||||||
cap: bool
|
cap: bool
|
||||||
|
|
||||||
@ -76,6 +79,56 @@ class extrude(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class revolve(BaseModel):
|
||||||
|
"""Command for revolving a solid 2d."""
|
||||||
|
|
||||||
|
angle: Angle
|
||||||
|
|
||||||
|
axis: Point3d
|
||||||
|
|
||||||
|
axis_is_2d: bool
|
||||||
|
|
||||||
|
origin: Point3d
|
||||||
|
|
||||||
|
target: ModelingCmdId
|
||||||
|
|
||||||
|
tolerance: LengthUnit
|
||||||
|
|
||||||
|
type: Literal["revolve"] = "revolve"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class solid3d_shell_face(BaseModel):
|
||||||
|
"""Command for revolving a solid 2d."""
|
||||||
|
|
||||||
|
face_ids: List[str]
|
||||||
|
|
||||||
|
object_id: str
|
||||||
|
|
||||||
|
shell_thickness: LengthUnit
|
||||||
|
|
||||||
|
type: Literal["solid3d_shell_face"] = "solid3d_shell_face"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class revolve_about_edge(BaseModel):
|
||||||
|
"""Command for revolving a solid 2d about a brep edge"""
|
||||||
|
|
||||||
|
angle: Angle
|
||||||
|
|
||||||
|
edge_id: str
|
||||||
|
|
||||||
|
target: ModelingCmdId
|
||||||
|
|
||||||
|
tolerance: LengthUnit
|
||||||
|
|
||||||
|
type: Literal["revolve_about_edge"] = "revolve_about_edge"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class close_path(BaseModel):
|
class close_path(BaseModel):
|
||||||
"""Closes a path, converting it to a 2D solid."""
|
"""Closes a path, converting it to a 2D solid."""
|
||||||
|
|
||||||
@ -124,6 +177,14 @@ class camera_drag_end(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class default_camera_get_settings(BaseModel):
|
||||||
|
"""Gets the default camera's camera settings"""
|
||||||
|
|
||||||
|
type: Literal["default_camera_get_settings"] = "default_camera_get_settings"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class default_camera_look_at(BaseModel):
|
class default_camera_look_at(BaseModel):
|
||||||
"""Change what the default camera is looking at."""
|
"""Change what the default camera is looking at."""
|
||||||
|
|
||||||
@ -145,21 +206,21 @@ class default_camera_perspective_settings(BaseModel):
|
|||||||
|
|
||||||
center: Point3d
|
center: Point3d
|
||||||
|
|
||||||
fov_y: float
|
fov_y: Optional[float] = None
|
||||||
|
|
||||||
sequence: Optional[int] = None
|
sequence: Optional[int] = None
|
||||||
|
|
||||||
type: Literal[
|
type: Literal["default_camera_perspective_settings"] = (
|
||||||
"default_camera_perspective_settings"
|
"default_camera_perspective_settings"
|
||||||
] = "default_camera_perspective_settings"
|
)
|
||||||
|
|
||||||
up: Point3d
|
up: Point3d
|
||||||
|
|
||||||
vantage: Point3d
|
vantage: Point3d
|
||||||
|
|
||||||
z_far: float
|
z_far: Optional[float] = None
|
||||||
|
|
||||||
z_near: float
|
z_near: Optional[float] = None
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
@ -174,38 +235,6 @@ class default_camera_zoom(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class default_camera_enable_sketch_mode(BaseModel):
|
|
||||||
"""Enable sketch mode, where users can sketch 2D geometry. Users choose a plane to sketch on."""
|
|
||||||
|
|
||||||
animated: bool
|
|
||||||
|
|
||||||
distance_to_plane: float
|
|
||||||
|
|
||||||
origin: Point3d
|
|
||||||
|
|
||||||
ortho: bool
|
|
||||||
|
|
||||||
type: Literal[
|
|
||||||
"default_camera_enable_sketch_mode"
|
|
||||||
] = "default_camera_enable_sketch_mode"
|
|
||||||
|
|
||||||
x_axis: Point3d
|
|
||||||
|
|
||||||
y_axis: Point3d
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
|
||||||
|
|
||||||
|
|
||||||
class default_camera_disable_sketch_mode(BaseModel):
|
|
||||||
"""Disable sketch mode, from the default camera."""
|
|
||||||
|
|
||||||
type: Literal[
|
|
||||||
"default_camera_disable_sketch_mode"
|
|
||||||
] = "default_camera_disable_sketch_mode"
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
|
||||||
|
|
||||||
|
|
||||||
class export(BaseModel):
|
class export(BaseModel):
|
||||||
"""Export the scene to a file."""
|
"""Export the scene to a file."""
|
||||||
|
|
||||||
@ -213,8 +242,6 @@ class export(BaseModel):
|
|||||||
|
|
||||||
format: OutputFormat
|
format: OutputFormat
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["export"] = "export"
|
type: Literal["export"] = "export"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -276,8 +303,20 @@ class entity_get_distance(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class entity_linear_pattern_transform(BaseModel):
|
||||||
|
"""Create a linear pattern using this entity."""
|
||||||
|
|
||||||
|
entity_id: str
|
||||||
|
|
||||||
|
transform: List[LinearTransform]
|
||||||
|
|
||||||
|
type: Literal["entity_linear_pattern_transform"] = "entity_linear_pattern_transform"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class entity_linear_pattern(BaseModel):
|
class entity_linear_pattern(BaseModel):
|
||||||
"""Create a linear pattern using this entity (currently only valid for 3D solids)."""
|
"""Create a linear pattern using this entity."""
|
||||||
|
|
||||||
axis: Point3d
|
axis: Point3d
|
||||||
|
|
||||||
@ -293,7 +332,7 @@ class entity_linear_pattern(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class entity_circular_pattern(BaseModel):
|
class entity_circular_pattern(BaseModel):
|
||||||
"""Create a circular pattern using this entity (currently only valid for 3D solids)."""
|
"""Create a circular pattern using this entity."""
|
||||||
|
|
||||||
arc_degrees: float
|
arc_degrees: float
|
||||||
|
|
||||||
@ -312,6 +351,38 @@ class entity_circular_pattern(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class entity_make_helix(BaseModel):
|
||||||
|
"""Create a helix using the input cylinder and other specified parameters."""
|
||||||
|
|
||||||
|
cylinder_id: str
|
||||||
|
|
||||||
|
is_clockwise: bool
|
||||||
|
|
||||||
|
length: LengthUnit
|
||||||
|
|
||||||
|
revolutions: float
|
||||||
|
|
||||||
|
start_angle: Angle
|
||||||
|
|
||||||
|
type: Literal["entity_make_helix"] = "entity_make_helix"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class entity_mirror(BaseModel):
|
||||||
|
"""Mirror the input entities over the specified axis. (Currently only supports sketches)"""
|
||||||
|
|
||||||
|
axis: Point3d
|
||||||
|
|
||||||
|
ids: List[str]
|
||||||
|
|
||||||
|
point: Point3d
|
||||||
|
|
||||||
|
type: Literal["entity_mirror"] = "entity_mirror"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class edit_mode_enter(BaseModel):
|
class edit_mode_enter(BaseModel):
|
||||||
"""Enter edit mode"""
|
"""Enter edit mode"""
|
||||||
|
|
||||||
@ -323,7 +394,7 @@ class edit_mode_enter(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class select_with_point(BaseModel):
|
class select_with_point(BaseModel):
|
||||||
"""Modifies the selection by simulating a "mouse click" at the given x,y window coordinate Returns ID of whatever was selected."""
|
"""Modifies the selection by simulating a \"mouse click\" at the given x,y window coordinate Returns ID of whatever was selected."""
|
||||||
|
|
||||||
selected_at_window: Point2d
|
selected_at_window: Point2d
|
||||||
|
|
||||||
@ -354,6 +425,14 @@ class select_remove(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class scene_clear_all(BaseModel):
|
||||||
|
"""Removes all of the Objects in the scene"""
|
||||||
|
|
||||||
|
type: Literal["scene_clear_all"] = "scene_clear_all"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class select_replace(BaseModel):
|
class select_replace(BaseModel):
|
||||||
"""Replaces current selection with these entities (by UUID)."""
|
"""Replaces current selection with these entities (by UUID)."""
|
||||||
|
|
||||||
@ -412,6 +491,16 @@ class update_annotation(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class edge_lines_visible(BaseModel):
|
||||||
|
"""Changes visibility of scene-wide edge lines on brep solids"""
|
||||||
|
|
||||||
|
hidden: bool
|
||||||
|
|
||||||
|
type: Literal["edge_lines_visible"] = "edge_lines_visible"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class object_visible(BaseModel):
|
class object_visible(BaseModel):
|
||||||
"""Hide or show an object"""
|
"""Hide or show an object"""
|
||||||
|
|
||||||
@ -545,17 +634,65 @@ class solid3d_get_prev_adjacent_edge(BaseModel):
|
|||||||
class solid3d_fillet_edge(BaseModel):
|
class solid3d_fillet_edge(BaseModel):
|
||||||
"""Fillets the given edge with the specified radius."""
|
"""Fillets the given edge with the specified radius."""
|
||||||
|
|
||||||
|
cut_type: Optional[CutType] = None
|
||||||
|
|
||||||
edge_id: str
|
edge_id: str
|
||||||
|
|
||||||
object_id: str
|
object_id: str
|
||||||
|
|
||||||
radius: LengthUnit
|
radius: LengthUnit
|
||||||
|
|
||||||
|
tolerance: LengthUnit
|
||||||
|
|
||||||
type: Literal["solid3d_fillet_edge"] = "solid3d_fillet_edge"
|
type: Literal["solid3d_fillet_edge"] = "solid3d_fillet_edge"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_is_planar(BaseModel):
|
||||||
|
"""Determines whether a brep face is planar and returns its surface-local planar axes if so"""
|
||||||
|
|
||||||
|
object_id: str
|
||||||
|
|
||||||
|
type: Literal["face_is_planar"] = "face_is_planar"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_position(BaseModel):
|
||||||
|
"""Determines a position on a brep face evaluated by parameters u,v"""
|
||||||
|
|
||||||
|
object_id: str
|
||||||
|
|
||||||
|
type: Literal["face_get_position"] = "face_get_position"
|
||||||
|
|
||||||
|
uv: Point2d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_center(BaseModel):
|
||||||
|
"""Obtains the surface \"center of mass\" """
|
||||||
|
|
||||||
|
object_id: str
|
||||||
|
|
||||||
|
type: Literal["face_get_center"] = "face_get_center"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_gradient(BaseModel):
|
||||||
|
"""Determines the gradient (dFdu, dFdv) + normal vector on a brep face evaluated by parameters u,v"""
|
||||||
|
|
||||||
|
object_id: str
|
||||||
|
|
||||||
|
type: Literal["face_get_gradient"] = "face_get_gradient"
|
||||||
|
|
||||||
|
uv: Point2d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class send_object(BaseModel):
|
class send_object(BaseModel):
|
||||||
"""Send object to front or back."""
|
"""Send object to front or back."""
|
||||||
|
|
||||||
@ -658,22 +795,6 @@ class mouse_click(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class sketch_mode_enable(BaseModel):
|
|
||||||
"""Enable sketch mode on the given plane. If you want to sketch on a face, use `enable_sketch_mode` instead."""
|
|
||||||
|
|
||||||
animated: bool
|
|
||||||
|
|
||||||
disable_camera_with_plane: Optional[Point3d] = None
|
|
||||||
|
|
||||||
ortho: bool
|
|
||||||
|
|
||||||
plane_id: str
|
|
||||||
|
|
||||||
type: Literal["sketch_mode_enable"] = "sketch_mode_enable"
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
|
||||||
|
|
||||||
|
|
||||||
class sketch_mode_disable(BaseModel):
|
class sketch_mode_disable(BaseModel):
|
||||||
"""Disable sketch mode. If you are sketching on a face, be sure to not disable sketch mode until you have extruded. Otherwise, your object will not be fused with the face."""
|
"""Disable sketch mode. If you are sketching on a face, be sure to not disable sketch mode until you have extruded. Otherwise, your object will not be fused with the face."""
|
||||||
|
|
||||||
@ -715,11 +836,43 @@ class enable_sketch_mode(BaseModel):
|
|||||||
|
|
||||||
ortho: bool
|
ortho: bool
|
||||||
|
|
||||||
|
planar_normal: Optional[Point3d] = None
|
||||||
|
|
||||||
type: Literal["enable_sketch_mode"] = "enable_sketch_mode"
|
type: Literal["enable_sketch_mode"] = "enable_sketch_mode"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class set_background_color(BaseModel):
|
||||||
|
"""Set the background color of the scene."""
|
||||||
|
|
||||||
|
color: Color
|
||||||
|
|
||||||
|
type: Literal["set_background_color"] = "set_background_color"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class set_current_tool_properties(BaseModel):
|
||||||
|
"""Set the properties of the tool lines for the scene."""
|
||||||
|
|
||||||
|
color: Optional[Color] = None
|
||||||
|
|
||||||
|
type: Literal["set_current_tool_properties"] = "set_current_tool_properties"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class set_default_system_properties(BaseModel):
|
||||||
|
"""Set the default system properties used when a specific property isn't set."""
|
||||||
|
|
||||||
|
color: Optional[Color] = None
|
||||||
|
|
||||||
|
type: Literal["set_default_system_properties"] = "set_default_system_properties"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class curve_get_type(BaseModel):
|
class curve_get_type(BaseModel):
|
||||||
"""Get type of the given curve."""
|
"""Get type of the given curve."""
|
||||||
|
|
||||||
@ -777,9 +930,9 @@ class path_get_curve_uuids_for_vertices(BaseModel):
|
|||||||
|
|
||||||
path_id: str
|
path_id: str
|
||||||
|
|
||||||
type: Literal[
|
type: Literal["path_get_curve_uuids_for_vertices"] = (
|
||||||
"path_get_curve_uuids_for_vertices"
|
"path_get_curve_uuids_for_vertices"
|
||||||
] = "path_get_curve_uuids_for_vertices"
|
)
|
||||||
|
|
||||||
vertex_ids: List[str]
|
vertex_ids: List[str]
|
||||||
|
|
||||||
@ -907,8 +1060,6 @@ class mass(BaseModel):
|
|||||||
|
|
||||||
output_unit: UnitMass
|
output_unit: UnitMass
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["mass"] = "mass"
|
type: Literal["mass"] = "mass"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -925,8 +1076,6 @@ class density(BaseModel):
|
|||||||
|
|
||||||
output_unit: UnitDensity
|
output_unit: UnitDensity
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["density"] = "density"
|
type: Literal["density"] = "density"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -939,8 +1088,6 @@ class volume(BaseModel):
|
|||||||
|
|
||||||
output_unit: UnitVolume
|
output_unit: UnitVolume
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["volume"] = "volume"
|
type: Literal["volume"] = "volume"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -953,8 +1100,6 @@ class center_of_mass(BaseModel):
|
|||||||
|
|
||||||
output_unit: UnitLength
|
output_unit: UnitLength
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["center_of_mass"] = "center_of_mass"
|
type: Literal["center_of_mass"] = "center_of_mass"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -967,8 +1112,6 @@ class surface_area(BaseModel):
|
|||||||
|
|
||||||
output_unit: UnitArea
|
output_unit: UnitArea
|
||||||
|
|
||||||
source_unit: UnitLength
|
|
||||||
|
|
||||||
type: Literal["surface_area"] = "surface_area"
|
type: Literal["surface_area"] = "surface_area"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -1022,6 +1165,28 @@ class default_camera_set_perspective(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class zoom_to_fit(BaseModel):
|
||||||
|
"""Fit the view to the specified object(s)."""
|
||||||
|
|
||||||
|
object_ids: Optional[List[str]] = None
|
||||||
|
|
||||||
|
padding: float
|
||||||
|
|
||||||
|
type: Literal["zoom_to_fit"] = "zoom_to_fit"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class view_isometric(BaseModel):
|
||||||
|
"""Fit the view to the scene with an isometric view."""
|
||||||
|
|
||||||
|
padding: Optional[float] = None
|
||||||
|
|
||||||
|
type: Literal["view_isometric"] = "view_isometric"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class solid3d_get_extrusion_face_info(BaseModel):
|
class solid3d_get_extrusion_face_info(BaseModel):
|
||||||
"""Get a concise description of all of an extrusion's faces."""
|
"""Get a concise description of all of an extrusion's faces."""
|
||||||
|
|
||||||
@ -1058,6 +1223,14 @@ class select_get(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class get_num_objects(BaseModel):
|
||||||
|
"""Get the number of objects in the scene"""
|
||||||
|
|
||||||
|
type: Literal["get_num_objects"] = "get_num_objects"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
ModelingCmd = RootModel[
|
ModelingCmd = RootModel[
|
||||||
Annotated[
|
Annotated[
|
||||||
Union[
|
Union[
|
||||||
@ -1065,32 +1238,39 @@ ModelingCmd = RootModel[
|
|||||||
move_path_pen,
|
move_path_pen,
|
||||||
extend_path,
|
extend_path,
|
||||||
extrude,
|
extrude,
|
||||||
|
revolve,
|
||||||
|
solid3d_shell_face,
|
||||||
|
revolve_about_edge,
|
||||||
close_path,
|
close_path,
|
||||||
camera_drag_start,
|
camera_drag_start,
|
||||||
camera_drag_move,
|
camera_drag_move,
|
||||||
camera_drag_end,
|
camera_drag_end,
|
||||||
|
default_camera_get_settings,
|
||||||
default_camera_look_at,
|
default_camera_look_at,
|
||||||
default_camera_perspective_settings,
|
default_camera_perspective_settings,
|
||||||
default_camera_zoom,
|
default_camera_zoom,
|
||||||
default_camera_enable_sketch_mode,
|
|
||||||
default_camera_disable_sketch_mode,
|
|
||||||
export,
|
export,
|
||||||
entity_get_parent_id,
|
entity_get_parent_id,
|
||||||
entity_get_num_children,
|
entity_get_num_children,
|
||||||
entity_get_child_uuid,
|
entity_get_child_uuid,
|
||||||
entity_get_all_child_uuids,
|
entity_get_all_child_uuids,
|
||||||
entity_get_distance,
|
entity_get_distance,
|
||||||
|
entity_linear_pattern_transform,
|
||||||
entity_linear_pattern,
|
entity_linear_pattern,
|
||||||
entity_circular_pattern,
|
entity_circular_pattern,
|
||||||
|
entity_make_helix,
|
||||||
|
entity_mirror,
|
||||||
edit_mode_enter,
|
edit_mode_enter,
|
||||||
select_with_point,
|
select_with_point,
|
||||||
select_add,
|
select_add,
|
||||||
select_remove,
|
select_remove,
|
||||||
|
scene_clear_all,
|
||||||
select_replace,
|
select_replace,
|
||||||
highlight_set_entity,
|
highlight_set_entity,
|
||||||
highlight_set_entities,
|
highlight_set_entities,
|
||||||
new_annotation,
|
new_annotation,
|
||||||
update_annotation,
|
update_annotation,
|
||||||
|
edge_lines_visible,
|
||||||
object_visible,
|
object_visible,
|
||||||
object_bring_to_front,
|
object_bring_to_front,
|
||||||
object_set_material_params_pbr,
|
object_set_material_params_pbr,
|
||||||
@ -1102,6 +1282,10 @@ ModelingCmd = RootModel[
|
|||||||
solid3d_get_next_adjacent_edge,
|
solid3d_get_next_adjacent_edge,
|
||||||
solid3d_get_prev_adjacent_edge,
|
solid3d_get_prev_adjacent_edge,
|
||||||
solid3d_fillet_edge,
|
solid3d_fillet_edge,
|
||||||
|
face_is_planar,
|
||||||
|
face_get_position,
|
||||||
|
face_get_center,
|
||||||
|
face_get_gradient,
|
||||||
send_object,
|
send_object,
|
||||||
entity_set_opacity,
|
entity_set_opacity,
|
||||||
entity_fade,
|
entity_fade,
|
||||||
@ -1110,11 +1294,13 @@ ModelingCmd = RootModel[
|
|||||||
set_tool,
|
set_tool,
|
||||||
mouse_move,
|
mouse_move,
|
||||||
mouse_click,
|
mouse_click,
|
||||||
sketch_mode_enable,
|
|
||||||
sketch_mode_disable,
|
sketch_mode_disable,
|
||||||
get_sketch_mode_plane,
|
get_sketch_mode_plane,
|
||||||
curve_set_constraint,
|
curve_set_constraint,
|
||||||
enable_sketch_mode,
|
enable_sketch_mode,
|
||||||
|
set_background_color,
|
||||||
|
set_current_tool_properties,
|
||||||
|
set_default_system_properties,
|
||||||
curve_get_type,
|
curve_get_type,
|
||||||
curve_get_control_points,
|
curve_get_control_points,
|
||||||
take_snapshot,
|
take_snapshot,
|
||||||
@ -1141,10 +1327,13 @@ ModelingCmd = RootModel[
|
|||||||
set_selection_filter,
|
set_selection_filter,
|
||||||
default_camera_set_orthographic,
|
default_camera_set_orthographic,
|
||||||
default_camera_set_perspective,
|
default_camera_set_perspective,
|
||||||
|
zoom_to_fit,
|
||||||
|
view_isometric,
|
||||||
solid3d_get_extrusion_face_info,
|
solid3d_get_extrusion_face_info,
|
||||||
edit_mode_exit,
|
edit_mode_exit,
|
||||||
select_clear,
|
select_clear,
|
||||||
select_get,
|
select_get,
|
||||||
|
get_num_objects,
|
||||||
],
|
],
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
|
@ -3,10 +3,16 @@ from typing import Literal, Union
|
|||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
|
||||||
|
from ..models.camera_drag_end import CameraDragEnd
|
||||||
|
from ..models.camera_drag_move import CameraDragMove
|
||||||
from ..models.center_of_mass import CenterOfMass
|
from ..models.center_of_mass import CenterOfMass
|
||||||
|
from ..models.close_path import ClosePath
|
||||||
from ..models.curve_get_control_points import CurveGetControlPoints
|
from ..models.curve_get_control_points import CurveGetControlPoints
|
||||||
from ..models.curve_get_end_points import CurveGetEndPoints
|
from ..models.curve_get_end_points import CurveGetEndPoints
|
||||||
from ..models.curve_get_type import CurveGetType
|
from ..models.curve_get_type import CurveGetType
|
||||||
|
from ..models.default_camera_focus_on import DefaultCameraFocusOn
|
||||||
|
from ..models.default_camera_get_settings import DefaultCameraGetSettings
|
||||||
|
from ..models.default_camera_zoom import DefaultCameraZoom
|
||||||
from ..models.density import Density
|
from ..models.density import Density
|
||||||
from ..models.entity_circular_pattern import EntityCircularPattern
|
from ..models.entity_circular_pattern import EntityCircularPattern
|
||||||
from ..models.entity_get_all_child_uuids import EntityGetAllChildUuids
|
from ..models.entity_get_all_child_uuids import EntityGetAllChildUuids
|
||||||
@ -15,12 +21,19 @@ from ..models.entity_get_distance import EntityGetDistance
|
|||||||
from ..models.entity_get_num_children import EntityGetNumChildren
|
from ..models.entity_get_num_children import EntityGetNumChildren
|
||||||
from ..models.entity_get_parent_id import EntityGetParentId
|
from ..models.entity_get_parent_id import EntityGetParentId
|
||||||
from ..models.entity_linear_pattern import EntityLinearPattern
|
from ..models.entity_linear_pattern import EntityLinearPattern
|
||||||
|
from ..models.entity_linear_pattern_transform import EntityLinearPatternTransform
|
||||||
from ..models.export import Export
|
from ..models.export import Export
|
||||||
from ..models.extrusion_face_info import ExtrusionFaceInfo
|
from ..models.extrusion_face_info import ExtrusionFaceInfo
|
||||||
|
from ..models.face_get_center import FaceGetCenter
|
||||||
|
from ..models.face_get_gradient import FaceGetGradient
|
||||||
|
from ..models.face_get_position import FaceGetPosition
|
||||||
|
from ..models.face_is_planar import FaceIsPlanar
|
||||||
from ..models.get_entity_type import GetEntityType
|
from ..models.get_entity_type import GetEntityType
|
||||||
|
from ..models.get_num_objects import GetNumObjects
|
||||||
from ..models.get_sketch_mode_plane import GetSketchModePlane
|
from ..models.get_sketch_mode_plane import GetSketchModePlane
|
||||||
from ..models.highlight_set_entity import HighlightSetEntity
|
from ..models.highlight_set_entity import HighlightSetEntity
|
||||||
from ..models.import_files import ImportFiles
|
from ..models.import_files import ImportFiles
|
||||||
|
from ..models.imported_geometry import ImportedGeometry
|
||||||
from ..models.mass import Mass
|
from ..models.mass import Mass
|
||||||
from ..models.mouse_click import MouseClick
|
from ..models.mouse_click import MouseClick
|
||||||
from ..models.path_get_curve_uuids_for_vertices import PathGetCurveUuidsForVertices
|
from ..models.path_get_curve_uuids_for_vertices import PathGetCurveUuidsForVertices
|
||||||
@ -38,7 +51,9 @@ from ..models.solid3d_get_opposite_edge import Solid3dGetOppositeEdge
|
|||||||
from ..models.solid3d_get_prev_adjacent_edge import Solid3dGetPrevAdjacentEdge
|
from ..models.solid3d_get_prev_adjacent_edge import Solid3dGetPrevAdjacentEdge
|
||||||
from ..models.surface_area import SurfaceArea
|
from ..models.surface_area import SurfaceArea
|
||||||
from ..models.take_snapshot import TakeSnapshot
|
from ..models.take_snapshot import TakeSnapshot
|
||||||
|
from ..models.view_isometric import ViewIsometric
|
||||||
from ..models.volume import Volume
|
from ..models.volume import Volume
|
||||||
|
from ..models.zoom_to_fit import ZoomToFit
|
||||||
|
|
||||||
|
|
||||||
class empty(BaseModel):
|
class empty(BaseModel):
|
||||||
@ -119,6 +134,96 @@ class entity_get_all_child_uuids(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class close_path(BaseModel):
|
||||||
|
"""The response to the 'ClosePath' endpoint"""
|
||||||
|
|
||||||
|
data: ClosePath
|
||||||
|
|
||||||
|
type: Literal["close_path"] = "close_path"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class camera_drag_move(BaseModel):
|
||||||
|
"""The response to the 'CameraDragMove' endpoint"""
|
||||||
|
|
||||||
|
data: CameraDragMove
|
||||||
|
|
||||||
|
type: Literal["camera_drag_move"] = "camera_drag_move"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class camera_drag_end(BaseModel):
|
||||||
|
"""The response to the 'CameraDragEnd' endpoint"""
|
||||||
|
|
||||||
|
data: CameraDragEnd
|
||||||
|
|
||||||
|
type: Literal["camera_drag_end"] = "camera_drag_end"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class default_camera_get_settings(BaseModel):
|
||||||
|
"""The response to the 'DefaultCameraGetSettings' endpoint"""
|
||||||
|
|
||||||
|
data: DefaultCameraGetSettings
|
||||||
|
|
||||||
|
type: Literal["default_camera_get_settings"] = "default_camera_get_settings"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class default_camera_zoom(BaseModel):
|
||||||
|
"""The response to the 'DefaultCameraZoom' endpoint"""
|
||||||
|
|
||||||
|
data: DefaultCameraZoom
|
||||||
|
|
||||||
|
type: Literal["default_camera_zoom"] = "default_camera_zoom"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class zoom_to_fit(BaseModel):
|
||||||
|
"""The response to the 'ZoomToFit' endpoint"""
|
||||||
|
|
||||||
|
data: ZoomToFit
|
||||||
|
|
||||||
|
type: Literal["zoom_to_fit"] = "zoom_to_fit"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class view_isometric(BaseModel):
|
||||||
|
"""The response to the 'ViewIsometric' endpoint"""
|
||||||
|
|
||||||
|
data: ViewIsometric
|
||||||
|
|
||||||
|
type: Literal["view_isometric"] = "view_isometric"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class get_num_objects(BaseModel):
|
||||||
|
"""The response to the 'GetNumObjects' endpoint"""
|
||||||
|
|
||||||
|
data: GetNumObjects
|
||||||
|
|
||||||
|
type: Literal["get_num_objects"] = "get_num_objects"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class default_camera_focus_on(BaseModel):
|
||||||
|
"""The response to the 'DefaultCameraFocusOn' endpoint"""
|
||||||
|
|
||||||
|
data: DefaultCameraFocusOn
|
||||||
|
|
||||||
|
type: Literal["default_camera_focus_on"] = "default_camera_focus_on"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class select_get(BaseModel):
|
class select_get(BaseModel):
|
||||||
"""The response to the 'SelectGet' endpoint"""
|
"""The response to the 'SelectGet' endpoint"""
|
||||||
|
|
||||||
@ -254,9 +359,9 @@ class path_get_curve_uuids_for_vertices(BaseModel):
|
|||||||
|
|
||||||
data: PathGetCurveUuidsForVertices
|
data: PathGetCurveUuidsForVertices
|
||||||
|
|
||||||
type: Literal[
|
type: Literal["path_get_curve_uuids_for_vertices"] = (
|
||||||
"path_get_curve_uuids_for_vertices"
|
"path_get_curve_uuids_for_vertices"
|
||||||
] = "path_get_curve_uuids_for_vertices"
|
)
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
@ -281,6 +386,46 @@ class curve_get_end_points(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_is_planar(BaseModel):
|
||||||
|
"""The response to the 'FaceIsPlanar' endpoint"""
|
||||||
|
|
||||||
|
data: FaceIsPlanar
|
||||||
|
|
||||||
|
type: Literal["face_is_planar"] = "face_is_planar"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_position(BaseModel):
|
||||||
|
"""The response to the 'FaceGetPosition' endpoint"""
|
||||||
|
|
||||||
|
data: FaceGetPosition
|
||||||
|
|
||||||
|
type: Literal["face_get_position"] = "face_get_position"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_center(BaseModel):
|
||||||
|
"""The response to the 'FaceGetCenter' endpoint"""
|
||||||
|
|
||||||
|
data: FaceGetCenter
|
||||||
|
|
||||||
|
type: Literal["face_get_center"] = "face_get_center"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class face_get_gradient(BaseModel):
|
||||||
|
"""The response to the 'FaceGetGradient' endpoint"""
|
||||||
|
|
||||||
|
data: FaceGetGradient
|
||||||
|
|
||||||
|
type: Literal["face_get_gradient"] = "face_get_gradient"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class plane_intersect_and_project(BaseModel):
|
class plane_intersect_and_project(BaseModel):
|
||||||
"""The response to the 'PlaneIntersectAndProject' endpoint"""
|
"""The response to the 'PlaneIntersectAndProject' endpoint"""
|
||||||
|
|
||||||
@ -301,6 +446,16 @@ class import_files(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class imported_geometry(BaseModel):
|
||||||
|
"""The response to the 'ImportedGeometry' endpoint"""
|
||||||
|
|
||||||
|
data: ImportedGeometry
|
||||||
|
|
||||||
|
type: Literal["imported_geometry"] = "imported_geometry"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class mass(BaseModel):
|
class mass(BaseModel):
|
||||||
"""The response to the 'Mass' endpoint"""
|
"""The response to the 'Mass' endpoint"""
|
||||||
|
|
||||||
@ -371,6 +526,16 @@ class entity_get_distance(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class entity_linear_pattern_transform(BaseModel):
|
||||||
|
"""The response to the 'EntityLinearPatternTransform' endpoint"""
|
||||||
|
|
||||||
|
data: EntityLinearPatternTransform
|
||||||
|
|
||||||
|
type: Literal["entity_linear_pattern_transform"] = "entity_linear_pattern_transform"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class entity_linear_pattern(BaseModel):
|
class entity_linear_pattern(BaseModel):
|
||||||
"""The response to the 'EntityLinearPattern' endpoint"""
|
"""The response to the 'EntityLinearPattern' endpoint"""
|
||||||
|
|
||||||
@ -422,6 +587,15 @@ OkModelingCmdResponse = RootModel[
|
|||||||
entity_get_num_children,
|
entity_get_num_children,
|
||||||
entity_get_parent_id,
|
entity_get_parent_id,
|
||||||
entity_get_all_child_uuids,
|
entity_get_all_child_uuids,
|
||||||
|
close_path,
|
||||||
|
camera_drag_move,
|
||||||
|
camera_drag_end,
|
||||||
|
default_camera_get_settings,
|
||||||
|
default_camera_zoom,
|
||||||
|
zoom_to_fit,
|
||||||
|
view_isometric,
|
||||||
|
get_num_objects,
|
||||||
|
default_camera_focus_on,
|
||||||
select_get,
|
select_get,
|
||||||
solid3d_get_all_edge_faces,
|
solid3d_get_all_edge_faces,
|
||||||
solid3d_get_all_opposite_edges,
|
solid3d_get_all_opposite_edges,
|
||||||
@ -438,8 +612,13 @@ OkModelingCmdResponse = RootModel[
|
|||||||
path_get_curve_uuids_for_vertices,
|
path_get_curve_uuids_for_vertices,
|
||||||
path_get_vertex_uuids,
|
path_get_vertex_uuids,
|
||||||
curve_get_end_points,
|
curve_get_end_points,
|
||||||
|
face_is_planar,
|
||||||
|
face_get_position,
|
||||||
|
face_get_center,
|
||||||
|
face_get_gradient,
|
||||||
plane_intersect_and_project,
|
plane_intersect_and_project,
|
||||||
import_files,
|
import_files,
|
||||||
|
imported_geometry,
|
||||||
mass,
|
mass,
|
||||||
volume,
|
volume,
|
||||||
density,
|
density,
|
||||||
@ -447,6 +626,7 @@ OkModelingCmdResponse = RootModel[
|
|||||||
center_of_mass,
|
center_of_mass,
|
||||||
get_sketch_mode_plane,
|
get_sketch_mode_plane,
|
||||||
entity_get_distance,
|
entity_get_distance,
|
||||||
|
entity_linear_pattern_transform,
|
||||||
entity_linear_pattern,
|
entity_linear_pattern,
|
||||||
entity_circular_pattern,
|
entity_circular_pattern,
|
||||||
solid3d_get_extrusion_face_info,
|
solid3d_get_extrusion_face_info,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
from typing import List, Literal, Union
|
from typing import Dict, List, Literal, Union
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
|
||||||
|
from ..models.batch_response import BatchResponse
|
||||||
from ..models.ice_server import IceServer
|
from ..models.ice_server import IceServer
|
||||||
from ..models.ok_modeling_cmd_response import OkModelingCmdResponse
|
from ..models.ok_modeling_cmd_response import OkModelingCmdResponse
|
||||||
from ..models.raw_file import RawFile
|
from ..models.raw_file import RawFile
|
||||||
@ -82,6 +83,24 @@ class modeling(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class ModelingBatchData(BaseModel):
|
||||||
|
""""""
|
||||||
|
|
||||||
|
responses: Dict[str, BatchResponse]
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class modeling_batch(BaseModel):
|
||||||
|
"""Response to a ModelingBatch."""
|
||||||
|
|
||||||
|
data: ModelingBatchData
|
||||||
|
|
||||||
|
type: Literal["modeling_batch"] = "modeling_batch"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class ExportData(BaseModel):
|
class ExportData(BaseModel):
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
@ -116,6 +135,22 @@ class metrics_request(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class PongData(BaseModel):
|
||||||
|
""""""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class pong(BaseModel):
|
||||||
|
"""Pong response to a Ping message."""
|
||||||
|
|
||||||
|
data: PongData
|
||||||
|
|
||||||
|
type: Literal["pong"] = "pong"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
OkWebSocketResponseData = RootModel[
|
OkWebSocketResponseData = RootModel[
|
||||||
Annotated[
|
Annotated[
|
||||||
Union[
|
Union[
|
||||||
@ -123,8 +158,10 @@ OkWebSocketResponseData = RootModel[
|
|||||||
trickle_ice,
|
trickle_ice,
|
||||||
sdp_answer,
|
sdp_answer,
|
||||||
modeling,
|
modeling,
|
||||||
|
modeling_batch,
|
||||||
export,
|
export,
|
||||||
metrics_request,
|
metrics_request,
|
||||||
|
pong,
|
||||||
],
|
],
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
|
@ -9,7 +9,7 @@ class OutputFile(BaseModel):
|
|||||||
|
|
||||||
<details><summary>JSON schema</summary>
|
<details><summary>JSON schema</summary>
|
||||||
|
|
||||||
```json { "description": "Output file contents.", "type": "object", "properties": { "contents": { "description": "The contents of the file. This is base64 encoded so we can ensure it is UTF-8 for JSON.", "type": "string" }, "name": { "description": "The name of the file.", "default": "", "type": "string" } } } ``` </details>
|
```json { \"description\": \"Output file contents.\", \"type\": \"object\", \"properties\": { \"contents\": { \"description\": \"The contents of the file. This is base64 encoded so we can ensure it is UTF-8 for JSON.\", \"type\": \"string\" }, \"name\": { \"description\": \"The name of the file.\", \"default\": \"\", \"type\": \"string\" } } } ``` </details>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
contents: Optional[str] = None
|
contents: Optional[str] = None
|
||||||
|
@ -10,7 +10,7 @@ from ..models.point3d import Point3d
|
|||||||
|
|
||||||
|
|
||||||
class line(BaseModel):
|
class line(BaseModel):
|
||||||
"""A straight line segment. Goes from the current path "pen" to the given endpoint."""
|
"""A straight line segment. Goes from the current path \"pen\" to the given endpoint."""
|
||||||
|
|
||||||
end: Point3d
|
end: Point3d
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ class line(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class arc(BaseModel):
|
class arc(BaseModel):
|
||||||
"""A circular arc segment."""
|
"""A circular arc segment. Arcs can be drawn clockwise when start > end."""
|
||||||
|
|
||||||
center: Point2d
|
center: Point2d
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ class tangential_arc(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class tangential_arc_to(BaseModel):
|
class tangential_arc_to(BaseModel):
|
||||||
"""Adds a tangent arc from current pen position to the new position."""
|
"""Adds a tangent arc from current pen position to the new position. Arcs will choose a clockwise or counter-clockwise direction based on the arc end position."""
|
||||||
|
|
||||||
angle_snap_increment: Optional[Angle] = None
|
angle_snap_increment: Optional[Angle] = None
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
@ -6,10 +7,10 @@ from pydantic import BaseModel, ConfigDict
|
|||||||
class PerspectiveCameraParameters(BaseModel):
|
class PerspectiveCameraParameters(BaseModel):
|
||||||
"""Defines a perspective view."""
|
"""Defines a perspective view."""
|
||||||
|
|
||||||
fov_y: float
|
fov_y: Optional[float] = None
|
||||||
|
|
||||||
z_far: float
|
z_far: Optional[float] = None
|
||||||
|
|
||||||
z_near: float
|
z_near: Optional[float] = None
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
17
kittycad/models/point4d.py
Normal file
17
kittycad/models/point4d.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Point4d(BaseModel):
|
||||||
|
"""A point in homogeneous (4D) space"""
|
||||||
|
|
||||||
|
w: float
|
||||||
|
|
||||||
|
x: float
|
||||||
|
|
||||||
|
y: float
|
||||||
|
|
||||||
|
z: float
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
12
kittycad/models/post_effect_type.py
Normal file
12
kittycad/models/post_effect_type.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class PostEffectType(str, Enum):
|
||||||
|
"""Post effect type""" # noqa: E501
|
||||||
|
|
||||||
|
PHOSPHOR = "phosphor"
|
||||||
|
SSAO = "ssao"
|
||||||
|
NOEFFECT = "noeffect"
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return str(self.value)
|
12
kittycad/models/view_isometric.py
Normal file
12
kittycad/models/view_isometric.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class ViewIsometric(BaseModel):
|
||||||
|
"""The response from the `ViewIsometric` command."""
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -1,4 +1,4 @@
|
|||||||
from typing import List, Literal, Union
|
from typing import Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
@ -46,8 +46,12 @@ class modeling_cmd_req(BaseModel):
|
|||||||
class modeling_cmd_batch_req(BaseModel):
|
class modeling_cmd_batch_req(BaseModel):
|
||||||
"""A sequence of modeling requests. If any request fails, following requests will not be tried."""
|
"""A sequence of modeling requests. If any request fails, following requests will not be tried."""
|
||||||
|
|
||||||
|
batch_id: ModelingCmdId
|
||||||
|
|
||||||
requests: List[ModelingCmdReq]
|
requests: List[ModelingCmdReq]
|
||||||
|
|
||||||
|
responses: Optional[bool] = None
|
||||||
|
|
||||||
type: Literal["modeling_cmd_batch_req"] = "modeling_cmd_batch_req"
|
type: Literal["modeling_cmd_batch_req"] = "modeling_cmd_batch_req"
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
@ -71,6 +75,16 @@ class metrics_response(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class headers(BaseModel):
|
||||||
|
"""Authentication header request."""
|
||||||
|
|
||||||
|
headers: Dict[str, str]
|
||||||
|
|
||||||
|
type: Literal["headers"] = "headers"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
WebSocketRequest = RootModel[
|
WebSocketRequest = RootModel[
|
||||||
Annotated[
|
Annotated[
|
||||||
Union[
|
Union[
|
||||||
@ -80,6 +94,7 @@ WebSocketRequest = RootModel[
|
|||||||
modeling_cmd_batch_req,
|
modeling_cmd_batch_req,
|
||||||
ping,
|
ping,
|
||||||
metrics_response,
|
metrics_response,
|
||||||
|
headers,
|
||||||
],
|
],
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
|
12
kittycad/models/zoom_to_fit.py
Normal file
12
kittycad/models/zoom_to_fit.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.camera_settings import CameraSettings
|
||||||
|
|
||||||
|
|
||||||
|
class ZoomToFit(BaseModel):
|
||||||
|
"""The response from the `ZoomToFit` command."""
|
||||||
|
|
||||||
|
settings: CameraSettings
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -1,4 +1,5 @@
|
|||||||
""" Contains some shared types for properties """
|
""" Contains some shared types for properties """
|
||||||
|
|
||||||
from typing import (
|
from typing import (
|
||||||
BinaryIO,
|
BinaryIO,
|
||||||
Generic,
|
Generic,
|
||||||
|
2723
poetry.lock
generated
2723
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "kittycad"
|
name = "kittycad"
|
||||||
version = "0.6.6"
|
version = "0.6.16"
|
||||||
description = "A client library for accessing KittyCAD"
|
description = "A client library for accessing KittyCAD"
|
||||||
|
|
||||||
authors = []
|
authors = []
|
||||||
@ -11,6 +11,10 @@ packages = [
|
|||||||
]
|
]
|
||||||
include = ["CHANGELOG.md", "kittycad/py.typed"]
|
include = ["CHANGELOG.md", "kittycad/py.typed"]
|
||||||
|
|
||||||
|
[[tool.poetry.source]]
|
||||||
|
name = "pypi-public"
|
||||||
|
url = "https://pypi.org/simple/"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
attrs = ">=20.1.0,<24.0.0"
|
attrs = ">=20.1.0,<24.0.0"
|
||||||
httpx = ">=0.15.4,<0.26.0"
|
httpx = ">=0.15.4,<0.26.0"
|
||||||
@ -23,7 +27,7 @@ pydantic-extra-types = "^2.1.0"
|
|||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
autoclasstoc = "^1.6.0"
|
autoclasstoc = "^1.6.0"
|
||||||
black = "^23.12.1"
|
black = "^24.2.0"
|
||||||
isort = "^5.12.0"
|
isort = "^5.12.0"
|
||||||
jinja2 = "^3.1.3"
|
jinja2 = "^3.1.3"
|
||||||
jsonpatch = "^1.33"
|
jsonpatch = "^1.33"
|
||||||
@ -32,10 +36,10 @@ openapi-parser = "^0.2.6"
|
|||||||
openapi-spec-validator = "^0.6.0"
|
openapi-spec-validator = "^0.6.0"
|
||||||
prance = "^23.6.21"
|
prance = "^23.6.21"
|
||||||
pyenchant = "^3.2.2"
|
pyenchant = "^3.2.2"
|
||||||
pytest = "^7.4.2"
|
pytest = "^8.0.2"
|
||||||
pytest-asyncio = "^0.21.1"
|
pytest-asyncio = "^0.21.1"
|
||||||
pytest-cov = "^4.1.0"
|
pytest-cov = "^4.1.0"
|
||||||
ruff = "^0.2.2"
|
ruff = "^0.3.0"
|
||||||
Sphinx = "^7.1.2"
|
Sphinx = "^7.1.2"
|
||||||
sphinx-autoapi = "^2.0.1"
|
sphinx-autoapi = "^2.0.1"
|
||||||
sphinx-autodoc-typehints = "^1.24.0"
|
sphinx-autodoc-typehints = "^1.24.0"
|
||||||
|
Reference in New Issue
Block a user