everyrow 0.1.0__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 (183) hide show
  1. everyrow/__init__.py +4 -0
  2. everyrow/api_utils.py +45 -0
  3. everyrow/citations.py +46 -0
  4. everyrow/constants.py +4 -0
  5. everyrow/generated/__init__.py +8 -0
  6. everyrow/generated/api/__init__.py +1 -0
  7. everyrow/generated/api/default/__init__.py +1 -0
  8. everyrow/generated/api/default/continue_task_endpoint_tasks_continue_post.py +208 -0
  9. everyrow/generated/api/default/copy_artifacts_artifacts_copy_post.py +166 -0
  10. everyrow/generated/api/default/copy_workflow_endpoint_workflows_copy_post.py +166 -0
  11. everyrow/generated/api/default/create_api_key_endpoint_api_keys_create_post.py +186 -0
  12. everyrow/generated/api/default/create_session_endpoint_sessions_create_post.py +198 -0
  13. everyrow/generated/api/default/create_workflow_from_artifact_workflows_from_artifact_post.py +174 -0
  14. everyrow/generated/api/default/export_to_google_sheets_export_post.py +168 -0
  15. everyrow/generated/api/default/generate_feedback_endpoint_tasks_generate_feedback_post.py +186 -0
  16. everyrow/generated/api/default/get_artifacts_artifacts_get.py +260 -0
  17. everyrow/generated/api/default/get_default_timeout_seconds_models_default_timeout_seconds_get.py +165 -0
  18. everyrow/generated/api/default/get_job_progress_for_task_jobs_progress_get.py +167 -0
  19. everyrow/generated/api/default/get_metrics_metrics_get.py +80 -0
  20. everyrow/generated/api/default/get_queues_stats_jobs_queues_get.py +123 -0
  21. everyrow/generated/api/default/get_task_status_endpoint_tasks_task_id_status_get.py +193 -0
  22. everyrow/generated/api/default/get_user_usage_usage_get.py +123 -0
  23. everyrow/generated/api/default/healthz_healthz_get.py +127 -0
  24. everyrow/generated/api/default/import_from_google_sheets_import_post.py +170 -0
  25. everyrow/generated/api/default/interrupt_chat_task_tasks_chat_interrupt_post.py +172 -0
  26. everyrow/generated/api/default/list_api_keys_endpoint_api_keys_get.py +186 -0
  27. everyrow/generated/api/default/re_execute_task_endpoint_tasks_re_execute_post.py +192 -0
  28. everyrow/generated/api/default/revoke_api_key_endpoint_api_keys_key_id_revoke_post.py +181 -0
  29. everyrow/generated/api/default/revoke_jobs_for_task_jobs_revoke_post.py +164 -0
  30. everyrow/generated/api/default/rollback_to_message_endpoint_tasks_chat_rollback_post.py +186 -0
  31. everyrow/generated/api/default/submit_chat_task_tasks_chat_post.py +164 -0
  32. everyrow/generated/api/default/submit_task_tasks_post.py +172 -0
  33. everyrow/generated/api/default/task_resource_estimation_task_resource_estimation_post.py +319 -0
  34. everyrow/generated/api/default/trigger_workflow_execution_endpoint_workflows_trigger_post.py +166 -0
  35. everyrow/generated/api/default/whoami_whoami_get.py +127 -0
  36. everyrow/generated/client.py +268 -0
  37. everyrow/generated/errors.py +16 -0
  38. everyrow/generated/models/__init__.py +281 -0
  39. everyrow/generated/models/agent_improvement_instruction.py +69 -0
  40. everyrow/generated/models/agent_query_params.py +362 -0
  41. everyrow/generated/models/agent_query_params_system_prompt_kind_type_0.py +10 -0
  42. everyrow/generated/models/agent_task_args.py +163 -0
  43. everyrow/generated/models/agent_task_args_processing_mode.py +9 -0
  44. everyrow/generated/models/allowed_suggestions.py +8 -0
  45. everyrow/generated/models/api_key_info.py +163 -0
  46. everyrow/generated/models/artifact_changed_payload.py +89 -0
  47. everyrow/generated/models/artifact_group_record.py +330 -0
  48. everyrow/generated/models/artifact_group_record_metadata_type_0.py +46 -0
  49. everyrow/generated/models/artifact_group_record_trace_mapping_type_0.py +46 -0
  50. everyrow/generated/models/artifact_status.py +14 -0
  51. everyrow/generated/models/auto_cohort_conversation_message.py +533 -0
  52. everyrow/generated/models/aux_data.py +128 -0
  53. everyrow/generated/models/aux_data_source_bank.py +59 -0
  54. everyrow/generated/models/chat_completion_message_tool_call.py +46 -0
  55. everyrow/generated/models/chat_message_metadata.py +193 -0
  56. everyrow/generated/models/concatenate_query_params.py +46 -0
  57. everyrow/generated/models/concatenate_request.py +306 -0
  58. everyrow/generated/models/continue_reason.py +9 -0
  59. everyrow/generated/models/continue_task_request.py +133 -0
  60. everyrow/generated/models/controller_improvement_round.py +79 -0
  61. everyrow/generated/models/conversation_changed_payload.py +89 -0
  62. everyrow/generated/models/copy_artifacts_request.py +70 -0
  63. everyrow/generated/models/copy_artifacts_response.py +70 -0
  64. everyrow/generated/models/copy_workflow_request.py +62 -0
  65. everyrow/generated/models/copy_workflow_response.py +70 -0
  66. everyrow/generated/models/create_api_key_request.py +95 -0
  67. everyrow/generated/models/create_api_key_response.py +96 -0
  68. everyrow/generated/models/create_group_query_params.py +61 -0
  69. everyrow/generated/models/create_group_request.py +305 -0
  70. everyrow/generated/models/create_query_params.py +61 -0
  71. everyrow/generated/models/create_request.py +305 -0
  72. everyrow/generated/models/create_session_request.py +62 -0
  73. everyrow/generated/models/create_session_response.py +63 -0
  74. everyrow/generated/models/create_workflow_from_artifact_request.py +92 -0
  75. everyrow/generated/models/create_workflow_from_artifact_response.py +70 -0
  76. everyrow/generated/models/data_frame_method.py +18 -0
  77. everyrow/generated/models/date_cutoffs.py +145 -0
  78. everyrow/generated/models/dedupe_mode.py +9 -0
  79. everyrow/generated/models/dedupe_query_params.py +174 -0
  80. everyrow/generated/models/dedupe_request_params.py +311 -0
  81. everyrow/generated/models/deep_merge_public_params.py +143 -0
  82. everyrow/generated/models/deep_merge_request.py +313 -0
  83. everyrow/generated/models/deep_rank_public_params.py +99 -0
  84. everyrow/generated/models/deep_rank_request.py +313 -0
  85. everyrow/generated/models/deep_screen_public_params.py +122 -0
  86. everyrow/generated/models/deep_screen_request.py +313 -0
  87. everyrow/generated/models/derive_expression.py +69 -0
  88. everyrow/generated/models/derive_query_params.py +75 -0
  89. everyrow/generated/models/derive_request.py +307 -0
  90. everyrow/generated/models/document_query_tool.py +12 -0
  91. everyrow/generated/models/drop_columns_query_params.py +61 -0
  92. everyrow/generated/models/drop_columns_request.py +305 -0
  93. everyrow/generated/models/embedding_models.py +9 -0
  94. everyrow/generated/models/event_type.py +14 -0
  95. everyrow/generated/models/execution_metadata.py +146 -0
  96. everyrow/generated/models/export_request.py +75 -0
  97. everyrow/generated/models/export_request_token_data.py +46 -0
  98. everyrow/generated/models/export_to_google_sheets_export_post_response_export_to_google_sheets_export_post.py +46 -0
  99. everyrow/generated/models/filter_query_params.py +91 -0
  100. everyrow/generated/models/filter_request.py +305 -0
  101. everyrow/generated/models/flatten_query_params.py +46 -0
  102. everyrow/generated/models/flatten_request.py +305 -0
  103. everyrow/generated/models/generate_feedback_request.py +62 -0
  104. everyrow/generated/models/group_by_query_params.py +62 -0
  105. everyrow/generated/models/group_by_request.py +305 -0
  106. everyrow/generated/models/healthz_healthz_get_response_healthz_healthz_get.py +46 -0
  107. everyrow/generated/models/http_validation_error.py +79 -0
  108. everyrow/generated/models/image_chat_content_part.py +80 -0
  109. everyrow/generated/models/image_chat_content_part_image_url.py +46 -0
  110. everyrow/generated/models/import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.py +46 -0
  111. everyrow/generated/models/import_request.py +83 -0
  112. everyrow/generated/models/import_request_token_data.py +46 -0
  113. everyrow/generated/models/insufficient_balance_error.py +81 -0
  114. everyrow/generated/models/join_query_params.py +73 -0
  115. everyrow/generated/models/join_request.py +305 -0
  116. everyrow/generated/models/llm_enum.py +54 -0
  117. everyrow/generated/models/map_agent_request_params.py +313 -0
  118. everyrow/generated/models/map_multi_agent_request_params.py +313 -0
  119. everyrow/generated/models/message_created_payload.py +98 -0
  120. everyrow/generated/models/multi_agent_effort_level.py +10 -0
  121. everyrow/generated/models/multi_agent_query_params.py +264 -0
  122. everyrow/generated/models/multi_modal_chat_message.py +160 -0
  123. everyrow/generated/models/multi_modal_chat_message_role.py +10 -0
  124. everyrow/generated/models/preview_metadata.py +144 -0
  125. everyrow/generated/models/processing_mode.py +10 -0
  126. everyrow/generated/models/progress_status.py +83 -0
  127. everyrow/generated/models/queue_stats.py +77 -0
  128. everyrow/generated/models/reduce_agent_request_params.py +305 -0
  129. everyrow/generated/models/reduce_multi_agent_request_params.py +305 -0
  130. everyrow/generated/models/resource_estimation_response.py +85 -0
  131. everyrow/generated/models/response_schema_type.py +9 -0
  132. everyrow/generated/models/revoke_api_key_response.py +61 -0
  133. everyrow/generated/models/rollback_to_message_request.py +62 -0
  134. everyrow/generated/models/rollback_to_message_response.py +77 -0
  135. everyrow/generated/models/session_changed_payload.py +69 -0
  136. everyrow/generated/models/simple_chat_message.py +121 -0
  137. everyrow/generated/models/simple_chat_message_role.py +10 -0
  138. everyrow/generated/models/simple_chat_message_with_tool_calls.py +156 -0
  139. everyrow/generated/models/source_database_entry.py +92 -0
  140. everyrow/generated/models/standalone_artifact_record.py +278 -0
  141. everyrow/generated/models/standalone_artifact_record_metadata_type_0.py +46 -0
  142. everyrow/generated/models/standalone_artifact_record_trace_mapping_type_0.py +46 -0
  143. everyrow/generated/models/status_count.py +71 -0
  144. everyrow/generated/models/status_count_status.py +13 -0
  145. everyrow/generated/models/submit_chat_task_body.py +497 -0
  146. everyrow/generated/models/submit_chat_task_body_selected_task_type_type_0.py +11 -0
  147. everyrow/generated/models/submit_task_body.py +745 -0
  148. everyrow/generated/models/task_changed_payload.py +105 -0
  149. everyrow/generated/models/task_effort.py +10 -0
  150. everyrow/generated/models/task_id_request.py +62 -0
  151. everyrow/generated/models/task_insert.py +725 -0
  152. everyrow/generated/models/task_insert_query_params.py +46 -0
  153. everyrow/generated/models/task_metadata.py +323 -0
  154. everyrow/generated/models/task_metadata_cols_to_rename_type_0.py +46 -0
  155. everyrow/generated/models/task_response.py +62 -0
  156. everyrow/generated/models/task_status.py +12 -0
  157. everyrow/generated/models/task_status_response.py +112 -0
  158. everyrow/generated/models/task_type.py +31 -0
  159. everyrow/generated/models/text_chat_content_part.py +74 -0
  160. everyrow/generated/models/tool_response_message.py +127 -0
  161. everyrow/generated/models/toolkit_constants.py +80 -0
  162. everyrow/generated/models/trace_changed_payload.py +94 -0
  163. everyrow/generated/models/trace_info.py +78 -0
  164. everyrow/generated/models/trigger_workflow_execution_request.py +112 -0
  165. everyrow/generated/models/trigger_workflow_execution_request_task_params.py +65 -0
  166. everyrow/generated/models/trigger_workflow_execution_request_task_params_additional_property.py +46 -0
  167. everyrow/generated/models/trigger_workflow_execution_response.py +69 -0
  168. everyrow/generated/models/upload_csv_payload.py +310 -0
  169. everyrow/generated/models/upload_csv_query_params.py +114 -0
  170. everyrow/generated/models/usage_response.py +77 -0
  171. everyrow/generated/models/validation_error.py +90 -0
  172. everyrow/generated/models/whoami_whoami_get_response_whoami_whoami_get.py +46 -0
  173. everyrow/generated/models/workflow_leaf_node_input.py +70 -0
  174. everyrow/generated/py.typed +1 -0
  175. everyrow/generated/types.py +54 -0
  176. everyrow/ops.py +672 -0
  177. everyrow/result.py +25 -0
  178. everyrow/session.py +53 -0
  179. everyrow/task.py +143 -0
  180. everyrow-0.1.0.dist-info/METADATA +238 -0
  181. everyrow-0.1.0.dist-info/RECORD +183 -0
  182. everyrow-0.1.0.dist-info/WHEEL +4 -0
  183. everyrow-0.1.0.dist-info/licenses/LICENSE.txt +21 -0
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="ImportFromGoogleSheetsImportPostResponseImportFromGoogleSheetsImportPost")
10
+
11
+
12
+ @_attrs_define
13
+ class ImportFromGoogleSheetsImportPostResponseImportFromGoogleSheetsImportPost:
14
+ """ """
15
+
16
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ import_from_google_sheets_import_post_response_import_from_google_sheets_import_post = cls()
28
+
29
+ import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.additional_properties = d
30
+ return import_from_google_sheets_import_post_response_import_from_google_sheets_import_post
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> str:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: str) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,83 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.import_request_token_data import ImportRequestTokenData
11
+
12
+
13
+ T = TypeVar("T", bound="ImportRequest")
14
+
15
+
16
+ @_attrs_define
17
+ class ImportRequest:
18
+ """
19
+ Attributes:
20
+ session_id (str):
21
+ token_data (ImportRequestTokenData):
22
+ sheets_url (str):
23
+ """
24
+
25
+ session_id: str
26
+ token_data: ImportRequestTokenData
27
+ sheets_url: str
28
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
+
30
+ def to_dict(self) -> dict[str, Any]:
31
+ session_id = self.session_id
32
+
33
+ token_data = self.token_data.to_dict()
34
+
35
+ sheets_url = self.sheets_url
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update(
40
+ {
41
+ "session_id": session_id,
42
+ "token_data": token_data,
43
+ "sheets_url": sheets_url,
44
+ }
45
+ )
46
+
47
+ return field_dict
48
+
49
+ @classmethod
50
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
51
+ from ..models.import_request_token_data import ImportRequestTokenData
52
+
53
+ d = dict(src_dict)
54
+ session_id = d.pop("session_id")
55
+
56
+ token_data = ImportRequestTokenData.from_dict(d.pop("token_data"))
57
+
58
+ sheets_url = d.pop("sheets_url")
59
+
60
+ import_request = cls(
61
+ session_id=session_id,
62
+ token_data=token_data,
63
+ sheets_url=sheets_url,
64
+ )
65
+
66
+ import_request.additional_properties = d
67
+ return import_request
68
+
69
+ @property
70
+ def additional_keys(self) -> list[str]:
71
+ return list(self.additional_properties.keys())
72
+
73
+ def __getitem__(self, key: str) -> Any:
74
+ return self.additional_properties[key]
75
+
76
+ def __setitem__(self, key: str, value: Any) -> None:
77
+ self.additional_properties[key] = value
78
+
79
+ def __delitem__(self, key: str) -> None:
80
+ del self.additional_properties[key]
81
+
82
+ def __contains__(self, key: str) -> bool:
83
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="ImportRequestTokenData")
10
+
11
+
12
+ @_attrs_define
13
+ class ImportRequestTokenData:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ import_request_token_data = cls()
28
+
29
+ import_request_token_data.additional_properties = d
30
+ return import_request_token_data
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,81 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="InsufficientBalanceError")
12
+
13
+
14
+ @_attrs_define
15
+ class InsufficientBalanceError:
16
+ """Error response when user has insufficient balance for usage-based billing.
17
+
18
+ Attributes:
19
+ message (str):
20
+ current_balance_dollars (float):
21
+ error (str | Unset): Default: 'INSUFFICIENT_BALANCE'.
22
+ """
23
+
24
+ message: str
25
+ current_balance_dollars: float
26
+ error: str | Unset = "INSUFFICIENT_BALANCE"
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ message = self.message
31
+
32
+ current_balance_dollars = self.current_balance_dollars
33
+
34
+ error = self.error
35
+
36
+ field_dict: dict[str, Any] = {}
37
+ field_dict.update(self.additional_properties)
38
+ field_dict.update(
39
+ {
40
+ "message": message,
41
+ "current_balance_dollars": current_balance_dollars,
42
+ }
43
+ )
44
+ if error is not UNSET:
45
+ field_dict["error"] = error
46
+
47
+ return field_dict
48
+
49
+ @classmethod
50
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
51
+ d = dict(src_dict)
52
+ message = d.pop("message")
53
+
54
+ current_balance_dollars = d.pop("current_balance_dollars")
55
+
56
+ error = d.pop("error", UNSET)
57
+
58
+ insufficient_balance_error = cls(
59
+ message=message,
60
+ current_balance_dollars=current_balance_dollars,
61
+ error=error,
62
+ )
63
+
64
+ insufficient_balance_error.additional_properties = d
65
+ return insufficient_balance_error
66
+
67
+ @property
68
+ def additional_keys(self) -> list[str]:
69
+ return list(self.additional_properties.keys())
70
+
71
+ def __getitem__(self, key: str) -> Any:
72
+ return self.additional_properties[key]
73
+
74
+ def __setitem__(self, key: str, value: Any) -> None:
75
+ self.additional_properties[key] = value
76
+
77
+ def __delitem__(self, key: str) -> None:
78
+ del self.additional_properties[key]
79
+
80
+ def __contains__(self, key: str) -> bool:
81
+ return key in self.additional_properties
@@ -0,0 +1,73 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="JoinQueryParams")
12
+
13
+
14
+ @_attrs_define
15
+ class JoinQueryParams:
16
+ """
17
+ Attributes:
18
+ join_fields (list[str]):
19
+ auto_detect_join_fields (bool | Unset): When true, automatically detect all columns with matching values to join
20
+ on. When enabled, join_fields is ignored. Default: False.
21
+ """
22
+
23
+ join_fields: list[str]
24
+ auto_detect_join_fields: bool | Unset = False
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ join_fields = self.join_fields
29
+
30
+ auto_detect_join_fields = self.auto_detect_join_fields
31
+
32
+ field_dict: dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update(
35
+ {
36
+ "join_fields": join_fields,
37
+ }
38
+ )
39
+ if auto_detect_join_fields is not UNSET:
40
+ field_dict["auto_detect_join_fields"] = auto_detect_join_fields
41
+
42
+ return field_dict
43
+
44
+ @classmethod
45
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
46
+ d = dict(src_dict)
47
+ join_fields = cast(list[str], d.pop("join_fields"))
48
+
49
+ auto_detect_join_fields = d.pop("auto_detect_join_fields", UNSET)
50
+
51
+ join_query_params = cls(
52
+ join_fields=join_fields,
53
+ auto_detect_join_fields=auto_detect_join_fields,
54
+ )
55
+
56
+ join_query_params.additional_properties = d
57
+ return join_query_params
58
+
59
+ @property
60
+ def additional_keys(self) -> list[str]:
61
+ return list(self.additional_properties.keys())
62
+
63
+ def __getitem__(self, key: str) -> Any:
64
+ return self.additional_properties[key]
65
+
66
+ def __setitem__(self, key: str, value: Any) -> None:
67
+ self.additional_properties[key] = value
68
+
69
+ def __delitem__(self, key: str) -> None:
70
+ del self.additional_properties[key]
71
+
72
+ def __contains__(self, key: str) -> bool:
73
+ return key in self.additional_properties
@@ -0,0 +1,305 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, Literal, TypeVar, cast
5
+ from uuid import UUID
6
+
7
+ from attrs import define as _attrs_define
8
+ from attrs import field as _attrs_field
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ if TYPE_CHECKING:
13
+ from ..models.join_query_params import JoinQueryParams
14
+
15
+
16
+ T = TypeVar("T", bound="JoinRequest")
17
+
18
+
19
+ @_attrs_define
20
+ class JoinRequest:
21
+ """Request to join artifacts from multiple groups based on a common field.
22
+
23
+ Attributes:
24
+ query (JoinQueryParams):
25
+ input_artifacts (list[UUID] | None | Unset):
26
+ context_artifacts (list[UUID] | None | Unset):
27
+ label (None | str | Unset): Short task label for use in the UI
28
+ description (None | str | Unset): Task description for use in the UI
29
+ task_id (None | Unset | UUID):
30
+ replaces_task_id (None | Unset | UUID): The ID of the task that this task replaces. Used e.g. by the full
31
+ version of a task that replaces a preview version.
32
+ twin_artifact_id (None | Unset | UUID): The ID of a reference artifact, e.g. the right table in Deep Merge
33
+ operation.
34
+ task_type (Literal['join'] | Unset): Default: 'join'.
35
+ processing_mode (Literal['transform'] | Unset): Default: 'transform'.
36
+ """
37
+
38
+ query: JoinQueryParams
39
+ input_artifacts: list[UUID] | None | Unset = UNSET
40
+ context_artifacts: list[UUID] | None | Unset = UNSET
41
+ label: None | str | Unset = UNSET
42
+ description: None | str | Unset = UNSET
43
+ task_id: None | Unset | UUID = UNSET
44
+ replaces_task_id: None | Unset | UUID = UNSET
45
+ twin_artifact_id: None | Unset | UUID = UNSET
46
+ task_type: Literal["join"] | Unset = "join"
47
+ processing_mode: Literal["transform"] | Unset = "transform"
48
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
49
+
50
+ def to_dict(self) -> dict[str, Any]:
51
+ query = self.query.to_dict()
52
+
53
+ input_artifacts: list[str] | None | Unset
54
+ if isinstance(self.input_artifacts, Unset):
55
+ input_artifacts = UNSET
56
+ elif isinstance(self.input_artifacts, list):
57
+ input_artifacts = []
58
+ for componentsschemas_input_artifacts_ids_item_data in self.input_artifacts:
59
+ componentsschemas_input_artifacts_ids_item = str(componentsschemas_input_artifacts_ids_item_data)
60
+ input_artifacts.append(componentsschemas_input_artifacts_ids_item)
61
+
62
+ else:
63
+ input_artifacts = self.input_artifacts
64
+
65
+ context_artifacts: list[str] | None | Unset
66
+ if isinstance(self.context_artifacts, Unset):
67
+ context_artifacts = UNSET
68
+ elif isinstance(self.context_artifacts, list):
69
+ context_artifacts = []
70
+ for componentsschemas_context_artifacts_ids_item_data in self.context_artifacts:
71
+ componentsschemas_context_artifacts_ids_item = str(componentsschemas_context_artifacts_ids_item_data)
72
+ context_artifacts.append(componentsschemas_context_artifacts_ids_item)
73
+
74
+ else:
75
+ context_artifacts = self.context_artifacts
76
+
77
+ label: None | str | Unset
78
+ if isinstance(self.label, Unset):
79
+ label = UNSET
80
+ else:
81
+ label = self.label
82
+
83
+ description: None | str | Unset
84
+ if isinstance(self.description, Unset):
85
+ description = UNSET
86
+ else:
87
+ description = self.description
88
+
89
+ task_id: None | str | Unset
90
+ if isinstance(self.task_id, Unset):
91
+ task_id = UNSET
92
+ elif isinstance(self.task_id, UUID):
93
+ task_id = str(self.task_id)
94
+ else:
95
+ task_id = self.task_id
96
+
97
+ replaces_task_id: None | str | Unset
98
+ if isinstance(self.replaces_task_id, Unset):
99
+ replaces_task_id = UNSET
100
+ elif isinstance(self.replaces_task_id, UUID):
101
+ replaces_task_id = str(self.replaces_task_id)
102
+ else:
103
+ replaces_task_id = self.replaces_task_id
104
+
105
+ twin_artifact_id: None | str | Unset
106
+ if isinstance(self.twin_artifact_id, Unset):
107
+ twin_artifact_id = UNSET
108
+ elif isinstance(self.twin_artifact_id, UUID):
109
+ twin_artifact_id = str(self.twin_artifact_id)
110
+ else:
111
+ twin_artifact_id = self.twin_artifact_id
112
+
113
+ task_type = self.task_type
114
+
115
+ processing_mode = self.processing_mode
116
+
117
+ field_dict: dict[str, Any] = {}
118
+ field_dict.update(self.additional_properties)
119
+ field_dict.update(
120
+ {
121
+ "query": query,
122
+ }
123
+ )
124
+ if input_artifacts is not UNSET:
125
+ field_dict["input_artifacts"] = input_artifacts
126
+ if context_artifacts is not UNSET:
127
+ field_dict["context_artifacts"] = context_artifacts
128
+ if label is not UNSET:
129
+ field_dict["label"] = label
130
+ if description is not UNSET:
131
+ field_dict["description"] = description
132
+ if task_id is not UNSET:
133
+ field_dict["task_id"] = task_id
134
+ if replaces_task_id is not UNSET:
135
+ field_dict["replaces_task_id"] = replaces_task_id
136
+ if twin_artifact_id is not UNSET:
137
+ field_dict["twin_artifact_id"] = twin_artifact_id
138
+ if task_type is not UNSET:
139
+ field_dict["task_type"] = task_type
140
+ if processing_mode is not UNSET:
141
+ field_dict["processing_mode"] = processing_mode
142
+
143
+ return field_dict
144
+
145
+ @classmethod
146
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
147
+ from ..models.join_query_params import JoinQueryParams
148
+
149
+ d = dict(src_dict)
150
+ query = JoinQueryParams.from_dict(d.pop("query"))
151
+
152
+ def _parse_input_artifacts(data: object) -> list[UUID] | None | Unset:
153
+ if data is None:
154
+ return data
155
+ if isinstance(data, Unset):
156
+ return data
157
+ try:
158
+ if not isinstance(data, list):
159
+ raise TypeError()
160
+ input_artifacts_type_0 = []
161
+ _input_artifacts_type_0 = data
162
+ for componentsschemas_input_artifacts_ids_item_data in _input_artifacts_type_0:
163
+ componentsschemas_input_artifacts_ids_item = UUID(componentsschemas_input_artifacts_ids_item_data)
164
+
165
+ input_artifacts_type_0.append(componentsschemas_input_artifacts_ids_item)
166
+
167
+ return input_artifacts_type_0
168
+ except (TypeError, ValueError, AttributeError, KeyError):
169
+ pass
170
+ return cast(list[UUID] | None | Unset, data)
171
+
172
+ input_artifacts = _parse_input_artifacts(d.pop("input_artifacts", UNSET))
173
+
174
+ def _parse_context_artifacts(data: object) -> list[UUID] | None | Unset:
175
+ if data is None:
176
+ return data
177
+ if isinstance(data, Unset):
178
+ return data
179
+ try:
180
+ if not isinstance(data, list):
181
+ raise TypeError()
182
+ context_artifacts_type_0 = []
183
+ _context_artifacts_type_0 = data
184
+ for componentsschemas_context_artifacts_ids_item_data in _context_artifacts_type_0:
185
+ componentsschemas_context_artifacts_ids_item = UUID(
186
+ componentsschemas_context_artifacts_ids_item_data
187
+ )
188
+
189
+ context_artifacts_type_0.append(componentsschemas_context_artifacts_ids_item)
190
+
191
+ return context_artifacts_type_0
192
+ except (TypeError, ValueError, AttributeError, KeyError):
193
+ pass
194
+ return cast(list[UUID] | None | Unset, data)
195
+
196
+ context_artifacts = _parse_context_artifacts(d.pop("context_artifacts", UNSET))
197
+
198
+ def _parse_label(data: object) -> None | str | Unset:
199
+ if data is None:
200
+ return data
201
+ if isinstance(data, Unset):
202
+ return data
203
+ return cast(None | str | Unset, data)
204
+
205
+ label = _parse_label(d.pop("label", UNSET))
206
+
207
+ def _parse_description(data: object) -> None | str | Unset:
208
+ if data is None:
209
+ return data
210
+ if isinstance(data, Unset):
211
+ return data
212
+ return cast(None | str | Unset, data)
213
+
214
+ description = _parse_description(d.pop("description", UNSET))
215
+
216
+ def _parse_task_id(data: object) -> None | Unset | UUID:
217
+ if data is None:
218
+ return data
219
+ if isinstance(data, Unset):
220
+ return data
221
+ try:
222
+ if not isinstance(data, str):
223
+ raise TypeError()
224
+ task_id_type_0 = UUID(data)
225
+
226
+ return task_id_type_0
227
+ except (TypeError, ValueError, AttributeError, KeyError):
228
+ pass
229
+ return cast(None | Unset | UUID, data)
230
+
231
+ task_id = _parse_task_id(d.pop("task_id", UNSET))
232
+
233
+ def _parse_replaces_task_id(data: object) -> None | Unset | UUID:
234
+ if data is None:
235
+ return data
236
+ if isinstance(data, Unset):
237
+ return data
238
+ try:
239
+ if not isinstance(data, str):
240
+ raise TypeError()
241
+ replaces_task_id_type_0 = UUID(data)
242
+
243
+ return replaces_task_id_type_0
244
+ except (TypeError, ValueError, AttributeError, KeyError):
245
+ pass
246
+ return cast(None | Unset | UUID, data)
247
+
248
+ replaces_task_id = _parse_replaces_task_id(d.pop("replaces_task_id", UNSET))
249
+
250
+ def _parse_twin_artifact_id(data: object) -> None | Unset | UUID:
251
+ if data is None:
252
+ return data
253
+ if isinstance(data, Unset):
254
+ return data
255
+ try:
256
+ if not isinstance(data, str):
257
+ raise TypeError()
258
+ twin_artifact_id_type_0 = UUID(data)
259
+
260
+ return twin_artifact_id_type_0
261
+ except (TypeError, ValueError, AttributeError, KeyError):
262
+ pass
263
+ return cast(None | Unset | UUID, data)
264
+
265
+ twin_artifact_id = _parse_twin_artifact_id(d.pop("twin_artifact_id", UNSET))
266
+
267
+ task_type = cast(Literal["join"] | Unset, d.pop("task_type", UNSET))
268
+ if task_type != "join" and not isinstance(task_type, Unset):
269
+ raise ValueError(f"task_type must match const 'join', got '{task_type}'")
270
+
271
+ processing_mode = cast(Literal["transform"] | Unset, d.pop("processing_mode", UNSET))
272
+ if processing_mode != "transform" and not isinstance(processing_mode, Unset):
273
+ raise ValueError(f"processing_mode must match const 'transform', got '{processing_mode}'")
274
+
275
+ join_request = cls(
276
+ query=query,
277
+ input_artifacts=input_artifacts,
278
+ context_artifacts=context_artifacts,
279
+ label=label,
280
+ description=description,
281
+ task_id=task_id,
282
+ replaces_task_id=replaces_task_id,
283
+ twin_artifact_id=twin_artifact_id,
284
+ task_type=task_type,
285
+ processing_mode=processing_mode,
286
+ )
287
+
288
+ join_request.additional_properties = d
289
+ return join_request
290
+
291
+ @property
292
+ def additional_keys(self) -> list[str]:
293
+ return list(self.additional_properties.keys())
294
+
295
+ def __getitem__(self, key: str) -> Any:
296
+ return self.additional_properties[key]
297
+
298
+ def __setitem__(self, key: str, value: Any) -> None:
299
+ self.additional_properties[key] = value
300
+
301
+ def __delitem__(self, key: str) -> None:
302
+ del self.additional_properties[key]
303
+
304
+ def __contains__(self, key: str) -> bool:
305
+ return key in self.additional_properties
@@ -0,0 +1,54 @@
1
+ from enum import Enum
2
+
3
+
4
+ class LLMEnum(str, Enum):
5
+ AUTOCOHORT_MODEL = "AUTOCOHORT_MODEL"
6
+ CLAUDE_3_7_SONNET = "CLAUDE_3_7_SONNET"
7
+ CLAUDE_3_7_SONNET_THINKING = "CLAUDE_3_7_SONNET_THINKING"
8
+ CLAUDE_4_1_OPUS = "CLAUDE_4_1_OPUS"
9
+ CLAUDE_4_1_OPUS_THINKING = "CLAUDE_4_1_OPUS_THINKING"
10
+ CLAUDE_4_5_HAIKU = "CLAUDE_4_5_HAIKU"
11
+ CLAUDE_4_5_HAIKU_MINIMAL = "CLAUDE_4_5_HAIKU_MINIMAL"
12
+ CLAUDE_4_5_HAIKU_THINKING = "CLAUDE_4_5_HAIKU_THINKING"
13
+ CLAUDE_4_5_OPUS = "CLAUDE_4_5_OPUS"
14
+ CLAUDE_4_5_OPUS_HIGH = "CLAUDE_4_5_OPUS_HIGH"
15
+ CLAUDE_4_5_OPUS_LOW = "CLAUDE_4_5_OPUS_LOW"
16
+ CLAUDE_4_5_OPUS_THINKING = "CLAUDE_4_5_OPUS_THINKING"
17
+ CLAUDE_4_5_SONNET = "CLAUDE_4_5_SONNET"
18
+ CLAUDE_4_5_SONNET_HIGH = "CLAUDE_4_5_SONNET_HIGH"
19
+ CLAUDE_4_5_SONNET_MINIMAL = "CLAUDE_4_5_SONNET_MINIMAL"
20
+ CLAUDE_4_5_SONNET_THINKING = "CLAUDE_4_5_SONNET_THINKING"
21
+ CLAUDE_4_OPUS = "CLAUDE_4_OPUS"
22
+ CLAUDE_4_OPUS_THINKING = "CLAUDE_4_OPUS_THINKING"
23
+ CLAUDE_4_SONNET = "CLAUDE_4_SONNET"
24
+ CLAUDE_4_SONNET_THINKING = "CLAUDE_4_SONNET_THINKING"
25
+ DEEPSEEK_R1_0528 = "DEEPSEEK_R1_0528"
26
+ DEFAULT_LARGE = "DEFAULT_LARGE"
27
+ DEFAULT_SMALL = "DEFAULT_SMALL"
28
+ GEMINI_2_5_FLASH = "GEMINI_2_5_FLASH"
29
+ GEMINI_2_5_FLASH_LITE = "GEMINI_2_5_FLASH_LITE"
30
+ GEMINI_2_5_FLASH_THINKING = "GEMINI_2_5_FLASH_THINKING"
31
+ GEMINI_2_5_PRO = "GEMINI_2_5_PRO"
32
+ GEMINI_3_FLASH_HIGH = "GEMINI_3_FLASH_HIGH"
33
+ GEMINI_3_FLASH_LOW = "GEMINI_3_FLASH_LOW"
34
+ GEMINI_3_FLASH_MEDIUM = "GEMINI_3_FLASH_MEDIUM"
35
+ GEMINI_3_FLASH_MINIMAL = "GEMINI_3_FLASH_MINIMAL"
36
+ GEMINI_3_PREVIEW_HIGH = "GEMINI_3_PREVIEW_HIGH"
37
+ GEMINI_3_PREVIEW_LOW = "GEMINI_3_PREVIEW_LOW"
38
+ GEMINI_3_PREVIEW_MEDIUM = "GEMINI_3_PREVIEW_MEDIUM"
39
+ GPT_5 = "GPT_5"
40
+ GPT_5_1_LOW = "GPT_5_1_LOW"
41
+ GPT_5_1_NT = "GPT_5_1_NT"
42
+ GPT_5_2_LOW = "GPT_5_2_LOW"
43
+ GPT_5_2_NT = "GPT_5_2_NT"
44
+ GPT_5_HIGH = "GPT_5_HIGH"
45
+ GPT_5_LOW = "GPT_5_LOW"
46
+ GPT_5_MINI = "GPT_5_MINI"
47
+ GPT_5_MINIMAL = "GPT_5_MINIMAL"
48
+ GPT_5_NANO = "GPT_5_NANO"
49
+ GROK_4 = "GROK_4"
50
+ O3 = "O3"
51
+ O3_MINI = "O3_MINI"
52
+
53
+ def __str__(self) -> str:
54
+ return str(self.value)