sapiopycommons 2025.7.30a660__py3-none-any.whl → 2025.7.31a664__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.

Potentially problematic release.


This version of sapiopycommons might be problematic. Click here for more details.

Files changed (34) hide show
  1. sapiopycommons/ai/tool_of_tools.py +809 -0
  2. sapiopycommons/callbacks/callback_util.py +5 -2
  3. sapiopycommons/webhook/webservice_handlers.py +1 -1
  4. {sapiopycommons-2025.7.30a660.dist-info → sapiopycommons-2025.7.31a664.dist-info}/METADATA +1 -1
  5. {sapiopycommons-2025.7.30a660.dist-info → sapiopycommons-2025.7.31a664.dist-info}/RECORD +7 -33
  6. sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.py +0 -43
  7. sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.pyi +0 -31
  8. sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2_grpc.py +0 -24
  9. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.py +0 -123
  10. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.pyi +0 -598
  11. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2_grpc.py +0 -24
  12. sapiopycommons/ai/api/plan/proto/step_output_pb2.py +0 -45
  13. sapiopycommons/ai/api/plan/proto/step_output_pb2.pyi +0 -42
  14. sapiopycommons/ai/api/plan/proto/step_output_pb2_grpc.py +0 -24
  15. sapiopycommons/ai/api/plan/proto/step_pb2.py +0 -43
  16. sapiopycommons/ai/api/plan/proto/step_pb2.pyi +0 -43
  17. sapiopycommons/ai/api/plan/proto/step_pb2_grpc.py +0 -24
  18. sapiopycommons/ai/api/plan/script/proto/script_pb2.py +0 -55
  19. sapiopycommons/ai/api/plan/script/proto/script_pb2.pyi +0 -115
  20. sapiopycommons/ai/api/plan/script/proto/script_pb2_grpc.py +0 -153
  21. sapiopycommons/ai/api/plan/tool/proto/entry_pb2.py +0 -57
  22. sapiopycommons/ai/api/plan/tool/proto/entry_pb2.pyi +0 -96
  23. sapiopycommons/ai/api/plan/tool/proto/entry_pb2_grpc.py +0 -24
  24. sapiopycommons/ai/api/plan/tool/proto/tool_pb2.py +0 -71
  25. sapiopycommons/ai/api/plan/tool/proto/tool_pb2.pyi +0 -250
  26. sapiopycommons/ai/api/plan/tool/proto/tool_pb2_grpc.py +0 -154
  27. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.py +0 -39
  28. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.pyi +0 -32
  29. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2_grpc.py +0 -24
  30. sapiopycommons/ai/protobuf_utils.py +0 -506
  31. sapiopycommons/ai/test_client.py +0 -287
  32. sapiopycommons/ai/tool_service_base.py +0 -924
  33. {sapiopycommons-2025.7.30a660.dist-info → sapiopycommons-2025.7.31a664.dist-info}/WHEEL +0 -0
  34. {sapiopycommons-2025.7.30a660.dist-info → sapiopycommons-2025.7.31a664.dist-info}/licenses/LICENSE +0 -0
