autoassembler 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. autoassembler/.fernignore +7 -0
  2. autoassembler/__init__.py +537 -0
  3. autoassembler/_custom/__init__.py +56 -0
  4. autoassembler/_custom/assemblies.py +226 -0
  5. autoassembler/_custom/assemblies_api.py +188 -0
  6. autoassembler/_custom/credentials.py +248 -0
  7. autoassembler/_custom/http.py +42 -0
  8. autoassembler/_custom/operations.py +258 -0
  9. autoassembler/_custom/planning.py +598 -0
  10. autoassembler/_custom/planning_api.py +225 -0
  11. autoassembler/_default_clients.py +32 -0
  12. autoassembler/_version.py +8 -0
  13. autoassembler/alpha/__init__.py +63 -0
  14. autoassembler/alpha/client.py +82 -0
  15. autoassembler/alpha/jobs/__init__.py +39 -0
  16. autoassembler/alpha/jobs/client.py +338 -0
  17. autoassembler/alpha/jobs/raw_client.py +641 -0
  18. autoassembler/alpha/jobs/types/__init__.py +42 -0
  19. autoassembler/alpha/jobs/types/cancel_job_jobs_response.py +12 -0
  20. autoassembler/alpha/jobs/types/list_jobs_jobs_response.py +30 -0
  21. autoassembler/alpha/jobs/types/list_jobs_jobs_response_pagination.py +22 -0
  22. autoassembler/alpha/jobs/types/retry_job_jobs_response.py +16 -0
  23. autoassembler/alpha/planning/__init__.py +49 -0
  24. autoassembler/alpha/planning/client.py +201 -0
  25. autoassembler/alpha/planning/raw_client.py +268 -0
  26. autoassembler/alpha/planning/types/__init__.py +47 -0
  27. autoassembler/alpha/planning/types/apply_ops_planning_request_namespace.py +5 -0
  28. autoassembler/alpha/planning/types/apply_ops_planning_request_ops_item.py +13 -0
  29. autoassembler/alpha/planning/types/apply_ops_planning_request_ops_item_op.py +58 -0
  30. autoassembler/alpha/planning/types/apply_ops_planning_response.py +13 -0
  31. autoassembler/alpha/raw_client.py +13 -0
  32. autoassembler/assemblies/__init__.py +73 -0
  33. autoassembler/assemblies/client.py +1177 -0
  34. autoassembler/assemblies/raw_client.py +1557 -0
  35. autoassembler/assemblies/types/__init__.py +71 -0
  36. autoassembler/assemblies/types/delete_assembly_response.py +12 -0
  37. autoassembler/assemblies/types/download_assembly_cad_request_namespace.py +5 -0
  38. autoassembler/assemblies/types/get_assembly_info_request_namespace.py +5 -0
  39. autoassembler/assemblies/types/get_status_request_namespace.py +5 -0
  40. autoassembler/assemblies/types/get_status_response.py +16 -0
  41. autoassembler/assemblies/types/get_status_response_progress.py +13 -0
  42. autoassembler/assemblies/types/get_status_response_status.py +7 -0
  43. autoassembler/assemblies/types/get_structure_request_namespace.py +5 -0
  44. autoassembler/assemblies/types/list_assembly_versions_request_namespace.py +5 -0
  45. autoassembler/assemblies/types/list_connections_request_namespace.py +5 -0
  46. autoassembler/assemblies/types/process_request_namespace.py +5 -0
  47. autoassembler/assemblies/types/update_assembly_info_request_namespace.py +5 -0
  48. autoassembler/auth/__init__.py +34 -0
  49. autoassembler/auth/client.py +282 -0
  50. autoassembler/auth/raw_client.py +413 -0
  51. autoassembler/auth/types/__init__.py +36 -0
  52. autoassembler/auth/types/create_access_token_request_grant_type.py +7 -0
  53. autoassembler/base_client.py +328 -0
  54. autoassembler/client.py +262 -0
  55. autoassembler/core/__init__.py +127 -0
  56. autoassembler/core/api_error.py +23 -0
  57. autoassembler/core/client_wrapper.py +147 -0
  58. autoassembler/core/datetime_utils.py +70 -0
  59. autoassembler/core/file.py +67 -0
  60. autoassembler/core/force_multipart.py +18 -0
  61. autoassembler/core/http_client.py +965 -0
  62. autoassembler/core/http_response.py +63 -0
  63. autoassembler/core/http_sse/__init__.py +42 -0
  64. autoassembler/core/http_sse/_api.py +455 -0
  65. autoassembler/core/http_sse/_decoders.py +74 -0
  66. autoassembler/core/http_sse/_exceptions.py +7 -0
  67. autoassembler/core/http_sse/_models.py +17 -0
  68. autoassembler/core/jsonable_encoder.py +133 -0
  69. autoassembler/core/logging.py +107 -0
  70. autoassembler/core/parse_error.py +36 -0
  71. autoassembler/core/pydantic_utilities.py +486 -0
  72. autoassembler/core/query_encoder.py +58 -0
  73. autoassembler/core/remove_none_from_dict.py +11 -0
  74. autoassembler/core/request_options.py +40 -0
  75. autoassembler/core/serialization.py +347 -0
  76. autoassembler/environment.py +7 -0
  77. autoassembler/errors/__init__.py +56 -0
  78. autoassembler/errors/bad_request_error.py +10 -0
  79. autoassembler/errors/conflict_error.py +10 -0
  80. autoassembler/errors/forbidden_error.py +11 -0
  81. autoassembler/errors/internal_server_error.py +11 -0
  82. autoassembler/errors/not_found_error.py +11 -0
  83. autoassembler/errors/unauthorized_error.py +10 -0
  84. autoassembler/errors/unprocessable_entity_error.py +11 -0
  85. autoassembler/operation.py +196 -0
  86. autoassembler/operations/__init__.py +4 -0
  87. autoassembler/operations/client.py +209 -0
  88. autoassembler/operations/raw_client.py +343 -0
  89. autoassembler/planning/__init__.py +70 -0
  90. autoassembler/planning/client.py +1174 -0
  91. autoassembler/planning/raw_client.py +1349 -0
  92. autoassembler/planning/types/__init__.py +68 -0
  93. autoassembler/planning/types/adapt_request_namespace.py +5 -0
  94. autoassembler/planning/types/create_mpp_request_body.py +8 -0
  95. autoassembler/planning/types/create_mpp_request_namespace.py +5 -0
  96. autoassembler/planning/types/delete_mpp_request_namespace.py +5 -0
  97. autoassembler/planning/types/delete_mpp_response.py +12 -0
  98. autoassembler/planning/types/evaluate_dfa_request_namespace.py +5 -0
  99. autoassembler/planning/types/get_mpp_request_namespace.py +5 -0
  100. autoassembler/planning/types/get_mpp_response.py +27 -0
  101. autoassembler/planning/types/list_mpps_request_namespace.py +5 -0
  102. autoassembler/planning/types/plan_request_namespace.py +5 -0
  103. autoassembler/planning/types/validate_request_namespace.py +5 -0
  104. autoassembler/py.typed +0 -0
  105. autoassembler/sessions/__init__.py +4 -0
  106. autoassembler/sessions/client.py +102 -0
  107. autoassembler/sessions/raw_client.py +126 -0
  108. autoassembler/types/__init__.py +344 -0
  109. autoassembler/types/access_token_response.py +14 -0
  110. autoassembler/types/active_session.py +25 -0
  111. autoassembler/types/active_session_namespace.py +5 -0
  112. autoassembler/types/adapt_mpp_accepted.py +26 -0
  113. autoassembler/types/assembly.py +30 -0
  114. autoassembler/types/assembly_connection.py +21 -0
  115. autoassembler/types/assembly_connection_relationship.py +5 -0
  116. autoassembler/types/assembly_connections_response.py +13 -0
  117. autoassembler/types/assembly_diff_metadata.py +35 -0
  118. autoassembler/types/assembly_diff_response.py +34 -0
  119. autoassembler/types/assembly_info.py +36 -0
  120. autoassembler/types/assembly_json_response.py +15 -0
  121. autoassembler/types/assembly_process_metadata.py +32 -0
  122. autoassembler/types/assembly_process_response.py +18 -0
  123. autoassembler/types/assembly_search_hit.py +31 -0
  124. autoassembler/types/assembly_version_summary.py +27 -0
  125. autoassembler/types/conflict_error_body.py +19 -0
  126. autoassembler/types/conflict_error_body_error.py +5 -0
  127. autoassembler/types/create_mpp_request.py +13 -0
  128. autoassembler/types/device_authorization_response.py +17 -0
  129. autoassembler/types/diff_accepted.py +42 -0
  130. autoassembler/types/diff_context_node.py +20 -0
  131. autoassembler/types/diff_details.py +73 -0
  132. autoassembler/types/diff_error_response.py +38 -0
  133. autoassembler/types/diff_flags.py +74 -0
  134. autoassembler/types/diff_ml_semantics.py +55 -0
  135. autoassembler/types/diff_node.py +26 -0
  136. autoassembler/types/diff_node_pair_with_parts.py +90 -0
  137. autoassembler/types/diff_node_with_parent.py +15 -0
  138. autoassembler/types/diff_reference_target_nodes.py +25 -0
  139. autoassembler/types/diff_report.py +24 -0
  140. autoassembler/types/diff_rigid_alignment.py +30 -0
  141. autoassembler/types/diff_summary.py +121 -0
  142. autoassembler/types/diff_summary_assembly_labels.py +44 -0
  143. autoassembler/types/diff_summary_geometric_diffs.py +24 -0
  144. autoassembler/types/diff_summary_persistent_edges_congruence.py +24 -0
  145. autoassembler/types/diff_summary_persistent_edges_congruence_pose.py +24 -0
  146. autoassembler/types/diff_summary_persistent_nodes_congruence.py +24 -0
  147. autoassembler/types/diff_summary_persistent_nodes_congruence_pose.py +24 -0
  148. autoassembler/types/diff_summary_total_parts.py +24 -0
  149. autoassembler/types/diff_swap.py +65 -0
  150. autoassembler/types/diff_swap_confidence.py +5 -0
  151. autoassembler/types/diff_swap_group.py +92 -0
  152. autoassembler/types/diff_validation_issue.py +38 -0
  153. autoassembler/types/diff_validation_issue_severity.py +5 -0
  154. autoassembler/types/diff_validation_result.py +35 -0
  155. autoassembler/types/diff_warning.py +79 -0
  156. autoassembler/types/diff_warning_reason.py +18 -0
  157. autoassembler/types/diff_warning_severity.py +5 -0
  158. autoassembler/types/error_response.py +30 -0
  159. autoassembler/types/filter.py +19 -0
  160. autoassembler/types/filter_field.py +7 -0
  161. autoassembler/types/filter_operator.py +5 -0
  162. autoassembler/types/job.py +123 -0
  163. autoassembler/types/job_progress.py +24 -0
  164. autoassembler/types/job_status.py +5 -0
  165. autoassembler/types/list_operations_response.py +25 -0
  166. autoassembler/types/manufacturing_process_plan.py +57 -0
  167. autoassembler/types/mpp_adapt_metadata.py +48 -0
  168. autoassembler/types/mpp_adapt_response.py +22 -0
  169. autoassembler/types/mpp_evaluate_dfa_metadata.py +47 -0
  170. autoassembler/types/mpp_evaluate_dfa_response.py +22 -0
  171. autoassembler/types/mpp_plan_metadata.py +47 -0
  172. autoassembler/types/mpp_plan_response.py +22 -0
  173. autoassembler/types/mpp_summary.py +20 -0
  174. autoassembler/types/mpp_validate_metadata.py +47 -0
  175. autoassembler/types/mpp_validate_response.py +22 -0
  176. autoassembler/types/o_auth_error_response.py +14 -0
  177. autoassembler/types/o_auth_error_response_error.py +18 -0
  178. autoassembler/types/operation.py +27 -0
  179. autoassembler/types/operation_error.py +21 -0
  180. autoassembler/types/operation_metadata.py +148 -0
  181. autoassembler/types/operation_response.py +94 -0
  182. autoassembler/types/process_assembly_accepted.py +14 -0
  183. autoassembler/types/process_assembly_response.py +55 -0
  184. autoassembler/types/process_assembly_skipped.py +14 -0
  185. autoassembler/types/search_assemblies_response.py +14 -0
  186. autoassembler/types/seq_plan_accepted.py +24 -0
  187. autoassembler/types/sever.py +33 -0
  188. autoassembler/types/sever_kind.py +5 -0
  189. autoassembler/types/sever_source.py +5 -0
  190. autoassembler/types/sort.py +8 -0
  191. autoassembler/types/upload_response.py +19 -0
  192. autoassembler/types/user_info.py +19 -0
  193. autoassembler/types/user_info_response.py +23 -0
  194. autoassembler/types/user_info_response_providers.py +14 -0
  195. autoassembler-0.3.1.dist-info/METADATA +209 -0
  196. autoassembler-0.3.1.dist-info/RECORD +198 -0
  197. autoassembler-0.3.1.dist-info/WHEEL +4 -0
  198. autoassembler-0.3.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class AssemblySearchHit(UniversalBaseModel):
