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.
- everyrow/__init__.py +4 -0
- everyrow/api_utils.py +45 -0
- everyrow/citations.py +46 -0
- everyrow/constants.py +4 -0
- everyrow/generated/__init__.py +8 -0
- everyrow/generated/api/__init__.py +1 -0
- everyrow/generated/api/default/__init__.py +1 -0
- everyrow/generated/api/default/continue_task_endpoint_tasks_continue_post.py +208 -0
- everyrow/generated/api/default/copy_artifacts_artifacts_copy_post.py +166 -0
- everyrow/generated/api/default/copy_workflow_endpoint_workflows_copy_post.py +166 -0
- everyrow/generated/api/default/create_api_key_endpoint_api_keys_create_post.py +186 -0
- everyrow/generated/api/default/create_session_endpoint_sessions_create_post.py +198 -0
- everyrow/generated/api/default/create_workflow_from_artifact_workflows_from_artifact_post.py +174 -0
- everyrow/generated/api/default/export_to_google_sheets_export_post.py +168 -0
- everyrow/generated/api/default/generate_feedback_endpoint_tasks_generate_feedback_post.py +186 -0
- everyrow/generated/api/default/get_artifacts_artifacts_get.py +260 -0
- everyrow/generated/api/default/get_default_timeout_seconds_models_default_timeout_seconds_get.py +165 -0
- everyrow/generated/api/default/get_job_progress_for_task_jobs_progress_get.py +167 -0
- everyrow/generated/api/default/get_metrics_metrics_get.py +80 -0
- everyrow/generated/api/default/get_queues_stats_jobs_queues_get.py +123 -0
- everyrow/generated/api/default/get_task_status_endpoint_tasks_task_id_status_get.py +193 -0
- everyrow/generated/api/default/get_user_usage_usage_get.py +123 -0
- everyrow/generated/api/default/healthz_healthz_get.py +127 -0
- everyrow/generated/api/default/import_from_google_sheets_import_post.py +170 -0
- everyrow/generated/api/default/interrupt_chat_task_tasks_chat_interrupt_post.py +172 -0
- everyrow/generated/api/default/list_api_keys_endpoint_api_keys_get.py +186 -0
- everyrow/generated/api/default/re_execute_task_endpoint_tasks_re_execute_post.py +192 -0
- everyrow/generated/api/default/revoke_api_key_endpoint_api_keys_key_id_revoke_post.py +181 -0
- everyrow/generated/api/default/revoke_jobs_for_task_jobs_revoke_post.py +164 -0
- everyrow/generated/api/default/rollback_to_message_endpoint_tasks_chat_rollback_post.py +186 -0
- everyrow/generated/api/default/submit_chat_task_tasks_chat_post.py +164 -0
- everyrow/generated/api/default/submit_task_tasks_post.py +172 -0
- everyrow/generated/api/default/task_resource_estimation_task_resource_estimation_post.py +319 -0
- everyrow/generated/api/default/trigger_workflow_execution_endpoint_workflows_trigger_post.py +166 -0
- everyrow/generated/api/default/whoami_whoami_get.py +127 -0
- everyrow/generated/client.py +268 -0
- everyrow/generated/errors.py +16 -0
- everyrow/generated/models/__init__.py +281 -0
- everyrow/generated/models/agent_improvement_instruction.py +69 -0
- everyrow/generated/models/agent_query_params.py +362 -0
- everyrow/generated/models/agent_query_params_system_prompt_kind_type_0.py +10 -0
- everyrow/generated/models/agent_task_args.py +163 -0
- everyrow/generated/models/agent_task_args_processing_mode.py +9 -0
- everyrow/generated/models/allowed_suggestions.py +8 -0
- everyrow/generated/models/api_key_info.py +163 -0
- everyrow/generated/models/artifact_changed_payload.py +89 -0
- everyrow/generated/models/artifact_group_record.py +330 -0
- everyrow/generated/models/artifact_group_record_metadata_type_0.py +46 -0
- everyrow/generated/models/artifact_group_record_trace_mapping_type_0.py +46 -0
- everyrow/generated/models/artifact_status.py +14 -0
- everyrow/generated/models/auto_cohort_conversation_message.py +533 -0
- everyrow/generated/models/aux_data.py +128 -0
- everyrow/generated/models/aux_data_source_bank.py +59 -0
- everyrow/generated/models/chat_completion_message_tool_call.py +46 -0
- everyrow/generated/models/chat_message_metadata.py +193 -0
- everyrow/generated/models/concatenate_query_params.py +46 -0
- everyrow/generated/models/concatenate_request.py +306 -0
- everyrow/generated/models/continue_reason.py +9 -0
- everyrow/generated/models/continue_task_request.py +133 -0
- everyrow/generated/models/controller_improvement_round.py +79 -0
- everyrow/generated/models/conversation_changed_payload.py +89 -0
- everyrow/generated/models/copy_artifacts_request.py +70 -0
- everyrow/generated/models/copy_artifacts_response.py +70 -0
- everyrow/generated/models/copy_workflow_request.py +62 -0
- everyrow/generated/models/copy_workflow_response.py +70 -0
- everyrow/generated/models/create_api_key_request.py +95 -0
- everyrow/generated/models/create_api_key_response.py +96 -0
- everyrow/generated/models/create_group_query_params.py +61 -0
- everyrow/generated/models/create_group_request.py +305 -0
- everyrow/generated/models/create_query_params.py +61 -0
- everyrow/generated/models/create_request.py +305 -0
- everyrow/generated/models/create_session_request.py +62 -0
- everyrow/generated/models/create_session_response.py +63 -0
- everyrow/generated/models/create_workflow_from_artifact_request.py +92 -0
- everyrow/generated/models/create_workflow_from_artifact_response.py +70 -0
- everyrow/generated/models/data_frame_method.py +18 -0
- everyrow/generated/models/date_cutoffs.py +145 -0
- everyrow/generated/models/dedupe_mode.py +9 -0
- everyrow/generated/models/dedupe_query_params.py +174 -0
- everyrow/generated/models/dedupe_request_params.py +311 -0
- everyrow/generated/models/deep_merge_public_params.py +143 -0
- everyrow/generated/models/deep_merge_request.py +313 -0
- everyrow/generated/models/deep_rank_public_params.py +99 -0
- everyrow/generated/models/deep_rank_request.py +313 -0
- everyrow/generated/models/deep_screen_public_params.py +122 -0
- everyrow/generated/models/deep_screen_request.py +313 -0
- everyrow/generated/models/derive_expression.py +69 -0
- everyrow/generated/models/derive_query_params.py +75 -0
- everyrow/generated/models/derive_request.py +307 -0
- everyrow/generated/models/document_query_tool.py +12 -0
- everyrow/generated/models/drop_columns_query_params.py +61 -0
- everyrow/generated/models/drop_columns_request.py +305 -0
- everyrow/generated/models/embedding_models.py +9 -0
- everyrow/generated/models/event_type.py +14 -0
- everyrow/generated/models/execution_metadata.py +146 -0
- everyrow/generated/models/export_request.py +75 -0
- everyrow/generated/models/export_request_token_data.py +46 -0
- everyrow/generated/models/export_to_google_sheets_export_post_response_export_to_google_sheets_export_post.py +46 -0
- everyrow/generated/models/filter_query_params.py +91 -0
- everyrow/generated/models/filter_request.py +305 -0
- everyrow/generated/models/flatten_query_params.py +46 -0
- everyrow/generated/models/flatten_request.py +305 -0
- everyrow/generated/models/generate_feedback_request.py +62 -0
- everyrow/generated/models/group_by_query_params.py +62 -0
- everyrow/generated/models/group_by_request.py +305 -0
- everyrow/generated/models/healthz_healthz_get_response_healthz_healthz_get.py +46 -0
- everyrow/generated/models/http_validation_error.py +79 -0
- everyrow/generated/models/image_chat_content_part.py +80 -0
- everyrow/generated/models/image_chat_content_part_image_url.py +46 -0
- everyrow/generated/models/import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.py +46 -0
- everyrow/generated/models/import_request.py +83 -0
- everyrow/generated/models/import_request_token_data.py +46 -0
- everyrow/generated/models/insufficient_balance_error.py +81 -0
- everyrow/generated/models/join_query_params.py +73 -0
- everyrow/generated/models/join_request.py +305 -0
- everyrow/generated/models/llm_enum.py +54 -0
- everyrow/generated/models/map_agent_request_params.py +313 -0
- everyrow/generated/models/map_multi_agent_request_params.py +313 -0
- everyrow/generated/models/message_created_payload.py +98 -0
- everyrow/generated/models/multi_agent_effort_level.py +10 -0
- everyrow/generated/models/multi_agent_query_params.py +264 -0
- everyrow/generated/models/multi_modal_chat_message.py +160 -0
- everyrow/generated/models/multi_modal_chat_message_role.py +10 -0
- everyrow/generated/models/preview_metadata.py +144 -0
- everyrow/generated/models/processing_mode.py +10 -0
- everyrow/generated/models/progress_status.py +83 -0
- everyrow/generated/models/queue_stats.py +77 -0
- everyrow/generated/models/reduce_agent_request_params.py +305 -0
- everyrow/generated/models/reduce_multi_agent_request_params.py +305 -0
- everyrow/generated/models/resource_estimation_response.py +85 -0
- everyrow/generated/models/response_schema_type.py +9 -0
- everyrow/generated/models/revoke_api_key_response.py +61 -0
- everyrow/generated/models/rollback_to_message_request.py +62 -0
- everyrow/generated/models/rollback_to_message_response.py +77 -0
- everyrow/generated/models/session_changed_payload.py +69 -0
- everyrow/generated/models/simple_chat_message.py +121 -0
- everyrow/generated/models/simple_chat_message_role.py +10 -0
- everyrow/generated/models/simple_chat_message_with_tool_calls.py +156 -0
- everyrow/generated/models/source_database_entry.py +92 -0
- everyrow/generated/models/standalone_artifact_record.py +278 -0
- everyrow/generated/models/standalone_artifact_record_metadata_type_0.py +46 -0
- everyrow/generated/models/standalone_artifact_record_trace_mapping_type_0.py +46 -0
- everyrow/generated/models/status_count.py +71 -0
- everyrow/generated/models/status_count_status.py +13 -0
- everyrow/generated/models/submit_chat_task_body.py +497 -0
- everyrow/generated/models/submit_chat_task_body_selected_task_type_type_0.py +11 -0
- everyrow/generated/models/submit_task_body.py +745 -0
- everyrow/generated/models/task_changed_payload.py +105 -0
- everyrow/generated/models/task_effort.py +10 -0
- everyrow/generated/models/task_id_request.py +62 -0
- everyrow/generated/models/task_insert.py +725 -0
- everyrow/generated/models/task_insert_query_params.py +46 -0
- everyrow/generated/models/task_metadata.py +323 -0
- everyrow/generated/models/task_metadata_cols_to_rename_type_0.py +46 -0
- everyrow/generated/models/task_response.py +62 -0
- everyrow/generated/models/task_status.py +12 -0
- everyrow/generated/models/task_status_response.py +112 -0
- everyrow/generated/models/task_type.py +31 -0
- everyrow/generated/models/text_chat_content_part.py +74 -0
- everyrow/generated/models/tool_response_message.py +127 -0
- everyrow/generated/models/toolkit_constants.py +80 -0
- everyrow/generated/models/trace_changed_payload.py +94 -0
- everyrow/generated/models/trace_info.py +78 -0
- everyrow/generated/models/trigger_workflow_execution_request.py +112 -0
- everyrow/generated/models/trigger_workflow_execution_request_task_params.py +65 -0
- everyrow/generated/models/trigger_workflow_execution_request_task_params_additional_property.py +46 -0
- everyrow/generated/models/trigger_workflow_execution_response.py +69 -0
- everyrow/generated/models/upload_csv_payload.py +310 -0
- everyrow/generated/models/upload_csv_query_params.py +114 -0
- everyrow/generated/models/usage_response.py +77 -0
- everyrow/generated/models/validation_error.py +90 -0
- everyrow/generated/models/whoami_whoami_get_response_whoami_whoami_get.py +46 -0
- everyrow/generated/models/workflow_leaf_node_input.py +70 -0
- everyrow/generated/py.typed +1 -0
- everyrow/generated/types.py +54 -0
- everyrow/ops.py +672 -0
- everyrow/result.py +25 -0
- everyrow/session.py +53 -0
- everyrow/task.py +143 -0
- everyrow-0.1.0.dist-info/METADATA +238 -0
- everyrow-0.1.0.dist-info/RECORD +183 -0
- everyrow-0.1.0.dist-info/WHEEL +4 -0
- everyrow-0.1.0.dist-info/licenses/LICENSE.txt +21 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import datetime
|
|
4
|
+
from collections.abc import Mapping
|
|
5
|
+
from typing import Any, TypeVar, cast
|
|
6
|
+
|
|
7
|
+
from attrs import define as _attrs_define
|
|
8
|
+
from attrs import field as _attrs_field
|
|
9
|
+
from dateutil.parser import isoparse
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="DateCutoffs")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class DateCutoffs:
|
|
18
|
+
"""
|
|
19
|
+
Attributes:
|
|
20
|
+
start (datetime.datetime | None | Unset):
|
|
21
|
+
end (datetime.datetime | None | Unset):
|
|
22
|
+
present_date (datetime.datetime | None | Unset):
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
start: datetime.datetime | None | Unset = UNSET
|
|
26
|
+
end: datetime.datetime | None | Unset = UNSET
|
|
27
|
+
present_date: datetime.datetime | None | Unset = UNSET
|
|
28
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
29
|
+
|
|
30
|
+
def to_dict(self) -> dict[str, Any]:
|
|
31
|
+
start: None | str | Unset
|
|
32
|
+
if isinstance(self.start, Unset):
|
|
33
|
+
start = UNSET
|
|
34
|
+
elif isinstance(self.start, datetime.datetime):
|
|
35
|
+
start = self.start.isoformat()
|
|
36
|
+
else:
|
|
37
|
+
start = self.start
|
|
38
|
+
|
|
39
|
+
end: None | str | Unset
|
|
40
|
+
if isinstance(self.end, Unset):
|
|
41
|
+
end = UNSET
|
|
42
|
+
elif isinstance(self.end, datetime.datetime):
|
|
43
|
+
end = self.end.isoformat()
|
|
44
|
+
else:
|
|
45
|
+
end = self.end
|
|
46
|
+
|
|
47
|
+
present_date: None | str | Unset
|
|
48
|
+
if isinstance(self.present_date, Unset):
|
|
49
|
+
present_date = UNSET
|
|
50
|
+
elif isinstance(self.present_date, datetime.datetime):
|
|
51
|
+
present_date = self.present_date.isoformat()
|
|
52
|
+
else:
|
|
53
|
+
present_date = self.present_date
|
|
54
|
+
|
|
55
|
+
field_dict: dict[str, Any] = {}
|
|
56
|
+
field_dict.update(self.additional_properties)
|
|
57
|
+
field_dict.update({})
|
|
58
|
+
if start is not UNSET:
|
|
59
|
+
field_dict["start"] = start
|
|
60
|
+
if end is not UNSET:
|
|
61
|
+
field_dict["end"] = end
|
|
62
|
+
if present_date is not UNSET:
|
|
63
|
+
field_dict["present_date"] = present_date
|
|
64
|
+
|
|
65
|
+
return field_dict
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
69
|
+
d = dict(src_dict)
|
|
70
|
+
|
|
71
|
+
def _parse_start(data: object) -> datetime.datetime | None | Unset:
|
|
72
|
+
if data is None:
|
|
73
|
+
return data
|
|
74
|
+
if isinstance(data, Unset):
|
|
75
|
+
return data
|
|
76
|
+
try:
|
|
77
|
+
if not isinstance(data, str):
|
|
78
|
+
raise TypeError()
|
|
79
|
+
start_type_0 = isoparse(data)
|
|
80
|
+
|
|
81
|
+
return start_type_0
|
|
82
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
83
|
+
pass
|
|
84
|
+
return cast(datetime.datetime | None | Unset, data)
|
|
85
|
+
|
|
86
|
+
start = _parse_start(d.pop("start", UNSET))
|
|
87
|
+
|
|
88
|
+
def _parse_end(data: object) -> datetime.datetime | None | Unset:
|
|
89
|
+
if data is None:
|
|
90
|
+
return data
|
|
91
|
+
if isinstance(data, Unset):
|
|
92
|
+
return data
|
|
93
|
+
try:
|
|
94
|
+
if not isinstance(data, str):
|
|
95
|
+
raise TypeError()
|
|
96
|
+
end_type_0 = isoparse(data)
|
|
97
|
+
|
|
98
|
+
return end_type_0
|
|
99
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
100
|
+
pass
|
|
101
|
+
return cast(datetime.datetime | None | Unset, data)
|
|
102
|
+
|
|
103
|
+
end = _parse_end(d.pop("end", UNSET))
|
|
104
|
+
|
|
105
|
+
def _parse_present_date(data: object) -> datetime.datetime | None | Unset:
|
|
106
|
+
if data is None:
|
|
107
|
+
return data
|
|
108
|
+
if isinstance(data, Unset):
|
|
109
|
+
return data
|
|
110
|
+
try:
|
|
111
|
+
if not isinstance(data, str):
|
|
112
|
+
raise TypeError()
|
|
113
|
+
present_date_type_0 = isoparse(data)
|
|
114
|
+
|
|
115
|
+
return present_date_type_0
|
|
116
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
117
|
+
pass
|
|
118
|
+
return cast(datetime.datetime | None | Unset, data)
|
|
119
|
+
|
|
120
|
+
present_date = _parse_present_date(d.pop("present_date", UNSET))
|
|
121
|
+
|
|
122
|
+
date_cutoffs = cls(
|
|
123
|
+
start=start,
|
|
124
|
+
end=end,
|
|
125
|
+
present_date=present_date,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
date_cutoffs.additional_properties = d
|
|
129
|
+
return date_cutoffs
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def additional_keys(self) -> list[str]:
|
|
133
|
+
return list(self.additional_properties.keys())
|
|
134
|
+
|
|
135
|
+
def __getitem__(self, key: str) -> Any:
|
|
136
|
+
return self.additional_properties[key]
|
|
137
|
+
|
|
138
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
139
|
+
self.additional_properties[key] = value
|
|
140
|
+
|
|
141
|
+
def __delitem__(self, key: str) -> None:
|
|
142
|
+
del self.additional_properties[key]
|
|
143
|
+
|
|
144
|
+
def __contains__(self, key: str) -> bool:
|
|
145
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,174 @@
|
|
|
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 ..models.dedupe_mode import DedupeMode
|
|
10
|
+
from ..models.embedding_models import EmbeddingModels
|
|
11
|
+
from ..models.llm_enum import LLMEnum
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
|
|
14
|
+
T = TypeVar("T", bound="DedupeQueryParams")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@_attrs_define
|
|
18
|
+
class DedupeQueryParams:
|
|
19
|
+
"""Service-specific parameters for the deduplication service.
|
|
20
|
+
|
|
21
|
+
Attributes:
|
|
22
|
+
equivalence_relation (str): Description of what makes items equivalent
|
|
23
|
+
llm (LLMEnum | Unset):
|
|
24
|
+
chunk_size (int | Unset): Maximum number of items to process in a single LLM call Default: 25.
|
|
25
|
+
mode (DedupeMode | Unset):
|
|
26
|
+
preview (bool | Unset): When true, process only the first few items Default: False.
|
|
27
|
+
embedding_model (EmbeddingModels | Unset):
|
|
28
|
+
validate_groups (bool | Unset): Validate equivalence classes and split incorrectly merged groups before
|
|
29
|
+
selecting representatives Default: False.
|
|
30
|
+
use_clustering (bool | Unset): When true, cluster items by embedding similarity and only compare neighboring
|
|
31
|
+
clusters. When false, use sequential chunking and compare all chunks (O(n²)) Default: True.
|
|
32
|
+
early_stop_threshold (int | None | Unset): Stop cross-chunk comparisons for a row after this many consecutive
|
|
33
|
+
comparisons with no matches. None disables early stopping.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
equivalence_relation: str
|
|
37
|
+
llm: LLMEnum | Unset = UNSET
|
|
38
|
+
chunk_size: int | Unset = 25
|
|
39
|
+
mode: DedupeMode | Unset = UNSET
|
|
40
|
+
preview: bool | Unset = False
|
|
41
|
+
embedding_model: EmbeddingModels | Unset = UNSET
|
|
42
|
+
validate_groups: bool | Unset = False
|
|
43
|
+
use_clustering: bool | Unset = True
|
|
44
|
+
early_stop_threshold: int | None | Unset = UNSET
|
|
45
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
equivalence_relation = self.equivalence_relation
|
|
49
|
+
|
|
50
|
+
llm: str | Unset = UNSET
|
|
51
|
+
if not isinstance(self.llm, Unset):
|
|
52
|
+
llm = self.llm.value
|
|
53
|
+
|
|
54
|
+
chunk_size = self.chunk_size
|
|
55
|
+
|
|
56
|
+
mode: str | Unset = UNSET
|
|
57
|
+
if not isinstance(self.mode, Unset):
|
|
58
|
+
mode = self.mode.value
|
|
59
|
+
|
|
60
|
+
preview = self.preview
|
|
61
|
+
|
|
62
|
+
embedding_model: str | Unset = UNSET
|
|
63
|
+
if not isinstance(self.embedding_model, Unset):
|
|
64
|
+
embedding_model = self.embedding_model.value
|
|
65
|
+
|
|
66
|
+
validate_groups = self.validate_groups
|
|
67
|
+
|
|
68
|
+
use_clustering = self.use_clustering
|
|
69
|
+
|
|
70
|
+
early_stop_threshold: int | None | Unset
|
|
71
|
+
if isinstance(self.early_stop_threshold, Unset):
|
|
72
|
+
early_stop_threshold = UNSET
|
|
73
|
+
else:
|
|
74
|
+
early_stop_threshold = self.early_stop_threshold
|
|
75
|
+
|
|
76
|
+
field_dict: dict[str, Any] = {}
|
|
77
|
+
field_dict.update(self.additional_properties)
|
|
78
|
+
field_dict.update(
|
|
79
|
+
{
|
|
80
|
+
"equivalence_relation": equivalence_relation,
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
if llm is not UNSET:
|
|
84
|
+
field_dict["llm"] = llm
|
|
85
|
+
if chunk_size is not UNSET:
|
|
86
|
+
field_dict["chunk_size"] = chunk_size
|
|
87
|
+
if mode is not UNSET:
|
|
88
|
+
field_dict["mode"] = mode
|
|
89
|
+
if preview is not UNSET:
|
|
90
|
+
field_dict["preview"] = preview
|
|
91
|
+
if embedding_model is not UNSET:
|
|
92
|
+
field_dict["embedding_model"] = embedding_model
|
|
93
|
+
if validate_groups is not UNSET:
|
|
94
|
+
field_dict["validate_groups"] = validate_groups
|
|
95
|
+
if use_clustering is not UNSET:
|
|
96
|
+
field_dict["use_clustering"] = use_clustering
|
|
97
|
+
if early_stop_threshold is not UNSET:
|
|
98
|
+
field_dict["early_stop_threshold"] = early_stop_threshold
|
|
99
|
+
|
|
100
|
+
return field_dict
|
|
101
|
+
|
|
102
|
+
@classmethod
|
|
103
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
104
|
+
d = dict(src_dict)
|
|
105
|
+
equivalence_relation = d.pop("equivalence_relation")
|
|
106
|
+
|
|
107
|
+
_llm = d.pop("llm", UNSET)
|
|
108
|
+
llm: LLMEnum | Unset
|
|
109
|
+
if isinstance(_llm, Unset):
|
|
110
|
+
llm = UNSET
|
|
111
|
+
else:
|
|
112
|
+
llm = LLMEnum(_llm)
|
|
113
|
+
|
|
114
|
+
chunk_size = d.pop("chunk_size", UNSET)
|
|
115
|
+
|
|
116
|
+
_mode = d.pop("mode", UNSET)
|
|
117
|
+
mode: DedupeMode | Unset
|
|
118
|
+
if isinstance(_mode, Unset):
|
|
119
|
+
mode = UNSET
|
|
120
|
+
else:
|
|
121
|
+
mode = DedupeMode(_mode)
|
|
122
|
+
|
|
123
|
+
preview = d.pop("preview", UNSET)
|
|
124
|
+
|
|
125
|
+
_embedding_model = d.pop("embedding_model", UNSET)
|
|
126
|
+
embedding_model: EmbeddingModels | Unset
|
|
127
|
+
if isinstance(_embedding_model, Unset):
|
|
128
|
+
embedding_model = UNSET
|
|
129
|
+
else:
|
|
130
|
+
embedding_model = EmbeddingModels(_embedding_model)
|
|
131
|
+
|
|
132
|
+
validate_groups = d.pop("validate_groups", UNSET)
|
|
133
|
+
|
|
134
|
+
use_clustering = d.pop("use_clustering", UNSET)
|
|
135
|
+
|
|
136
|
+
def _parse_early_stop_threshold(data: object) -> int | None | Unset:
|
|
137
|
+
if data is None:
|
|
138
|
+
return data
|
|
139
|
+
if isinstance(data, Unset):
|
|
140
|
+
return data
|
|
141
|
+
return cast(int | None | Unset, data)
|
|
142
|
+
|
|
143
|
+
early_stop_threshold = _parse_early_stop_threshold(d.pop("early_stop_threshold", UNSET))
|
|
144
|
+
|
|
145
|
+
dedupe_query_params = cls(
|
|
146
|
+
equivalence_relation=equivalence_relation,
|
|
147
|
+
llm=llm,
|
|
148
|
+
chunk_size=chunk_size,
|
|
149
|
+
mode=mode,
|
|
150
|
+
preview=preview,
|
|
151
|
+
embedding_model=embedding_model,
|
|
152
|
+
validate_groups=validate_groups,
|
|
153
|
+
use_clustering=use_clustering,
|
|
154
|
+
early_stop_threshold=early_stop_threshold,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
dedupe_query_params.additional_properties = d
|
|
158
|
+
return dedupe_query_params
|
|
159
|
+
|
|
160
|
+
@property
|
|
161
|
+
def additional_keys(self) -> list[str]:
|
|
162
|
+
return list(self.additional_properties.keys())
|
|
163
|
+
|
|
164
|
+
def __getitem__(self, key: str) -> Any:
|
|
165
|
+
return self.additional_properties[key]
|
|
166
|
+
|
|
167
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
168
|
+
self.additional_properties[key] = value
|
|
169
|
+
|
|
170
|
+
def __delitem__(self, key: str) -> None:
|
|
171
|
+
del self.additional_properties[key]
|
|
172
|
+
|
|
173
|
+
def __contains__(self, key: str) -> bool:
|
|
174
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,311 @@
|
|
|
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 ..models.processing_mode import ProcessingMode
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ..models.dedupe_query_params import DedupeQueryParams
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="DedupeRequestParams")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class DedupeRequestParams:
|
|
22
|
+
"""Request parameters for the deduplication service.
|
|
23
|
+
|
|
24
|
+
Attributes:
|
|
25
|
+
query (DedupeQueryParams): Service-specific parameters for the deduplication service.
|
|
26
|
+
input_artifacts (list[UUID] | None | Unset):
|
|
27
|
+
context_artifacts (list[UUID] | None | Unset):
|
|
28
|
+
label (None | str | Unset): Short task label for use in the UI
|
|
29
|
+
description (None | str | Unset): Task description for use in the UI
|
|
30
|
+
task_id (None | Unset | UUID):
|
|
31
|
+
replaces_task_id (None | Unset | UUID): The ID of the task that this task replaces. Used e.g. by the full
|
|
32
|
+
version of a task that replaces a preview version.
|
|
33
|
+
twin_artifact_id (None | Unset | UUID): The ID of a reference artifact, e.g. the right table in Deep Merge
|
|
34
|
+
operation.
|
|
35
|
+
task_type (Literal['dedupe'] | Unset): Default: 'dedupe'.
|
|
36
|
+
processing_mode (ProcessingMode | Unset):
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
query: DedupeQueryParams
|
|
40
|
+
input_artifacts: list[UUID] | None | Unset = UNSET
|
|
41
|
+
context_artifacts: list[UUID] | None | Unset = UNSET
|
|
42
|
+
label: None | str | Unset = UNSET
|
|
43
|
+
description: None | str | Unset = UNSET
|
|
44
|
+
task_id: None | Unset | UUID = UNSET
|
|
45
|
+
replaces_task_id: None | Unset | UUID = UNSET
|
|
46
|
+
twin_artifact_id: None | Unset | UUID = UNSET
|
|
47
|
+
task_type: Literal["dedupe"] | Unset = "dedupe"
|
|
48
|
+
processing_mode: ProcessingMode | Unset = UNSET
|
|
49
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
50
|
+
|
|
51
|
+
def to_dict(self) -> dict[str, Any]:
|
|
52
|
+
query = self.query.to_dict()
|
|
53
|
+
|
|
54
|
+
input_artifacts: list[str] | None | Unset
|
|
55
|
+
if isinstance(self.input_artifacts, Unset):
|
|
56
|
+
input_artifacts = UNSET
|
|
57
|
+
elif isinstance(self.input_artifacts, list):
|
|
58
|
+
input_artifacts = []
|
|
59
|
+
for componentsschemas_input_artifacts_ids_item_data in self.input_artifacts:
|
|
60
|
+
componentsschemas_input_artifacts_ids_item = str(componentsschemas_input_artifacts_ids_item_data)
|
|
61
|
+
input_artifacts.append(componentsschemas_input_artifacts_ids_item)
|
|
62
|
+
|
|
63
|
+
else:
|
|
64
|
+
input_artifacts = self.input_artifacts
|
|
65
|
+
|
|
66
|
+
context_artifacts: list[str] | None | Unset
|
|
67
|
+
if isinstance(self.context_artifacts, Unset):
|
|
68
|
+
context_artifacts = UNSET
|
|
69
|
+
elif isinstance(self.context_artifacts, list):
|
|
70
|
+
context_artifacts = []
|
|
71
|
+
for componentsschemas_context_artifacts_ids_item_data in self.context_artifacts:
|
|
72
|
+
componentsschemas_context_artifacts_ids_item = str(componentsschemas_context_artifacts_ids_item_data)
|
|
73
|
+
context_artifacts.append(componentsschemas_context_artifacts_ids_item)
|
|
74
|
+
|
|
75
|
+
else:
|
|
76
|
+
context_artifacts = self.context_artifacts
|
|
77
|
+
|
|
78
|
+
label: None | str | Unset
|
|
79
|
+
if isinstance(self.label, Unset):
|
|
80
|
+
label = UNSET
|
|
81
|
+
else:
|
|
82
|
+
label = self.label
|
|
83
|
+
|
|
84
|
+
description: None | str | Unset
|
|
85
|
+
if isinstance(self.description, Unset):
|
|
86
|
+
description = UNSET
|
|
87
|
+
else:
|
|
88
|
+
description = self.description
|
|
89
|
+
|
|
90
|
+
task_id: None | str | Unset
|
|
91
|
+
if isinstance(self.task_id, Unset):
|
|
92
|
+
task_id = UNSET
|
|
93
|
+
elif isinstance(self.task_id, UUID):
|
|
94
|
+
task_id = str(self.task_id)
|
|
95
|
+
else:
|
|
96
|
+
task_id = self.task_id
|
|
97
|
+
|
|
98
|
+
replaces_task_id: None | str | Unset
|
|
99
|
+
if isinstance(self.replaces_task_id, Unset):
|
|
100
|
+
replaces_task_id = UNSET
|
|
101
|
+
elif isinstance(self.replaces_task_id, UUID):
|
|
102
|
+
replaces_task_id = str(self.replaces_task_id)
|
|
103
|
+
else:
|
|
104
|
+
replaces_task_id = self.replaces_task_id
|
|
105
|
+
|
|
106
|
+
twin_artifact_id: None | str | Unset
|
|
107
|
+
if isinstance(self.twin_artifact_id, Unset):
|
|
108
|
+
twin_artifact_id = UNSET
|
|
109
|
+
elif isinstance(self.twin_artifact_id, UUID):
|
|
110
|
+
twin_artifact_id = str(self.twin_artifact_id)
|
|
111
|
+
else:
|
|
112
|
+
twin_artifact_id = self.twin_artifact_id
|
|
113
|
+
|
|
114
|
+
task_type = self.task_type
|
|
115
|
+
|
|
116
|
+
processing_mode: str | Unset = UNSET
|
|
117
|
+
if not isinstance(self.processing_mode, Unset):
|
|
118
|
+
processing_mode = self.processing_mode.value
|
|
119
|
+
|
|
120
|
+
field_dict: dict[str, Any] = {}
|
|
121
|
+
field_dict.update(self.additional_properties)
|
|
122
|
+
field_dict.update(
|
|
123
|
+
{
|
|
124
|
+
"query": query,
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
if input_artifacts is not UNSET:
|
|
128
|
+
field_dict["input_artifacts"] = input_artifacts
|
|
129
|
+
if context_artifacts is not UNSET:
|
|
130
|
+
field_dict["context_artifacts"] = context_artifacts
|
|
131
|
+
if label is not UNSET:
|
|
132
|
+
field_dict["label"] = label
|
|
133
|
+
if description is not UNSET:
|
|
134
|
+
field_dict["description"] = description
|
|
135
|
+
if task_id is not UNSET:
|
|
136
|
+
field_dict["task_id"] = task_id
|
|
137
|
+
if replaces_task_id is not UNSET:
|
|
138
|
+
field_dict["replaces_task_id"] = replaces_task_id
|
|
139
|
+
if twin_artifact_id is not UNSET:
|
|
140
|
+
field_dict["twin_artifact_id"] = twin_artifact_id
|
|
141
|
+
if task_type is not UNSET:
|
|
142
|
+
field_dict["task_type"] = task_type
|
|
143
|
+
if processing_mode is not UNSET:
|
|
144
|
+
field_dict["processing_mode"] = processing_mode
|
|
145
|
+
|
|
146
|
+
return field_dict
|
|
147
|
+
|
|
148
|
+
@classmethod
|
|
149
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
150
|
+
from ..models.dedupe_query_params import DedupeQueryParams
|
|
151
|
+
|
|
152
|
+
d = dict(src_dict)
|
|
153
|
+
query = DedupeQueryParams.from_dict(d.pop("query"))
|
|
154
|
+
|
|
155
|
+
def _parse_input_artifacts(data: object) -> list[UUID] | None | Unset:
|
|
156
|
+
if data is None:
|
|
157
|
+
return data
|
|
158
|
+
if isinstance(data, Unset):
|
|
159
|
+
return data
|
|
160
|
+
try:
|
|
161
|
+
if not isinstance(data, list):
|
|
162
|
+
raise TypeError()
|
|
163
|
+
input_artifacts_type_0 = []
|
|
164
|
+
_input_artifacts_type_0 = data
|
|
165
|
+
for componentsschemas_input_artifacts_ids_item_data in _input_artifacts_type_0:
|
|
166
|
+
componentsschemas_input_artifacts_ids_item = UUID(componentsschemas_input_artifacts_ids_item_data)
|
|
167
|
+
|
|
168
|
+
input_artifacts_type_0.append(componentsschemas_input_artifacts_ids_item)
|
|
169
|
+
|
|
170
|
+
return input_artifacts_type_0
|
|
171
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
172
|
+
pass
|
|
173
|
+
return cast(list[UUID] | None | Unset, data)
|
|
174
|
+
|
|
175
|
+
input_artifacts = _parse_input_artifacts(d.pop("input_artifacts", UNSET))
|
|
176
|
+
|
|
177
|
+
def _parse_context_artifacts(data: object) -> list[UUID] | None | Unset:
|
|
178
|
+
if data is None:
|
|
179
|
+
return data
|
|
180
|
+
if isinstance(data, Unset):
|
|
181
|
+
return data
|
|
182
|
+
try:
|
|
183
|
+
if not isinstance(data, list):
|
|
184
|
+
raise TypeError()
|
|
185
|
+
context_artifacts_type_0 = []
|
|
186
|
+
_context_artifacts_type_0 = data
|
|
187
|
+
for componentsschemas_context_artifacts_ids_item_data in _context_artifacts_type_0:
|
|
188
|
+
componentsschemas_context_artifacts_ids_item = UUID(
|
|
189
|
+
componentsschemas_context_artifacts_ids_item_data
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
context_artifacts_type_0.append(componentsschemas_context_artifacts_ids_item)
|
|
193
|
+
|
|
194
|
+
return context_artifacts_type_0
|
|
195
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
196
|
+
pass
|
|
197
|
+
return cast(list[UUID] | None | Unset, data)
|
|
198
|
+
|
|
199
|
+
context_artifacts = _parse_context_artifacts(d.pop("context_artifacts", UNSET))
|
|
200
|
+
|
|
201
|
+
def _parse_label(data: object) -> None | str | Unset:
|
|
202
|
+
if data is None:
|
|
203
|
+
return data
|
|
204
|
+
if isinstance(data, Unset):
|
|
205
|
+
return data
|
|
206
|
+
return cast(None | str | Unset, data)
|
|
207
|
+
|
|
208
|
+
label = _parse_label(d.pop("label", UNSET))
|
|
209
|
+
|
|
210
|
+
def _parse_description(data: object) -> None | str | Unset:
|
|
211
|
+
if data is None:
|
|
212
|
+
return data
|
|
213
|
+
if isinstance(data, Unset):
|
|
214
|
+
return data
|
|
215
|
+
return cast(None | str | Unset, data)
|
|
216
|
+
|
|
217
|
+
description = _parse_description(d.pop("description", UNSET))
|
|
218
|
+
|
|
219
|
+
def _parse_task_id(data: object) -> None | Unset | UUID:
|
|
220
|
+
if data is None:
|
|
221
|
+
return data
|
|
222
|
+
if isinstance(data, Unset):
|
|
223
|
+
return data
|
|
224
|
+
try:
|
|
225
|
+
if not isinstance(data, str):
|
|
226
|
+
raise TypeError()
|
|
227
|
+
task_id_type_0 = UUID(data)
|
|
228
|
+
|
|
229
|
+
return task_id_type_0
|
|
230
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
231
|
+
pass
|
|
232
|
+
return cast(None | Unset | UUID, data)
|
|
233
|
+
|
|
234
|
+
task_id = _parse_task_id(d.pop("task_id", UNSET))
|
|
235
|
+
|
|
236
|
+
def _parse_replaces_task_id(data: object) -> None | Unset | UUID:
|
|
237
|
+
if data is None:
|
|
238
|
+
return data
|
|
239
|
+
if isinstance(data, Unset):
|
|
240
|
+
return data
|
|
241
|
+
try:
|
|
242
|
+
if not isinstance(data, str):
|
|
243
|
+
raise TypeError()
|
|
244
|
+
replaces_task_id_type_0 = UUID(data)
|
|
245
|
+
|
|
246
|
+
return replaces_task_id_type_0
|
|
247
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
248
|
+
pass
|
|
249
|
+
return cast(None | Unset | UUID, data)
|
|
250
|
+
|
|
251
|
+
replaces_task_id = _parse_replaces_task_id(d.pop("replaces_task_id", UNSET))
|
|
252
|
+
|
|
253
|
+
def _parse_twin_artifact_id(data: object) -> None | Unset | UUID:
|
|
254
|
+
if data is None:
|
|
255
|
+
return data
|
|
256
|
+
if isinstance(data, Unset):
|
|
257
|
+
return data
|
|
258
|
+
try:
|
|
259
|
+
if not isinstance(data, str):
|
|
260
|
+
raise TypeError()
|
|
261
|
+
twin_artifact_id_type_0 = UUID(data)
|
|
262
|
+
|
|
263
|
+
return twin_artifact_id_type_0
|
|
264
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
265
|
+
pass
|
|
266
|
+
return cast(None | Unset | UUID, data)
|
|
267
|
+
|
|
268
|
+
twin_artifact_id = _parse_twin_artifact_id(d.pop("twin_artifact_id", UNSET))
|
|
269
|
+
|
|
270
|
+
task_type = cast(Literal["dedupe"] | Unset, d.pop("task_type", UNSET))
|
|
271
|
+
if task_type != "dedupe" and not isinstance(task_type, Unset):
|
|
272
|
+
raise ValueError(f"task_type must match const 'dedupe', got '{task_type}'")
|
|
273
|
+
|
|
274
|
+
_processing_mode = d.pop("processing_mode", UNSET)
|
|
275
|
+
processing_mode: ProcessingMode | Unset
|
|
276
|
+
if isinstance(_processing_mode, Unset):
|
|
277
|
+
processing_mode = UNSET
|
|
278
|
+
else:
|
|
279
|
+
processing_mode = ProcessingMode(_processing_mode)
|
|
280
|
+
|
|
281
|
+
dedupe_request_params = cls(
|
|
282
|
+
query=query,
|
|
283
|
+
input_artifacts=input_artifacts,
|
|
284
|
+
context_artifacts=context_artifacts,
|
|
285
|
+
label=label,
|
|
286
|
+
description=description,
|
|
287
|
+
task_id=task_id,
|
|
288
|
+
replaces_task_id=replaces_task_id,
|
|
289
|
+
twin_artifact_id=twin_artifact_id,
|
|
290
|
+
task_type=task_type,
|
|
291
|
+
processing_mode=processing_mode,
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
dedupe_request_params.additional_properties = d
|
|
295
|
+
return dedupe_request_params
|
|
296
|
+
|
|
297
|
+
@property
|
|
298
|
+
def additional_keys(self) -> list[str]:
|
|
299
|
+
return list(self.additional_properties.keys())
|
|
300
|
+
|
|
301
|
+
def __getitem__(self, key: str) -> Any:
|
|
302
|
+
return self.additional_properties[key]
|
|
303
|
+
|
|
304
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
305
|
+
self.additional_properties[key] = value
|
|
306
|
+
|
|
307
|
+
def __delitem__(self, key: str) -> None:
|
|
308
|
+
del self.additional_properties[key]
|
|
309
|
+
|
|
310
|
+
def __contains__(self, key: str) -> bool:
|
|
311
|
+
return key in self.additional_properties
|