Skip to content

Commit 243ae12

Browse files
Update api spec (#439)
* YOYO NEW API SPEC! * I have generated the latest API! --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent ed50b95 commit 243ae12

14 files changed

+723
-552
lines changed

kittycad.py.patch.json

Lines changed: 422 additions & 422 deletions
Large diffs are not rendered by default.

kittycad/api/ml/create_proprietary_to_kcl.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,27 @@
33
import httpx
44

55
from ...client import Client
6+
from ...models.code_option import CodeOption
67
from ...models.error import Error
78
from ...models.kcl_model import KclModel
89
from ...types import Response
910

1011

1112
def _get_kwargs(
13+
code_option: CodeOption,
1214
*,
1315
client: Client,
1416
) -> Dict[str, Any]:
1517
url = "{}/ml/convert/proprietary-to-kcl".format(
1618
client.base_url,
1719
) # noqa: E501
1820

21+
if code_option is not None:
22+
if "?" in url:
23+
url = url + "&code_option=" + str(code_option)
24+
else:
25+
url = url + "?code_option=" + str(code_option)
26+
1927
headers: Dict[str, Any] = client.get_headers()
2028
cookies: Dict[str, Any] = client.get_cookies()
2129

@@ -52,10 +60,12 @@ def _build_response(
5260

5361

5462
def sync_detailed(
63+
code_option: CodeOption,
5564
*,
5665
client: Client,
5766
) -> Response[Optional[Union[KclModel, Error]]]:
5867
kwargs = _get_kwargs(
68+
code_option=code_option,
5969
client=client,
6070
)
6171

@@ -68,6 +78,7 @@ def sync_detailed(
6878

6979

7080
def sync(
81+
code_option: CodeOption,
7182
*,
7283
client: Client,
7384
) -> Optional[Union[KclModel, Error]]:
@@ -76,15 +87,18 @@ def sync(
7687
A STEP file does not have feature tree data, so it will not work. A sldprt file does have feature tree data, so it will work.""" # noqa: E501
7788

7889
return sync_detailed(
90+
code_option=code_option,
7991
client=client,
8092
).parsed
8193

8294

8395
async def asyncio_detailed(
96+
code_option: CodeOption,
8497
*,
8598
client: Client,
8699
) -> Response[Optional[Union[KclModel, Error]]]:
87100
kwargs = _get_kwargs(
101+
code_option=code_option,
88102
client=client,
89103
)
90104

@@ -95,6 +109,7 @@ async def asyncio_detailed(
95109

96110

97111
async def asyncio(
112+
code_option: CodeOption,
98113
*,
99114
client: Client,
100115
) -> Optional[Union[KclModel, Error]]:
@@ -104,6 +119,7 @@ async def asyncio(
104119

105120
return (
106121
await asyncio_detailed(
122+
code_option=code_option,
107123
client=client,
108124
)
109125
).parsed

kittycad/examples_test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@
241241
from kittycad.models.base64data import Base64Data
242242
from kittycad.models.billing_info import BillingInfo
243243
from kittycad.models.code_language import CodeLanguage
244+
from kittycad.models.code_option import CodeOption
244245
from kittycad.models.create_shortlink_request import CreateShortlinkRequest
245246
from kittycad.models.created_at_sort_mode import CreatedAtSortMode
246247
from kittycad.models.crm_data import CrmData
@@ -1916,6 +1917,7 @@ def test_create_proprietary_to_kcl():
19161917

19171918
result: Optional[Union[KclModel, Error]] = create_proprietary_to_kcl.sync(
19181919
client=client,
1920+
code_option=CodeOption.PARSE,
19191921
)
19201922

19211923
if isinstance(result, Error) or result is None:
@@ -1929,6 +1931,7 @@ def test_create_proprietary_to_kcl():
19291931
response: Response[Optional[Union[KclModel, Error]]] = (
19301932
create_proprietary_to_kcl.sync_detailed(
19311933
client=client,
1934+
code_option=CodeOption.PARSE,
19321935
)
19331936
)
19341937

@@ -1942,13 +1945,15 @@ async def test_create_proprietary_to_kcl_async():
19421945

19431946
result: Optional[Union[KclModel, Error]] = await create_proprietary_to_kcl.asyncio(
19441947
client=client,
1948+
code_option=CodeOption.PARSE,
19451949
)
19461950

19471951
# OR run async with more info
19481952
response: Response[
19491953
Optional[Union[KclModel, Error]]
19501954
] = await create_proprietary_to_kcl.asyncio_detailed(
19511955
client=client,
1956+
code_option=CodeOption.PARSE,
19521957
)
19531958

19541959

kittycad/models/__init__.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .add_hole_from_offset import AddHoleFromOffset
55
from .add_org_member import AddOrgMember
66
from .address_details import AddressDetails
7+
from .adjacency_info import AdjacencyInfo
78
from .angle import Angle
89
from .annotation_line_end import AnnotationLineEnd
910
from .annotation_line_end_options import AnnotationLineEndOptions
@@ -50,6 +51,7 @@
5051
from .close_path import ClosePath
5152
from .cluster import Cluster
5253
from .code_language import CodeLanguage
54+
from .code_option import CodeOption
5355
from .code_output import CodeOutput
5456
from .color import Color
5557
from .complementary_edges import ComplementaryEdges
@@ -94,6 +96,7 @@
9496
from .discount_code import DiscountCode
9597
from .distance_type import DistanceType
9698
from .dxf_storage import DxfStorage
99+
from .edge_info import EdgeInfo
97100
from .edge_lines_visible import EdgeLinesVisible
98101
from .email_authentication_form import EmailAuthenticationForm
99102
from .empty import Empty
@@ -266,6 +269,7 @@
266269
from .project_points_to_plane import ProjectPointsToPlane
267270
from .raw_file import RawFile
268271
from .reconfigure_stream import ReconfigureStream
272+
from .relative_to import RelativeTo
269273
from .remove_scene_objects import RemoveSceneObjects
270274
from .revolve import Revolve
271275
from .revolve_about_edge import RevolveAboutEdge
@@ -306,16 +310,15 @@
306310
from .sketch_mode_disable import SketchModeDisable
307311
from .solid2d_add_hole import Solid2dAddHole
308312
from .solid3d_fillet_edge import Solid3dFilletEdge
313+
from .solid3d_get_adjacency_info import Solid3dGetAdjacencyInfo
309314
from .solid3d_get_all_edge_faces import Solid3dGetAllEdgeFaces
310315
from .solid3d_get_all_opposite_edges import Solid3dGetAllOppositeEdges
311316
from .solid3d_get_common_edge import Solid3dGetCommonEdge
312317
from .solid3d_get_extrusion_face_info import Solid3dGetExtrusionFaceInfo
313-
from .solid3d_get_info import Solid3dGetInfo
314318
from .solid3d_get_next_adjacent_edge import Solid3dGetNextAdjacentEdge
315319
from .solid3d_get_opposite_edge import Solid3dGetOppositeEdge
316320
from .solid3d_get_prev_adjacent_edge import Solid3dGetPrevAdjacentEdge
317321
from .solid3d_shell_face import Solid3dShellFace
318-
from .solid_info import SolidInfo
319322
from .source_position import SourcePosition
320323
from .source_range import SourceRange
321324
from .source_range_prompt import SourceRangePrompt

kittycad/models/adjacency_info.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from typing import Optional
2+
3+
from pydantic import BaseModel, ConfigDict
4+
5+
from ..models.edge_info import EdgeInfo
6+
7+
8+
class AdjacencyInfo(BaseModel):
9+
"""Edge info struct (useful for maintaining mappings between edges and faces and adjacent/opposite edges)."""
10+
11+
adjacent_info: Optional[EdgeInfo] = None
12+
13+
opposite_info: Optional[EdgeInfo] = None
14+
15+
original_info: Optional[EdgeInfo] = None
16+
17+
model_config = ConfigDict(protected_namespaces=())

kittycad/models/code_option.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from enum import Enum
2+
3+
4+
class CodeOption(str, Enum):
5+
"""Code option for running and verifying kcl.
6+
7+
<details><summary>JSON schema</summary>
8+
9+
```json { "title": "CodeOption", "description": "Code option for running and verifying kcl.", "type": "string", "enum": [ "parse", "execute", "cleanup", "mock_execute" ] } ``` </details>""" # noqa: E501
10+
11+
PARSE = "parse"
12+
EXECUTE = "execute"
13+
CLEANUP = "cleanup"
14+
MOCK_EXECUTE = "mock_execute"
15+
16+
def __str__(self) -> str:
17+
return str(self.value)

kittycad/models/edge_info.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from typing import List
2+
3+
from pydantic import BaseModel, ConfigDict
4+
5+
6+
class EdgeInfo(BaseModel):
7+
"""A list of faces for a specific edge."""
8+
9+
edge_id: str
10+
11+
faces: List[str]
12+
13+
model_config = ConfigDict(protected_namespaces=())

kittycad/models/modeling_cmd.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from ..models.perspective_camera_parameters import PerspectiveCameraParameters
3232
from ..models.point2d import Point2d
3333
from ..models.point3d import Point3d
34+
from ..models.relative_to import RelativeTo
3435
from ..models.scene_selection_type import SceneSelectionType
3536
from ..models.scene_tool_type import SceneToolType
3637
from ..models.transform import Transform
@@ -104,6 +105,8 @@ class OptionExtrude(BaseModel):
104105
class OptionSweep(BaseModel):
105106
"""Extrude the object along a path."""
106107

108+
relative_to: RelativeTo = "sketch_plane" # type: ignore
109+
107110
sectional: bool
108111

109112
target: ModelingCmdId
@@ -1493,12 +1496,14 @@ class OptionSolid3DGetExtrusionFaceInfo(BaseModel):
14931496
model_config = ConfigDict(protected_namespaces=())
14941497

14951498

1496-
class OptionSolid3DGetInfo(BaseModel):
1499+
class OptionSolid3DGetAdjacencyInfo(BaseModel):
14971500
"""Get a concise description of all of solids edges."""
14981501

1502+
edge_id: str
1503+
14991504
object_id: str
15001505

1501-
type: Literal["solid3d_get_info"] = "solid3d_get_info"
1506+
type: Literal["solid3d_get_adjacency_info"] = "solid3d_get_adjacency_info"
15021507

15031508
model_config = ConfigDict(protected_namespaces=())
15041509

@@ -1735,7 +1740,7 @@ class OptionSetGridReferencePlane(BaseModel):
17351740
OptionOrientToFace,
17361741
OptionViewIsometric,
17371742
OptionSolid3DGetExtrusionFaceInfo,
1738-
OptionSolid3DGetInfo,
1743+
OptionSolid3DGetAdjacencyInfo,
17391744
OptionSelectClear,
17401745
OptionSelectGet,
17411746
OptionGetNumObjects,

kittycad/models/ok_modeling_cmd_response.py

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing_extensions import Annotated
55

66
from ..models.add_hole_from_offset import AddHoleFromOffset
7+
from ..models.adjacency_info import AdjacencyInfo
78
from ..models.boolean_intersection import BooleanIntersection
89
from ..models.boolean_subtract import BooleanSubtract
910
from ..models.boolean_union import BooleanUnion
@@ -32,6 +33,7 @@
3233
from ..models.default_camera_zoom import DefaultCameraZoom
3334
from ..models.density import Density
3435
from ..models.disable_dry_run import DisableDryRun
36+
from ..models.edge_info import EdgeInfo
3537
from ..models.edge_lines_visible import EdgeLinesVisible
3638
from ..models.enable_dry_run import EnableDryRun
3739
from ..models.enable_sketch_mode import EnableSketchMode
@@ -121,16 +123,15 @@
121123
from ..models.sketch_mode_disable import SketchModeDisable
122124
from ..models.solid2d_add_hole import Solid2dAddHole
123125
from ..models.solid3d_fillet_edge import Solid3dFilletEdge
126+
from ..models.solid3d_get_adjacency_info import Solid3dGetAdjacencyInfo
124127
from ..models.solid3d_get_all_edge_faces import Solid3dGetAllEdgeFaces
125128
from ..models.solid3d_get_all_opposite_edges import Solid3dGetAllOppositeEdges
126129
from ..models.solid3d_get_common_edge import Solid3dGetCommonEdge
127130
from ..models.solid3d_get_extrusion_face_info import Solid3dGetExtrusionFaceInfo
128-
from ..models.solid3d_get_info import Solid3dGetInfo
129131
from ..models.solid3d_get_next_adjacent_edge import Solid3dGetNextAdjacentEdge
130132
from ..models.solid3d_get_opposite_edge import Solid3dGetOppositeEdge
131133
from ..models.solid3d_get_prev_adjacent_edge import Solid3dGetPrevAdjacentEdge
132134
from ..models.solid3d_shell_face import Solid3dShellFace
133-
from ..models.solid_info import SolidInfo
134135
from ..models.start_path import StartPath
135136
from ..models.surface_area import SurfaceArea
136137
from ..models.sweep import Sweep
@@ -963,6 +964,16 @@ class OptionSelectGet(BaseModel):
963964
model_config = ConfigDict(protected_namespaces=())
964965

965966

967+
class OptionSolid3DGetAdjacencyInfo(BaseModel):
968+
""""""
969+
970+
data: Solid3dGetAdjacencyInfo
971+
972+
type: Literal["solid3d_get_adjacency_info"] = "solid3d_get_adjacency_info"
973+
974+
model_config = ConfigDict(protected_namespaces=())
975+
976+
966977
class OptionSolid3DGetAllEdgeFaces(BaseModel):
967978
""""""
968979

@@ -1315,6 +1326,16 @@ class OptionFaceEdgeInfo(BaseModel):
13151326
model_config = ConfigDict(protected_namespaces=())
13161327

13171328

1329+
class OptionEdgeInfo(BaseModel):
1330+
""""""
1331+
1332+
data: EdgeInfo
1333+
1334+
type: Literal["edge_info"] = "edge_info"
1335+
1336+
model_config = ConfigDict(protected_namespaces=())
1337+
1338+
13181339
class OptionEntityClone(BaseModel):
13191340
""""""
13201341

@@ -1435,22 +1456,12 @@ class OptionComplementaryEdges(BaseModel):
14351456
model_config = ConfigDict(protected_namespaces=())
14361457

14371458

1438-
class OptionSolid3DGetInfo(BaseModel):
1439-
""""""
1440-
1441-
data: Solid3dGetInfo
1442-
1443-
type: Literal["solid3d_get_info"] = "solid3d_get_info"
1444-
1445-
model_config = ConfigDict(protected_namespaces=())
1446-
1447-
1448-
class OptionSolidInfo(BaseModel):
1459+
class OptionAdjacencyInfo(BaseModel):
14491460
""""""
14501461

1451-
data: SolidInfo
1462+
data: AdjacencyInfo
14521463

1453-
type: Literal["solid_info"] = "solid_info"
1464+
type: Literal["adjacency_info"] = "adjacency_info"
14541465

14551466
model_config = ConfigDict(protected_namespaces=())
14561467

@@ -1580,6 +1591,7 @@ class OptionBooleanSubtract(BaseModel):
15801591
OptionAddHoleFromOffset,
15811592
OptionDefaultCameraFocusOn,
15821593
OptionSelectGet,
1594+
OptionSolid3DGetAdjacencyInfo,
15831595
OptionSolid3DGetAllEdgeFaces,
15841596
OptionSolid3DGetAllOppositeEdges,
15851597
OptionSolid3DGetOppositeEdge,
@@ -1615,6 +1627,7 @@ class OptionBooleanSubtract(BaseModel):
16151627
OptionGetSketchModePlane,
16161628
OptionEntityGetDistance,
16171629
OptionFaceEdgeInfo,
1630+
OptionEdgeInfo,
16181631
OptionEntityClone,
16191632
OptionEntityLinearPatternTransform,
16201633
OptionEntityLinearPattern,
@@ -1627,8 +1640,7 @@ class OptionBooleanSubtract(BaseModel):
16271640
OptionSolid3DGetExtrusionFaceInfo,
16281641
OptionExtrusionFaceInfo,
16291642
OptionComplementaryEdges,
1630-
OptionSolid3DGetInfo,
1631-
OptionSolidInfo,
1643+
OptionAdjacencyInfo,
16321644
OptionSetGridReferencePlane,
16331645
OptionBooleanUnion,
16341646
OptionBooleanIntersection,

0 commit comments

Comments
 (0)