@@ -1,32 +0,0 @@
1
- from google.protobuf.internal import containers as _containers
2
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
3
- from google.protobuf import descriptor as _descriptor
4
- from google.protobuf import message as _message
5
- from typing import ClassVar as _ClassVar, Iterable as _Iterable, Optional as _Optional, Union as _Union
6
-
7
- DESCRIPTOR: _descriptor.FileDescriptor
8
-
9
- class SapioUserSecretTypePbo(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
10
- __slots__ = ()
11
- SESSION_TOKEN: _ClassVar[SapioUserSecretTypePbo]
12
- PASSWORD: _ClassVar[SapioUserSecretTypePbo]
13
- SESSION_TOKEN: SapioUserSecretTypePbo
14
- PASSWORD: SapioUserSecretTypePbo
15
-
16
- class SapioConnectionInfoPbo(_message.Message):
17
- __slots__ = ("webservice_url", "rmi_host", "rmi_port", "app_guid", "username", "secret_type", "secret")
18
- WEBSERVICE_URL_FIELD_NUMBER: _ClassVar[int]
19
- RMI_HOST_FIELD_NUMBER: _ClassVar[int]
20
- RMI_PORT_FIELD_NUMBER: _ClassVar[int]
21
- APP_GUID_FIELD_NUMBER: _ClassVar[int]
22
- USERNAME_FIELD_NUMBER: _ClassVar[int]
23
- SECRET_TYPE_FIELD_NUMBER: _ClassVar[int]
24
- SECRET_FIELD_NUMBER: _ClassVar[int]
25
- webservice_url: str
26
- rmi_host: _containers.RepeatedScalarFieldContainer[str]
27
- rmi_port: int
28
- app_guid: str
29
- username: str
30
- secret_type: SapioUserSecretTypePbo
31
- secret: str
32
- def __init__(self, webservice_url: _Optional[str] = ..., rmi_host: _Optional[_Iterable[str]] = ..., rmi_port: _Optional[int] = ..., app_guid: _Optional[str] = ..., username: _Optional[str] = ..., secret_type: _Optional[_Union[SapioUserSecretTypePbo, str]] = ..., secret: _Optional[str] = ...) -> None: ...
@@ -1,24 +0,0 @@
1
- # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
- """Client and server classes corresponding to protobuf-defined services."""
3
- import grpc
4
- import warnings
5
-
6
-
7
- GRPC_GENERATED_VERSION = '1.70.0'
8
- GRPC_VERSION = grpc.__version__
9
- _version_not_supported = False
10
-
11
- try:
12
- from grpc._utilities import first_version_is_lower
13
- _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
14
- except ImportError:
15
- _version_not_supported = True
16
-
17
- if _version_not_supported:
18
- raise RuntimeError(
19
- f'The grpc package installed is at version {GRPC_VERSION},'
20
- + f' but the generated code in sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2_grpc.py depends on'
21
- + f' grpcio>={GRPC_GENERATED_VERSION}.'
22
- + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
23
- + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
24
- )
@@ -1,506 +0,0 @@
1
- from sapiopylib.rest.pojo.Sort import SortDirection
2
- from sapiopylib.rest.pojo.datatype.FieldDefinition import AbstractVeloxFieldDefinition, FieldType, \
3
- VeloxBooleanFieldDefinition, VeloxDateFieldDefinition, VeloxAccessionFieldDefinition, VeloxActionFieldDefinition, \
4
- VeloxChildLinkFieldDefinition, VeloxDateRangeFieldDefinition, VeloxDoubleFieldDefinition, \
5
- VeloxEnumFieldDefinition, VeloxIdentifierFieldDefinition, VeloxIntegerFieldDefinition, \
6
- VeloxLongFieldDefinition, VeloxMultiParentFieldDefinition, VeloxParentFieldDefinition, \
7
- VeloxPickListFieldDefinition, VeloxSelectionFieldDefinition, VeloxShortFieldDefinition, \
8
- VeloxStringFieldDefinition, VeloxSideLinkFieldDefinition, VeloxActionStringFieldDefinition, FieldValidator, \
9
- ListMode, SapioDoubleFormat, SapioStringFormat
10
-
11
- from sapiopycommons.ai.api.fielddefinitions.proto.fields_pb2 import FieldValuePbo
12
- from sapiopycommons.ai.api.fielddefinitions.proto.velox_field_def_pb2 import FieldTypePbo, SortDirectionPbo, \
13
- DoubleFormatPbo, StringFormatPbo, FieldValidatorPbo, VeloxFieldDefPbo, BooleanPropertiesPbo, DatePropertiesPbo, \
14
- DoublePropertiesPbo, IntegerPropertiesPbo, LongPropertiesPbo, SelectionPropertiesPbo, StringPropertiesPbo, \
15
- SideLinkPropertiesPbo, ShortPropertiesPbo, PickListPropertiesPbo, ParentLinkPropertiesPbo, MultiParentPropertiesPbo, \
16
- IdentifierPropertiesPbo, FileBlobPropertiesPbo, EnumPropertiesPbo, DateRangePropertiesPbo, ChildLinkPropertiesPbo, \
17
- ActionStringPropertiesPbo, ActionPropertiesPbo, AccessionPropertiesPbo, SelectionDependentFieldEntryPbo, \
18
- EnumDependentFieldEntryPbo, BooleanDependentFieldEntryPbo
19
- from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import DataTypePbo
20
- from sapiopycommons.general.aliases import FieldValue
21
-
22
-
23
- # FR-47422: Created class.
24
- class ProtobufUtils:
25
- @staticmethod
26
- def content_type_str(content_type: DataTypePbo) -> str:
27
- """
28
- Convert a DataTypePbo enum to its string representation.
29
-
30
- :param content_type: The DataTypePbo enum value.
31
- :return: The string representation of the DataTypePbo.
32
- """
33
- match content_type:
34
- case DataTypePbo.BINARY:
35
- return "binary"
36
- case DataTypePbo.CSV:
37
- return "csv"
38
- case DataTypePbo.IMAGE:
39
- return "image"
40
- case DataTypePbo.JSON:
41
- return "json"
42
- case DataTypePbo.TEXT:
43
- return "text"
44
- case _:
45
- raise Exception(f"Unexpected content type: {content_type}")
46
-
47
- @staticmethod
48
- def field_type_to_pbo(field_type: FieldType) -> FieldTypePbo:
49
- """
50
- Convert a FieldType enum to its corresponding FieldTypePbo.
51
-
52
- :param field_type: The FieldType enum value.
53
- :return: The corresponding FieldTypePbo.
54
- """
55
- match field_type:
56
- case FieldType.ACTION:
57
- return FieldTypePbo.ACTION
58
- case FieldType.ACTION_STRING:
59
- return FieldTypePbo.ACTION_STRING
60
- case FieldType.AUTO_ACCESSION:
61
- return FieldTypePbo.AUTO_ACCESSION
62
- case FieldType.BOOLEAN:
63
- return FieldTypePbo.BOOLEAN
64
- case FieldType.CHILDLINK:
65
- return FieldTypePbo.CHILDLINK
66
- case FieldType.DATE:
67
- return FieldTypePbo.DATE
68
- case FieldType.DATE_RANGE:
69
- return FieldTypePbo.DATE_RANGE
70
- case FieldType.DOUBLE:
71
- return FieldTypePbo.DOUBLE
72
- case FieldType.ENUM:
73
- return FieldTypePbo.ENUM
74
- # case FieldType.FILE_BLOB:
75
- # return FieldTypePbo.FILE_BLOB
76
- case FieldType.IDENTIFIER:
77
- return FieldTypePbo.IDENTIFIER
78
- case FieldType.INTEGER:
79
- return FieldTypePbo.INTEGER
80
- case FieldType.LINK:
81
- return FieldTypePbo.LINK
82
- case FieldType.LONG:
83
- return FieldTypePbo.LONG
84
- case FieldType.MULTIPARENTLINK:
85
- return FieldTypePbo.MULTIPARENTLINK
86
- case FieldType.PARENTLINK:
87
- return FieldTypePbo.PARENTLINK
88
- case FieldType.PICKLIST:
89
- return FieldTypePbo.PICKLIST
90
- case FieldType.SELECTION:
91
- return FieldTypePbo.SELECTION
92
- case FieldType.SHORT:
93
- return FieldTypePbo.SHORT
94
- case FieldType.SIDE_LINK:
95
- return FieldTypePbo.SIDE_LINK
96
- case FieldType.STRING:
97
- return FieldTypePbo.STRING
98
- case _:
99
- return FieldTypePbo.FIELD_TYPE_UNSPECIFIED
100
-
101
- @staticmethod
102
- def sort_direction_to_pbo(sort_direction: SortDirection | None) -> SortDirectionPbo:
103
- """
104
- Convert a SortDirection enum to its corresponding SortDirectionPbo.
105
-
106
- :param sort_direction: The SortDirection enum value.
107
- :return: The corresponding SortDirectionPbo.
108
- """
109
- if sort_direction is None or sort_direction == SortDirection.NONE:
110
- return SortDirectionPbo.SORT_DIRECTION_NONE
111
- elif sort_direction == SortDirection.ASCENDING:
112
- return SortDirectionPbo.SORT_DIRECTION_ASCENDING
113
- elif sort_direction == SortDirection.DESCENDING:
114
- return SortDirectionPbo.SORT_DIRECTION_DESCENDING
115
- else:
116
- return SortDirectionPbo.SORT_DIRECTION_UNSPECIFIED
117
-
118
- @staticmethod
119
- def double_format_to_pbo(double_format: SapioDoubleFormat | None) -> DoubleFormatPbo:
120
- """
121
- Convert a SapioDoubleFormat enum to its corresponding DoubleFormatPbo.
122
-
123
- :param double_format: The SapioDoubleFormat enum value.
124
- :return: The corresponding DoubleFormatPbo.
125
- """
126
- if double_format is None:
127
- return DoubleFormatPbo.DOUBLE_FORMAT_UNSPECIFIED
128
- elif double_format == SapioDoubleFormat.CURRENCY:
129
- return DoubleFormatPbo.DOUBLE_FORMAT_CURRENCY
130
- elif double_format == SapioDoubleFormat.PERCENTAGE:
131
- return DoubleFormatPbo.DOUBLE_FORMAT_PERCENTAGE
132
- else:
133
- return DoubleFormatPbo.DOUBLE_FORMAT_UNSPECIFIED
134
-
135
- @staticmethod
136
- def string_format_to_pbo(string_format: SapioStringFormat | None) -> StringFormatPbo:
137
- """
138
- Convert a SapioStringFormat enum to its corresponding StringFormatPbo.
139
-
140
- :param string_format: The SapioStringFormat enum value.
141
- :return: The corresponding StringFormatPbo.
142
- """
143
- if string_format is None:
144
- return StringFormatPbo.STRING_FORMAT_UNSPECIFIED
145
- elif string_format == SapioStringFormat.EMAIL:
146
- return StringFormatPbo.STRING_FORMAT_EMAIL
147
- elif string_format == SapioStringFormat.PHONE:
148
- return StringFormatPbo.STRING_FORMAT_PHONE
149
- else:
150
- return StringFormatPbo.STRING_FORMAT_UNSPECIFIED
151
-
152
- @staticmethod
153
- def field_validator_to_pbo(validator: FieldValidator | None) -> FieldValidatorPbo | None:
154
- """
155
- Convert a FieldValidator object to its corresponding FieldValidatorPbo.
156
-
157
- :param validator: The FieldValidator object.
158
- :return: The corresponding FieldValidatorPbo or None if validator is None.
159
- """
160
- if validator is None:
161
- return None
162
- return FieldValidatorPbo(
163
- validation_regex=validator.validation_regex,
164
- error_message=validator.error_message
165
- )
166
-
167
- @staticmethod
168
- def list_mode_to_str(list_mode: ListMode, field: VeloxSelectionFieldDefinition) -> str | None:
169
- """
170
- Convert a ListMode enum to its string representation.
171
-
172
- :param list_mode: The ListMode enum value.
173
- :param field: The VeloxSelectionFieldDefinition object.
174
- :return: The string representation of the ListMode or None if list_mode is None.
175
- """
176
- if list_mode is None:
177
- return None
178
- list_mode_str = list_mode.list_mode_name
179
- if list_mode == ListMode.LIST:
180
- list_mode_str += field.pick_list_name or ""
181
- elif list_mode == ListMode.PLUGIN:
182
- list_mode_str += field.plugin_name or ""
183
- elif list_mode == ListMode.REPORT:
184
- list_mode_str += field.custom_report_name or ""
185
- return list_mode_str
186
-
187
- @staticmethod
188
- def field_def_to_pbo(field: AbstractVeloxFieldDefinition) -> VeloxFieldDefPbo:
189
- """
190
- Convert a AbstractVeloxFieldDefinition object to its corresponding VeloxFieldDefPbo.
191
-
192
- :param field: The AbstractVeloxFieldDefinition object.
193
- :return: The corresponding VeloxFieldDefPbo.
194
- """
195
- accession_properties: AccessionPropertiesPbo | None = None
196
- action_properties: ActionPropertiesPbo | None = None
197
- action_string_properties: ActionStringPropertiesPbo | None = None
198
- boolean_properties: BooleanPropertiesPbo | None = None
199
- child_link_properties: ChildLinkPropertiesPbo | None = None
200
- date_properties: DatePropertiesPbo | None = None
201
- date_range_properties: DateRangePropertiesPbo | None = None
202
- double_properties: DoublePropertiesPbo | None = None
203
- enum_properties: EnumPropertiesPbo | None = None
204
- file_blob_properties: FileBlobPropertiesPbo | None = None
205
- identifier_properties: IdentifierPropertiesPbo | None = None
206
- integer_properties: IntegerPropertiesPbo | None = None
207
- long_properties: LongPropertiesPbo | None = None
208
- multi_parent_properties: MultiParentPropertiesPbo | None = None
209
- parent_link_properties: ParentLinkPropertiesPbo | None = None
210
- picklist_properties: PickListPropertiesPbo | None = None
211
- selection_properties: SelectionPropertiesPbo | None = None
212
- short_properties: ShortPropertiesPbo | None = None
213
- side_link_properties: SideLinkPropertiesPbo | None = None
214
- string_properties: StringPropertiesPbo | None = None
215
-
216
- if isinstance(field, VeloxAccessionFieldDefinition):
217
- accession_properties = AccessionPropertiesPbo(
218
- unique_value=field.unique_value,
219
- # index_for_search # Missing in FieldDefinition.py
220
- link_out=field.link_out,
221
- link_out_url=field.link_out_url,
222
- sequence_key=field.sequence_key,
223
- prefix=field.prefix,
224
- suffix=field.suffix,
225
- number_of_digits=field.number_of_digits,
226
- starting_value=field.starting_value
227
- )
228
- elif isinstance(field, VeloxActionFieldDefinition):
229
- action_properties = ActionPropertiesPbo(
230
- # icon_name # Missing in FieldDefinition.py
231
- # icon_color # Missing in FieldDefinition.py
232
- # background_color # Missing in FieldDefinition.py
233
- # font_color # Missing in FieldDefinition.py
234
- # action_plugin_path # Missing in FieldDefinition.py
235
- )
236
- elif isinstance(field, VeloxActionStringFieldDefinition):
237
- action_string_properties = ActionStringPropertiesPbo(
238
- default_value=field.default_value,
239
- max_length=field.max_length,
240
- unique_value=field.unique_value,
241
- icon_name=field.icon_name,
242
- action_plugin_path=field.action_plugin_path,
243
- field_validator=ProtobufUtils.field_validator_to_pbo(field.field_validator),
244
- direct_edit=field.direct_edit
245
- )
246
- elif isinstance(field, VeloxBooleanFieldDefinition):
247
- boolean_properties = BooleanPropertiesPbo(
248
- default_value=field.default_value,
249
- is_process_todo_item=field.process_todo_item,
250
- dependent_fields=[BooleanDependentFieldEntryPbo(k, v) for k, v in field.get_dependent_field_map().items()],
251
- is_hide_disabled_fields=field.hide_disabled_fields
252
- )
253
- elif isinstance(field, VeloxChildLinkFieldDefinition):
254
- child_link_properties = ChildLinkPropertiesPbo(
255
- # default_value # Missing in FieldDefinition.py
256
- )
257
- elif isinstance(field, VeloxDateFieldDefinition):
258
- date_properties = DatePropertiesPbo(
259
- default_value=field.default_value,
260
- static_date=field.static_date,
261
- date_time_format=field.date_time_format
262
- )
263
- elif isinstance(field, VeloxDateRangeFieldDefinition):
264
- date_range_properties = DateRangePropertiesPbo(
265
- default_value=field.default_value,
266
- is_static=field.static_date,
267
- date_time_format=field.date_time_format
268
- )
269
- elif isinstance(field, VeloxDoubleFieldDefinition):
270
- double_properties = DoublePropertiesPbo(
271
- min_value=field.min_value,
272
- max_value=field.max_value,
273
- default_value=field.default_value,
274
- precision=field.precision,
275
- double_format=ProtobufUtils.double_format_to_pbo(field.double_format),
276
- # color_ranges # Missing in FieldDefinition.py
277
- )
278
- # elif isinstance(field, VeloxFileBlobFieldDefinition):
279
- # file_blob_properties = FileBlobPropertiesPbo()
280
- elif isinstance(field, VeloxEnumFieldDefinition):
281
- enum_properties = EnumPropertiesPbo(
282
- default_value=field.default_value,
283
- values=field.values if field.values is not None else [],
284
- # color_mapping # Missing in FieldDefinition.py
285
- # auto_clear_field_list # Missing in FieldDefinition.py
286
- dependent_fields=[EnumDependentFieldEntryPbo(k, v) for k,v in field.get_dependent_field_map().items()],
287
- is_hide_disabled_fields=field.hide_disabled_fields
288
- )
289
- elif isinstance(field, VeloxIdentifierFieldDefinition):
290
- identifier_properties = IdentifierPropertiesPbo(
291
- # default_value # Missing in FieldDefinition.py
292
- )
293
- elif isinstance(field, VeloxIntegerFieldDefinition):
294
- integer_properties = IntegerPropertiesPbo(
295
- min_value=field.min_value,
296
- max_value=field.max_value,
297
- default_value=field.default_value,
298
- unique_value=field.unique_value,
299
- # color_ranges # Missing in FieldDefinition.py
300
- )
301
- elif isinstance(field, VeloxLongFieldDefinition):
302
- long_properties = LongPropertiesPbo(
303
- min_value=field.min_value,
304
- max_value=field.max_value,
305
- default_value=field.default_value,
306
- unique_value=field.unique_value,
307
- # color_ranges # Missing in FieldDefinition.py
308
- )
309
- elif isinstance(field, VeloxMultiParentFieldDefinition):
310
- multi_parent_properties = MultiParentPropertiesPbo()
311
- elif isinstance(field, VeloxParentFieldDefinition):
312
- parent_link_properties = ParentLinkPropertiesPbo(
313
- # default_value # Missing in FieldDefinition.py
314
- )
315
- elif isinstance(field, VeloxPickListFieldDefinition):
316
- picklist_properties = PickListPropertiesPbo(
317
- default_value=field.default_value,
318
- pick_list_name=field.pick_list_name,
319
- direct_edit=field.direct_edit,
320
- # link_out # Missing in FieldDefinition.py
321
- # link_out_url # Missing in FieldDefinition.py
322
- # index_for_search # Missing in FieldDefinition.py
323
- # field_validator # Missing in FieldDefinition.py
324
- # color_mapping # Missing in FieldDefinition.py
325
- # auto_clear_field_list # Missing in FieldDefinition.py
326
- # process_detail_map # Missing in FieldDefinition.py
327
- dependent_fields=[SelectionDependentFieldEntryPbo(k, v) for k,v in field.get_dependent_field_map().items()],
328
- is_hide_disabled_fields=field.hide_disabled_fields
329
- )
330
- elif isinstance(field, VeloxSelectionFieldDefinition):
331
- list_mode_str = ProtobufUtils.list_mode_to_str(field.list_mode, field)
332
- selection_properties = SelectionPropertiesPbo(
333
- default_value=field.default_value,
334
- list_mode=list_mode_str,
335
- # auto_sort # Missing in FieldDefinition.py
336
- direct_edit=field.direct_edit,
337
- unique_value=field.unique_value,
338
- # link_out # Missing in FieldDefinition.py
339
- # link_out_url # Missing in FieldDefinition.py
340
- multi_select=field.multi_select,
341
- # index_for_search # Missing in FieldDefinition.py
342
- # is_auto_size # Missing in FieldDefinition.py
343
- # field_validator # Missing in FieldDefinition.py
344
- static_list_values=field.static_list_values if field.static_list_values is not None else [],
345
- # color_mapping # Missing in FieldDefinition.py
346
- # auto_clear_field_list # Missing in FieldDefinition.py
347
- # process_detail_map # Missing in FieldDefinition.py
348
- dependent_fields=[SelectionDependentFieldEntryPbo(k, v) for k,v in field.get_dependent_field_map().items()],
349
- is_hide_disabled_fields=field.hide_disabled_fields
350
- )
351
- elif isinstance(field, VeloxShortFieldDefinition):
352
- short_properties = ShortPropertiesPbo(
353
- min_value=field.min_value,
354
- max_value=field.max_value,
355
- default_value=field.default_value,
356
- unique_value=field.unique_value,
357
- # color_ranges # Missing in FieldDefinition.py
358
- )
359
- elif isinstance(field, VeloxSideLinkFieldDefinition):
360
- side_link_properties = SideLinkPropertiesPbo(
361
- linked_data_type_name=field.linked_data_type_name,
362
- default_value=field.default_value,
363
- # show_in_knowledge_graph # Missing in FieldDefinition.py
364
- # knowledge_graph_display_name # Missing in FieldDefinition.py
365
- )
366
- elif isinstance(field, VeloxStringFieldDefinition):
367
- string_properties = StringPropertiesPbo(
368
- default_value=field.default_value,
369
- max_length=field.max_length,
370
- num_lines=field.num_lines,
371
- unique_value=field.unique_value,
372
- # index_for_search # Missing in FieldDefinition.py
373
- html_editor=field.html_editor,
374
- link_out=field.link_out,
375
- link_out_url=field.link_out_url,
376
- string_format=ProtobufUtils.string_format_to_pbo(field.string_format),
377
- is_auto_size=field.auto_size,
378
- field_validator=ProtobufUtils.field_validator_to_pbo(field.field_validator),
379
- # preserve_padding # Missing in FieldDefinition.py
380
- )
381
- else:
382
- print(f"Warning: Unhandled field type for properties mapping: {type(field)}")
383
-
384
- return VeloxFieldDefPbo(
385
- data_field_type=ProtobufUtils.field_type_to_pbo(field.data_field_type),
386
- data_field_name=field.data_field_name,
387
- display_name=field.display_name,
388
- description=field.description,
389
- required=field.required,
390
- editable=field.editable,
391
- visible=field.visible,
392
- identifier=field.identifier,
393
- identifier_order=field.identifier_order,
394
- sort_direction=ProtobufUtils.sort_direction_to_pbo(field.sort_direction),
395
- sort_order=field.sort_order,
396
- tag=field.tag,
397
- # approve_edit # Missing in FieldDefinition.py
398
- # workflow_only_editing # Missing in FieldDefinition.py
399
- # font_size # Missing in FieldDefinition.py
400
- # bold_font # Missing in FieldDefinition.py
401
- # italic_font # Missing in FieldDefinition.py
402
- # text_decoration # Missing in FieldDefinition.py
403
- is_key_field=field.key_field,
404
- key_field_order=field.key_field_order,
405
- # is_removable # Missing in FieldDefinition.py
406
- is_system_field=field.system_field,
407
- # is_restricted # Missing in FieldDefinition.py
408
- is_audit_logged=field.audit_logged,
409
- # is_active # Missing in FieldDefinition.py
410
- # is_for_plugin_use_only # Missing in FieldDefinition.py
411
- default_table_column_width=field.default_table_column_width,
412
-
413
- accession_properties=accession_properties,
414
- action_properties=action_properties,
415
- action_string_properties=action_string_properties,
416
- boolean_properties=boolean_properties,
417
- child_link_properties=child_link_properties,
418
- date_properties=date_properties,
419
- date_range_properties=date_range_properties,
420
- double_properties=double_properties,
421
- enum_properties=enum_properties,
422
- file_blob_properties=file_blob_properties,
423
- identifier_properties=identifier_properties,
424
- integer_properties=integer_properties,
425
- long_properties=long_properties,
426
- multi_parent_properties=multi_parent_properties,
427
- parent_link_properties=parent_link_properties,
428
- picklist_properties=picklist_properties,
429
- selection_properties=selection_properties,
430
- short_properties=short_properties,
431
- side_link_properties=side_link_properties,
432
- string_properties=string_properties,
433
- )
434
-
435
- @staticmethod
436
- def field_pbo_to_value(value: FieldValuePbo) -> FieldValue:
437
- """
438
- Convert a StepRecordFieldValue to its corresponding Python value.
439
-
440
- :param value: The StepRecordFieldValue object.
441
- :return: The corresponding Python value.
442
- """
443
- if value.HasField("string_value"):
444
- return value.string_value
445
- elif value.HasField("int_value"):
446
- return value.int_value
447
- elif value.HasField("double_value"):
448
- return value.double_value
449
- elif value.HasField("bool_value"):
450
- return value.bool_value
451
- else:
452
- return None
453
-
454
- @staticmethod
455
- def field_def_pbo_to_default_value(field_def: VeloxFieldDefPbo) -> FieldValue:
456
- """
457
- Get the default value of a VeloxFieldDefPbo.
458
-
459
- :param field_def: The VeloxFieldDefPbo object.
460
- :return: The default value for the field definition.
461
- """
462
- match field_def.data_field_type:
463
- case FieldTypePbo.ACTION:
464
- return None
465
- case FieldTypePbo.ACTION_STRING:
466
- return field_def.action_string_properties.default_value
467
- case FieldTypePbo.AUTO_ACCESSION:
468
- return None
469
- case FieldTypePbo.BOOLEAN:
470
- return field_def.boolean_properties.default_value
471
- case FieldTypePbo.CHILDLINK:
472
- return None
473
- case FieldTypePbo.DATE:
474
- return field_def.date_properties.default_value
475
- case FieldTypePbo.DATE_RANGE:
476
- return field_def.date_range_properties.default_value
477
- case FieldTypePbo.DOUBLE:
478
- return field_def.double_properties.default_value
479
- case FieldTypePbo.ENUM:
480
- return field_def.enum_properties.default_value
481
- # case FieldTypePbo.FILE_BLOB:
482
- # return None
483
- case FieldTypePbo.IDENTIFIER:
484
- return None
485
- case FieldTypePbo.INTEGER:
486
- return field_def.integer_properties.default_value
487
- case FieldTypePbo.LINK:
488
- return None
489
- case FieldTypePbo.LONG:
490
- return field_def.long_properties.default_value
491
- case FieldTypePbo.MULTIPARENTLINK:
492
- return None
493
- case FieldTypePbo.PARENTLINK:
494
- return None
495
- case FieldTypePbo.PICKLIST:
496
- return field_def.picklist_properties.default_value
497
- case FieldTypePbo.SELECTION:
498
- return field_def.selection_properties.default_value
499
- case FieldTypePbo.SHORT:
500
- return field_def.short_properties.default_value
501
- case FieldTypePbo.SIDE_LINK:
502
- return field_def.side_link_properties.default_value
503
- case FieldTypePbo.STRING:
504
- return field_def.string_properties.default_value
505
- case _:
506
- raise Exception(f"Unexpected field type: {field_def.data_field_type}")