13
+ id: typing_extensions.Annotated[
14
+ typing.Optional[str], FieldMetadata(alias="_id"), pydantic.Field(alias="_id", default=None)
15
+ ]
16
+ is_public: typing_extensions.Annotated[
17
+ typing.Optional[bool], FieldMetadata(alias="isPublic"), pydantic.Field(alias="isPublic", default=None)
18
+ ]
19
+ name: typing.Optional[str] = None
20
+ path: typing.Optional[str] = None
21
+ uploaded_at: typing_extensions.Annotated[
22
+ typing.Optional[dt.datetime],
23
+ FieldMetadata(alias="uploadedAt"),
24
+ pydantic.Field(alias="uploadedAt", default=None),
25
+ ]
26
+ uploaded_by: typing_extensions.Annotated[
27
+ typing.Optional[str], FieldMetadata(alias="uploadedBy"), pydantic.Field(alias="uploadedBy", default=None)
28
+ ]
29
+ route: typing.Optional[str] = None
30
+
31
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class AssemblyVersionSummary(UniversalBaseModel):
13
+ id: typing_extensions.Annotated[
14
+ typing.Optional[str], FieldMetadata(alias="_id"), pydantic.Field(alias="_id", default=None)
15
+ ]
16
+ name: typing.Optional[str] = None
17
+ route: typing.Optional[str] = None
18
+ uploaded_at: typing_extensions.Annotated[
19
+ typing.Optional[dt.datetime],
20
+ FieldMetadata(alias="uploadedAt"),
21
+ pydantic.Field(alias="uploadedAt", default=None),
22
+ ]
23
+ version_name: typing_extensions.Annotated[
24
+ typing.Optional[str], FieldMetadata(alias="versionName"), pydantic.Field(alias="versionName", default=None)
25
+ ]
26
+
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,19 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .conflict_error_body_error import ConflictErrorBodyError
10
+
11
+
12
+ class ConflictErrorBody(UniversalBaseModel):
13
+ error: ConflictErrorBodyError
14
+ station_ids: typing_extensions.Annotated[
15
+ typing.List[str], FieldMetadata(alias="stationIds"), pydantic.Field(alias="stationIds")
16
+ ]
17
+ message: typing.Optional[str] = None
18
+
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ConflictErrorBodyError = typing.Union[typing.Literal["stations_already_planned"], typing.Any]
@@ -0,0 +1,13 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+
8
+
9
+ class CreateMppRequest(UniversalBaseModel):
10
+ name: str
11
+ description: typing.Optional[str] = None
12
+
13
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,17 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+
8
+
9
+ class DeviceAuthorizationResponse(UniversalBaseModel):
10
+ device_code: str
11
+ expires_in: int
12
+ interval: int
13
+ user_code: str
14
+ verification_uri: str
15
+ verification_uri_complete: str
16
+
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,42 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.serialization import FieldMetadata
8
+ from .operation import Operation
9
+
10
+
11
+ class DiffAccepted(Operation):
12
+ """
13
+ The operation tracking the diff (AIP-151): poll `GET /api/v4/operations/{id}` until it is `done`, then fetch `resultUrl`. A cached diff comes back already `done`. `key` is the diff's job key, which the operation replaces, and will be removed.
14
+ """
15
+
16
+ key: str = pydantic.Field()
17
+ """
18
+ The diff's job key, for `GET /api/v4/jobs/{key}`.
19
+ """
20
+
21
+ result_url: typing_extensions.Annotated[
22
+ str,
23
+ FieldMetadata(alias="resultUrl"),
24
+ pydantic.Field(alias="resultUrl", description="Where the diff report is served once the operation is `done`."),
25
+ ]
26
+ """
27
+ Where the diff report is served once the operation is `done`.
28
+ """
29
+
30
+ viewer_url: typing_extensions.Annotated[
31
+ str,
32
+ FieldMetadata(alias="viewerUrl"),
33
+ pydantic.Field(
34
+ alias="viewerUrl",
35
+ description="Browser URL for the standalone assembly diff page. Includes the target route, compare route, and diff job key.",
36
+ ),
37
+ ]
38
+ """
39
+ Browser URL for the standalone assembly diff page. Includes the target route, compare route, and diff job key.
40
+ """
41
+
42
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,20 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+
8
+
9
+ class DiffContextNode(UniversalBaseModel):
10
+ node: str = pydantic.Field()
11
+ """
12
+ Part occurrence ID in the assembly tree.
13
+ """
14
+
15
+ part: str = pydantic.Field()
16
+ """
17
+ Part identifier or display name associated with the occurrence.
18
+ """
19
+
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,73 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .diff_flags import DiffFlags
10
+ from .diff_node_pair_with_parts import DiffNodePairWithParts
11
+ from .diff_reference_target_nodes import DiffReferenceTargetNodes
12
+ from .diff_rigid_alignment import DiffRigidAlignment
13
+ from .diff_swap import DiffSwap
14
+ from .diff_swap_group import DiffSwapGroup
15
+ from .diff_validation_result import DiffValidationResult
16
+ from .diff_warning import DiffWarning
17
+
18
+
19
+ class DiffDetails(UniversalBaseModel):
20
+ """
21
+ Parts and part pairs that explain the summary counts.
22
+ """
23
+
24
+ geom_diff_nodes: typing_extensions.Annotated[
25
+ typing.Optional[DiffReferenceTargetNodes],
26
+ FieldMetadata(alias="geomDiffNodes"),
27
+ pydantic.Field(alias="geomDiffNodes", default=None),
28
+ ]
29
+ swaps: typing.Optional[typing.List[DiffSwap]] = pydantic.Field(default=None)
30
+ """
31
+ All replacement, swap, and rename candidates, including high-, medium-, and low-confidence matches.
32
+ """
33
+
34
+ swap_groups: typing_extensions.Annotated[
35
+ typing.Optional[typing.List[DiffSwapGroup]],
36
+ FieldMetadata(alias="swapGroups"),
37
+ pydantic.Field(
38
+ alias="swapGroups",
39
+ default=None,
40
+ description="Grouped replacement candidates, including asymmetric many-to-many cases.",
41
+ ),
42
+ ]
43
+ """
44
+ Grouped replacement candidates, including asymmetric many-to-many cases.
45
+ """
46
+
47
+ moved_pose_pairs: typing_extensions.Annotated[
48
+ typing.Optional[typing.List[DiffNodePairWithParts]],
49
+ FieldMetadata(alias="movedPosePairs"),
50
+ pydantic.Field(
51
+ alias="movedPosePairs",
52
+ default=None,
53
+ description="Matching parts whose position or orientation changed between assemblies.",
54
+ ),
55
+ ]
56
+ """
57
+ Matching parts whose position or orientation changed between assemblies.
58
+ """
59
+
60
+ flags: typing.Optional[DiffFlags] = None
61
+ warnings: typing.Optional[typing.List[DiffWarning]] = pydantic.Field(default=None)
62
+ """
63
+ Non-swap analysis or validation findings surfaced for review.
64
+ """
65
+
66
+ validation: typing.Optional[DiffValidationResult] = None
67
+ rigid_alignment_ref_to_tgt: typing_extensions.Annotated[
68
+ typing.Optional[DiffRigidAlignment],
69
+ FieldMetadata(alias="rigidAlignmentRefToTgt"),
70
+ pydantic.Field(alias="rigidAlignmentRefToTgt", default=None),
71
+ ]
72
+
73
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,38 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+
10
+
11
+ class DiffErrorResponse(UniversalBaseModel):
12
+ error: typing.Optional[str] = pydantic.Field(default=None)
13
+ """
14
+ Machine-readable error code or message.
15
+ """
16
+
17
+ message: typing.Optional[str] = pydantic.Field(default=None)
18
+ """
19
+ User-facing explanation, when available.
20
+ """
21
+
22
+ details: typing.Optional[str] = pydantic.Field(default=None)
23
+ """
24
+ Additional remediation guidance, when available.
25
+ """
26
+
27
+ assembly_id: typing_extensions.Annotated[
28
+ typing.Optional[str],
29
+ FieldMetadata(alias="assemblyId"),
30
+ pydantic.Field(
31
+ alias="assemblyId", default=None, description="Assembly ID related to the error, when available."
32
+ ),
33
+ ]
34
+ """
35
+ Assembly ID related to the error, when available.
36
+ """
37
+
38
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,74 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .diff_node_pair_with_parts import DiffNodePairWithParts
10
+
11
+
12
+ class DiffFlags(UniversalBaseModel):
13
+ """
14
+ Supporting pair classifications for explanations, filters, and diagnostics.
15
+ """
16
+
17
+ same_geom_diff_name_pairs: typing_extensions.Annotated[
18
+ typing.Optional[typing.List[DiffNodePairWithParts]],
19
+ FieldMetadata(alias="sameGeomDiffNamePairs"),
20
+ pydantic.Field(alias="sameGeomDiffNamePairs", default=None, description="Matching parts whose names changed."),
21
+ ]
22
+ """
23
+ Matching parts whose names changed.
24
+ """
25
+
26
+ same_geom_pose_diff_name_pairs: typing_extensions.Annotated[
27
+ typing.Optional[typing.List[DiffNodePairWithParts]],
28
+ FieldMetadata(alias="sameGeomPoseDiffNamePairs"),
29
+ pydantic.Field(
30
+ alias="sameGeomPoseDiffNamePairs",
31
+ default=None,
32
+ description="Matching parts whose names changed while their placement stayed the same.",
33
+ ),
34
+ ]
35
+ """
36
+ Matching parts whose names changed while their placement stayed the same.
37
+ """
38
+
39
+ same_name_congruent_diff_pose_pairs: typing_extensions.Annotated[
40
+ typing.Optional[typing.List[DiffNodePairWithParts]],
41
+ FieldMetadata(alias="sameNameCongruentDiffPosePairs"),
42
+ pydantic.Field(
43
+ alias="sameNameCongruentDiffPosePairs",
44
+ default=None,
45
+ description="Matching parts with the same name whose placement changed.",
46
+ ),
47
+ ]
48
+ """
49
+ Matching parts with the same name whose placement changed.
50
+ """
51
+
52
+ part_revision: typing_extensions.Annotated[
53
+ typing.Optional[typing.List[DiffNodePairWithParts]],
54
+ FieldMetadata(alias="partRevision"),
55
+ pydantic.Field(alias="partRevision", default=None, description="Parts with the same name but different shape."),
56
+ ]
57
+ """
58
+ Parts with the same name but different shape.
59
+ """
60
+
61
+ unchanged_pairs: typing_extensions.Annotated[
62
+ typing.Optional[typing.List[DiffNodePairWithParts]],
63
+ FieldMetadata(alias="unchangedPairs"),
64
+ pydantic.Field(
65
+ alias="unchangedPairs",
66
+ default=None,
67
+ description="Parts that appear unchanged between the baseline and target assemblies. IDs may or may not differ.",
68
+ ),
69
+ ]
70
+ """
71
+ Parts that appear unchanged between the baseline and target assemblies. IDs may or may not differ.
72
+ """
73
+
74
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,55 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+
10
+
11
+ class DiffMlSemantics(UniversalBaseModel):
12
+ """
13
+ ML and volume signals used when evaluating a replacement candidate.
14
+ """
15
+
16
+ ml_classes_reference: typing_extensions.Annotated[
17
+ typing.Optional[typing.List[str]],
18
+ FieldMetadata(alias="mlClassesReference"),
19
+ pydantic.Field(alias="mlClassesReference", default=None),
20
+ ]
21
+ ml_classes_target: typing_extensions.Annotated[
22
+ typing.Optional[typing.List[str]],
23
+ FieldMetadata(alias="mlClassesTarget"),
24
+ pydantic.Field(alias="mlClassesTarget", default=None),
25
+ ]
26
+ ml_classes_match: typing_extensions.Annotated[
27
+ typing.Optional[bool],
28
+ FieldMetadata(alias="mlClassesMatch"),
29
+ pydantic.Field(alias="mlClassesMatch", default=None),
30
+ ]
31
+ ml_embedding_hint_bucket_reference: typing_extensions.Annotated[
32
+ typing.Optional[str],
33
+ FieldMetadata(alias="mlEmbeddingHintBucketReference"),
34
+ pydantic.Field(alias="mlEmbeddingHintBucketReference", default=None),
35
+ ]
36
+ ml_embedding_hint_bucket_target: typing_extensions.Annotated[
37
+ typing.Optional[str],
38
+ FieldMetadata(alias="mlEmbeddingHintBucketTarget"),
39
+ pydantic.Field(alias="mlEmbeddingHintBucketTarget", default=None),
40
+ ]
41
+ ml_embedding_hint_bucket_match: typing_extensions.Annotated[
42
+ typing.Optional[bool],
43
+ FieldMetadata(alias="mlEmbeddingHintBucketMatch"),
44
+ pydantic.Field(alias="mlEmbeddingHintBucketMatch", default=None),
45
+ ]
46
+ volume_ratio: typing_extensions.Annotated[
47
+ typing.Optional[float], FieldMetadata(alias="volumeRatio"), pydantic.Field(alias="volumeRatio", default=None)
48
+ ]
49
+ volume_ratio_min: typing_extensions.Annotated[
50
+ typing.Optional[float],
51
+ FieldMetadata(alias="volumeRatioMin"),
52
+ pydantic.Field(alias="volumeRatioMin", default=None),
53
+ ]
54
+
55
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+ from .diff_context_node import DiffContextNode
8
+
9
+
10
+ class DiffNode(UniversalBaseModel):
11
+ node: str = pydantic.Field()
12
+ """
13
+ Part occurrence ID in the assembly tree.
14
+ """
15
+
16
+ part: str = pydantic.Field()
17
+ """
18
+ Part identifier or display name associated with the occurrence.
19
+ """
20
+
21
+ context: typing.Optional[typing.List[DiffContextNode]] = pydantic.Field(default=None)
22
+ """
23
+ Surviving parts that define this added or removed part's liaisons.
24
+ """
25
+
26
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,90 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .diff_ml_semantics import DiffMlSemantics
10
+
11
+
12
+ class DiffNodePairWithParts(UniversalBaseModel):
13
+ reference_node: typing_extensions.Annotated[
14
+ typing.Optional[str],
15
+ FieldMetadata(alias="referenceNode"),
16
+ pydantic.Field(alias="referenceNode", default=None, description="Node identifier in the reference assembly."),
17
+ ]
18
+ """
19
+ Node identifier in the reference assembly.
20
+ """
21
+
22
+ target_node: typing_extensions.Annotated[
23
+ typing.Optional[str],
24
+ FieldMetadata(alias="targetNode"),
25
+ pydantic.Field(alias="targetNode", default=None, description="Node identifier in the target assembly."),
26
+ ]
27
+ """
28
+ Node identifier in the target assembly.
29
+ """
30
+
31
+ reference_parent: typing_extensions.Annotated[
32
+ typing.Optional[str],
33
+ FieldMetadata(alias="referenceParent"),
34
+ pydantic.Field(
35
+ alias="referenceParent", default=None, description="Parent node identifier in the reference assembly."
36
+ ),
37
+ ]
38
+ """
39
+ Parent node identifier in the reference assembly.
40
+ """
41
+
42
+ target_parent: typing_extensions.Annotated[
43
+ typing.Optional[str],
44
+ FieldMetadata(alias="targetParent"),
45
+ pydantic.Field(
46
+ alias="targetParent", default=None, description="Parent node identifier in the target assembly."
47
+ ),
48
+ ]
49
+ """
50
+ Parent node identifier in the target assembly.
51
+ """
52
+
53
+ reference_part: typing_extensions.Annotated[
54
+ typing.Optional[str],
55
+ FieldMetadata(alias="referencePart"),
56
+ pydantic.Field(
57
+ alias="referencePart", default=None, description="Part identifier or part name in the reference assembly."
58
+ ),
59
+ ]
60
+ """
61
+ Part identifier or part name in the reference assembly.
62
+ """
63
+
64
+ target_part: typing_extensions.Annotated[
65
+ typing.Optional[str],
66
+ FieldMetadata(alias="targetPart"),
67
+ pydantic.Field(
68
+ alias="targetPart", default=None, description="Part identifier or part name in the target assembly."
69
+ ),
70
+ ]
71
+ """
72
+ Part identifier or part name in the target assembly.
73
+ """
74
+
75
+ identity_score: typing_extensions.Annotated[
76
+ typing.Optional[float],
77
+ FieldMetadata(alias="identityScore"),
78
+ pydantic.Field(alias="identityScore", default=None, description="embedding_similarity × volume_ratio"),
79
+ ]
80
+ """
81
+ embedding_similarity × volume_ratio
82
+ """
83
+
84
+ ml_semantics: typing_extensions.Annotated[
85
+ typing.Optional[DiffMlSemantics],
86
+ FieldMetadata(alias="mlSemantics"),
87
+ pydantic.Field(alias="mlSemantics", default=None),
88
+ ]
89
+
90
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,15 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from .diff_node import DiffNode
7
+
8
+
9
+ class DiffNodeWithParent(DiffNode):
10
+ parent: typing.Optional[str] = pydantic.Field(default=None)
11
+ """
12
+ Parent node identifier in the assembly tree.
13
+ """
14
+
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+ from .diff_node import DiffNode
8
+
9
+
10
+ class DiffReferenceTargetNodes(UniversalBaseModel):
11
+ """
12
+ Parts present only in the baseline or only in the target assembly.
13
+ """
14
+
15
+ reference: typing.Optional[typing.List[DiffNode]] = pydantic.Field(default=None)
16
+ """
17
+ Parts present only in the baseline assembly.
18
+ """
19
+
20
+ target: typing.Optional[typing.List[DiffNode]] = pydantic.Field(default=None)
21
+ """
22
+ Parts present only in the target assembly.
23
+ """
24
+
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,24 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import UniversalBaseModel
7
+ from .diff_details import DiffDetails
8
+ from .diff_summary import DiffSummary
9
+
10
+
11
+ class DiffReport(UniversalBaseModel):
12
+ """
13
+ Structured comparison between a baseline assembly and a target assembly. `summary` provides counts for dashboards and badges; `details` identifies the parts and part pairs behind those counts.
14
+ """
15
+
16
+ version: int = pydantic.Field()
17
+ """
18
+ Diff response format version.
19
+ """
20
+
21
+ summary: DiffSummary
22
+ details: DiffDetails
23
+
24
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)
@@ -0,0 +1,30 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+
10
+
11
+ class DiffRigidAlignment(UniversalBaseModel):
12
+ """
13
+ Rigid transform from reference coordinates to target coordinates.
14
+ """
15
+
16
+ r: typing_extensions.Annotated[
17
+ typing.Optional[typing.List[typing.List[float]]],
18
+ FieldMetadata(alias="R"),
19
+ pydantic.Field(alias="R", default=None, description="3x3 rotation matrix."),
20
+ ]
21
+ """
22
+ 3x3 rotation matrix.
23
+ """
24
+
25
+ t: typing.Optional[typing.List[float]] = pydantic.Field(default=None)
26
+ """
27
+ Translation vector.
28
+ """
29
+
30
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)