sapiopycommons 2025.4.17a489__py3-none-any.whl → 2025.4.23a491__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 (51) hide show
  1. sapiopycommons/ai/__init__.py +0 -0
  2. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.py +123 -0
  3. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.pyi +598 -0
  4. sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2_grpc.py +24 -0
  5. sapiopycommons/ai/api/plan/proto/step_output_pb2.py +45 -0
  6. sapiopycommons/ai/api/plan/proto/step_output_pb2.pyi +42 -0
  7. sapiopycommons/ai/api/plan/proto/step_output_pb2_grpc.py +24 -0
  8. sapiopycommons/ai/api/plan/proto/step_pb2.py +43 -0
  9. sapiopycommons/ai/api/plan/proto/step_pb2.pyi +43 -0
  10. sapiopycommons/ai/api/plan/proto/step_pb2_grpc.py +24 -0
  11. sapiopycommons/ai/api/plan/script/proto/script_pb2.py +53 -0
  12. sapiopycommons/ai/api/plan/script/proto/script_pb2.pyi +99 -0
  13. sapiopycommons/ai/api/plan/script/proto/script_pb2_grpc.py +153 -0
  14. sapiopycommons/ai/api/plan/tool/proto/entry_pb2.py +57 -0
  15. sapiopycommons/ai/api/plan/tool/proto/entry_pb2.pyi +96 -0
  16. sapiopycommons/ai/api/plan/tool/proto/entry_pb2_grpc.py +24 -0
  17. sapiopycommons/ai/api/plan/tool/proto/tool_pb2.py +73 -0
  18. sapiopycommons/ai/api/plan/tool/proto/tool_pb2.pyi +242 -0
  19. sapiopycommons/ai/api/plan/tool/proto/tool_pb2_grpc.py +154 -0
  20. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.py +39 -0
  21. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.pyi +32 -0
  22. sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2_grpc.py +24 -0
  23. sapiopycommons/ai/tool_of_tools.py +917 -0
  24. sapiopycommons/ai/tool_service_base.py +271 -0
  25. sapiopycommons/callbacks/callback_util.py +64 -116
  26. sapiopycommons/callbacks/field_builder.py +0 -2
  27. sapiopycommons/customreport/auto_pagers.py +1 -2
  28. sapiopycommons/customreport/term_builder.py +1 -1
  29. sapiopycommons/datatype/pseudo_data_types.py +326 -349
  30. sapiopycommons/eln/experiment_handler.py +719 -336
  31. sapiopycommons/eln/plate_designer.py +2 -7
  32. sapiopycommons/files/file_util.py +4 -4
  33. sapiopycommons/general/accession_service.py +2 -2
  34. sapiopycommons/general/aliases.py +1 -4
  35. sapiopycommons/general/html_formatter.py +456 -0
  36. sapiopycommons/general/sapio_links.py +12 -4
  37. sapiopycommons/processtracking/custom_workflow_handler.py +1 -2
  38. sapiopycommons/recordmodel/record_handler.py +27 -357
  39. sapiopycommons/rules/eln_rule_handler.py +1 -8
  40. sapiopycommons/rules/on_save_rule_handler.py +1 -8
  41. sapiopycommons/webhook/webhook_handlers.py +0 -3
  42. sapiopycommons/webhook/webservice_handlers.py +2 -2
  43. {sapiopycommons-2025.4.17a489.dist-info → sapiopycommons-2025.4.23a491.dist-info}/METADATA +2 -2
  44. sapiopycommons-2025.4.23a491.dist-info/RECORD +88 -0
  45. sapiopycommons/eln/experiment_cache.py +0 -188
  46. sapiopycommons/eln/experiment_step_factory.py +0 -476
  47. sapiopycommons/eln/step_creation.py +0 -236
  48. sapiopycommons/general/data_structure_util.py +0 -115
  49. sapiopycommons-2025.4.17a489.dist-info/RECORD +0 -67
  50. {sapiopycommons-2025.4.17a489.dist-info → sapiopycommons-2025.4.23a491.dist-info}/WHEEL +0 -0
  51. {sapiopycommons-2025.4.17a489.dist-info → sapiopycommons-2025.4.23a491.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,42 @@
1
+ from google.protobuf.internal import containers as _containers
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import message as _message
4
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
5
+
6
+ DESCRIPTOR: _descriptor.FileDescriptor
7
+
8
+ class StepJsonOutputEntry(_message.Message):
9
+ __slots__ = ("entry",)
10
+ ENTRY_FIELD_NUMBER: _ClassVar[int]
11
+ entry: str
12
+ def __init__(self, entry: _Optional[str] = ...) -> None: ...
13
+
14
+ class StepTextOutputEntry(_message.Message):
15
+ __slots__ = ("entry",)
16
+ ENTRY_FIELD_NUMBER: _ClassVar[int]
17
+ entry: str
18
+ def __init__(self, entry: _Optional[str] = ...) -> None: ...
19
+
20
+ class StepCsvOutputEntry(_message.Message):
21
+ __slots__ = ("cells",)
22
+ CELLS_FIELD_NUMBER: _ClassVar[int]
23
+ cells: _containers.RepeatedScalarFieldContainer[str]
24
+ def __init__(self, cells: _Optional[_Iterable[str]] = ...) -> None: ...
25
+
26
+ class StepBinaryOutputEntry(_message.Message):
27
+ __slots__ = ("entry",)
28
+ ENTRY_FIELD_NUMBER: _ClassVar[int]
29
+ entry: bytes
30
+ def __init__(self, entry: _Optional[bytes] = ...) -> None: ...
31
+
32
+ class StepOutputEntry(_message.Message):
33
+ __slots__ = ("json_output", "text_output", "csv_output", "binary_output")
34
+ JSON_OUTPUT_FIELD_NUMBER: _ClassVar[int]
35
+ TEXT_OUTPUT_FIELD_NUMBER: _ClassVar[int]
36
+ CSV_OUTPUT_FIELD_NUMBER: _ClassVar[int]
37
+ BINARY_OUTPUT_FIELD_NUMBER: _ClassVar[int]
38
+ json_output: StepJsonOutputEntry
39
+ text_output: StepTextOutputEntry
40
+ csv_output: StepCsvOutputEntry
41
+ binary_output: StepBinaryOutputEntry
42
+ def __init__(self, json_output: _Optional[_Union[StepJsonOutputEntry, _Mapping]] = ..., text_output: _Optional[_Union[StepTextOutputEntry, _Mapping]] = ..., csv_output: _Optional[_Union[StepCsvOutputEntry, _Mapping]] = ..., binary_output: _Optional[_Union[StepBinaryOutputEntry, _Mapping]] = ...) -> None: ...
@@ -0,0 +1,24 @@
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/plan/proto/step_output_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
+ )
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: sapiopycommons/ai/api/plan/proto/step.proto
5
+ # Protobuf Python Version: 5.29.0
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'sapiopycommons/ai/api/plan/proto/step.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#sapiopycommons/ai/api/plan/proto/step.proto\"K\n\nStepIoInfo\x12\x16\n\x0estep_io_number\x18\x01 \x01(\x05\x12\x14\n\x0c\x63ontent_type\x18\x02 \x01(\t\x12\x0f\n\x07io_name\x18\x03 \x01(\t\"l\n\rStepIoDetails\x12!\n\x0cstep_io_info\x18\x01 \x01(\x0b\x32\x0b.StepIoInfo\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0f\n\x07\x65xample\x18\x03 \x01(\t\x12\x12\n\nvalidation\x18\x04 \x01(\t\"j\n\x10StepInputDetails\x12\'\n\x0fstep_io_details\x18\x01 \x01(\x0b\x32\x0e.StepIoDetails\x12\x18\n\x10paging_supported\x18\x02 \x01(\x08\x12\x13\n\x0bmax_entries\x18\x03 \x01(\x05\"<\n\x11StepOutputDetails\x12\'\n\x0fstep_io_details\x18\x01 \x01(\x0b\x32\x0e.StepIoDetailsB\x1c\n\x18\x63om.velox.api.plan.protoP\x01\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sapiopycommons.ai.api.plan.proto.step_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ _globals['DESCRIPTOR']._loaded_options = None
34
+ _globals['DESCRIPTOR']._serialized_options = b'\n\030sapiopycommons.ai.api.plan.protoP\001'
35
+ _globals['_STEPIOINFO']._serialized_start=39
36
+ _globals['_STEPIOINFO']._serialized_end=114
37
+ _globals['_STEPIODETAILS']._serialized_start=116
38
+ _globals['_STEPIODETAILS']._serialized_end=224
39
+ _globals['_STEPINPUTDETAILS']._serialized_start=226
40
+ _globals['_STEPINPUTDETAILS']._serialized_end=332
41
+ _globals['_STEPOUTPUTDETAILS']._serialized_start=334
42
+ _globals['_STEPOUTPUTDETAILS']._serialized_end=394
43
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,43 @@
1
+ from google.protobuf import descriptor as _descriptor
2
+ from google.protobuf import message as _message
3
+ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
4
+
5
+ DESCRIPTOR: _descriptor.FileDescriptor
6
+
7
+ class StepIoInfo(_message.Message):
8
+ __slots__ = ("step_io_number", "content_type", "io_name")
9
+ STEP_IO_NUMBER_FIELD_NUMBER: _ClassVar[int]
10
+ CONTENT_TYPE_FIELD_NUMBER: _ClassVar[int]
11
+ IO_NAME_FIELD_NUMBER: _ClassVar[int]
12
+ step_io_number: int
13
+ content_type: str
14
+ io_name: str
15
+ def __init__(self, step_io_number: _Optional[int] = ..., content_type: _Optional[str] = ..., io_name: _Optional[str] = ...) -> None: ...
16
+
17
+ class StepIoDetails(_message.Message):
18
+ __slots__ = ("step_io_info", "description", "example", "validation")
19
+ STEP_IO_INFO_FIELD_NUMBER: _ClassVar[int]
20
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
21
+ EXAMPLE_FIELD_NUMBER: _ClassVar[int]
22
+ VALIDATION_FIELD_NUMBER: _ClassVar[int]
23
+ step_io_info: StepIoInfo
24
+ description: str
25
+ example: str
26
+ validation: str
27
+ def __init__(self, step_io_info: _Optional[_Union[StepIoInfo, _Mapping]] = ..., description: _Optional[str] = ..., example: _Optional[str] = ..., validation: _Optional[str] = ...) -> None: ...
28
+
29
+ class StepInputDetails(_message.Message):
30
+ __slots__ = ("step_io_details", "paging_supported", "max_entries")
31
+ STEP_IO_DETAILS_FIELD_NUMBER: _ClassVar[int]
32
+ PAGING_SUPPORTED_FIELD_NUMBER: _ClassVar[int]
33
+ MAX_ENTRIES_FIELD_NUMBER: _ClassVar[int]
34
+ step_io_details: StepIoDetails
35
+ paging_supported: bool
36
+ max_entries: int
37
+ def __init__(self, step_io_details: _Optional[_Union[StepIoDetails, _Mapping]] = ..., paging_supported: bool = ..., max_entries: _Optional[int] = ...) -> None: ...
38
+
39
+ class StepOutputDetails(_message.Message):
40
+ __slots__ = ("step_io_details",)
41
+ STEP_IO_DETAILS_FIELD_NUMBER: _ClassVar[int]
42
+ step_io_details: StepIoDetails
43
+ def __init__(self, step_io_details: _Optional[_Union[StepIoDetails, _Mapping]] = ...) -> None: ...
@@ -0,0 +1,24 @@
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/plan/proto/step_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
+ )
@@ -0,0 +1,53 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: sapiopycommons/ai/api/plan/script/proto/script.proto
5
+ # Protobuf Python Version: 5.29.0
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'sapiopycommons/ai/api/plan/script/proto/script.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from sapiopycommons.ai.api.plan.tool.proto import entry_pb2 as com_dot_velox_dot_api_dot_plan_dot_tool_dot_proto_dot_entry__pb2
26
+ from sapiopycommons.ai.api.plan.proto import step_pb2 as com_dot_velox_dot_api_dot_plan_dot_proto_dot_step__pb2
27
+ from sapiopycommons.ai.api.session.proto import sapio_conn_info_pb2 as com_dot_velox_dot_api_dot_session_dot_proto_dot_sapio__conn__info__pb2
28
+
29
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import *
30
+ from sapiopycommons.ai.api.plan.proto.step_pb2 import *
31
+ from sapiopycommons.ai.api.session.proto.sapio_conn_info_pb2 import *
32
+
33
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,sapiopycommons/ai/api/plan/script/proto/script.proto\x1a)sapiopycommons/ai/api/plan/tool/proto/entry.proto\x1a#sapiopycommons/ai/api/plan/proto/step.proto\x1a\x31\x63om/velox/api/session/proto/sapio_conn_info.proto\"\xf0\x02\n\x16\x43reateScriptJobRequest\x12(\n\nsapio_user\x18\x01 \x01(\x0b\x32\x14.SapioConnectionInfo\x12\x17\n\x0fscript_language\x18\x02 \x01(\t\x12\x18\n\x10plan_instance_id\x18\x03 \x01(\x03\x12\x18\n\x10step_instance_id\x18\x04 \x01(\x03\x12\x15\n\rinvocation_id\x18\x05 \x01(\x03\x12\"\n\rinput_configs\x18\x06 \x03(\x0b\x32\x0b.StepIoInfo\x12#\n\x0eoutput_configs\x18\x07 \x03(\x0b\x32\x0b.StepIoInfo\x12\x0f\n\x06script\x18\x80\x08 \x01(\t\x12\x10\n\x07timeout\x18\x81\x08 \x01(\x05\x12\x16\n\rmax_memory_mb\x18\x82\x08 \x01(\x05\x12\x1a\n\x11working_directory\x18\x83\x08 \x01(\t\x12(\n\nentry_data\x18\xff\x0f \x03(\x0b\x32\x13.StepEntryInputData\")\n\x17\x43reateScriptJobResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\t\"3\n\rGetJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x12\n\nlog_offset\x18\x02 \x01(\x05\"w\n\x0eGetJobResponse\x12\x1a\n\x06status\x18\x01 \x01(\x0e\x32\n.JobStatus\x12\x0b\n\x03log\x18\x02 \x01(\t\x12\x11\n\texception\x18\x03 \x01(\t\x12)\n\nentry_data\x18\xff\x0f \x03(\x0b\x32\x14.StepEntryOutputData*@\n\tJobStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x32\x80\x01\n\rScriptService\x12\x44\n\x0f\x43reateScriptJob\x12\x17.CreateScriptJobRequest\x1a\x18.CreateScriptJobResponse\x12)\n\x06GetJob\x12\x0e.GetJobRequest\x1a\x0f.GetJobResponseB!\n\x1f\x63om.velox.api.plan.script.protoP\x00P\x01P\x02\x62\x06proto3')
34
+
35
+ _globals = globals()
36
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
37
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sapiopycommons.ai.api.plan.script.proto.script_pb2', _globals)
38
+ if not _descriptor._USE_C_DESCRIPTORS:
39
+ _globals['DESCRIPTOR']._loaded_options = None
40
+ _globals['DESCRIPTOR']._serialized_options = b'\n\037sapiopycommons.ai.api.plan.script.proto'
41
+ _globals['_JOBSTATUS']._serialized_start=767
42
+ _globals['_JOBSTATUS']._serialized_end=831
43
+ _globals['_CREATESCRIPTJOBREQUEST']._serialized_start=180
44
+ _globals['_CREATESCRIPTJOBREQUEST']._serialized_end=548
45
+ _globals['_CREATESCRIPTJOBRESPONSE']._serialized_start=550
46
+ _globals['_CREATESCRIPTJOBRESPONSE']._serialized_end=591
47
+ _globals['_GETJOBREQUEST']._serialized_start=593
48
+ _globals['_GETJOBREQUEST']._serialized_end=644
49
+ _globals['_GETJOBRESPONSE']._serialized_start=646
50
+ _globals['_GETJOBRESPONSE']._serialized_end=765
51
+ _globals['_SCRIPTSERVICE']._serialized_start=834
52
+ _globals['_SCRIPTSERVICE']._serialized_end=962
53
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,99 @@
1
+ from sapiopycommons.ai.api.plan.tool.proto import entry_pb2 as _entry_pb2
2
+ from sapiopycommons.ai.api.plan.proto import step_pb2 as _step_pb2
3
+ from sapiopycommons.ai.api.session.proto import sapio_conn_info_pb2 as _sapio_conn_info_pb2
4
+ from google.protobuf.internal import containers as _containers
5
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import message as _message
8
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
9
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepCsvHeaderRow as StepCsvHeaderRow
10
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepCsvRow as StepCsvRow
11
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepCsvData as StepCsvData
12
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepJsonData as StepJsonData
13
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepTextData as StepTextData
14
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepBinaryData as StepBinaryData
15
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepImageData as StepImageData
16
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepEntryData as StepEntryData
17
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepEntryInputData as StepEntryInputData
18
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import StepEntryOutputData as StepEntryOutputData
19
+ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import DataType as DataType
20
+ from sapiopycommons.ai.api.plan.proto.step_pb2 import StepIoInfo as StepIoInfo
21
+ from sapiopycommons.ai.api.plan.proto.step_pb2 import StepIoDetails as StepIoDetails
22
+ from sapiopycommons.ai.api.plan.proto.step_pb2 import StepInputDetails as StepInputDetails
23
+ from sapiopycommons.ai.api.plan.proto.step_pb2 import StepOutputDetails as StepOutputDetails
24
+ from sapiopycommons.ai.api.session.proto.sapio_conn_info_pb2 import SapioConnectionInfo as SapioConnectionInfo
25
+ from sapiopycommons.ai.api.session.proto.sapio_conn_info_pb2 import SapioUserSecretType as SapioUserSecretType
26
+
27
+ DESCRIPTOR: _descriptor.FileDescriptor
28
+ BINARY: _entry_pb2.DataType
29
+ JSON: _entry_pb2.DataType
30
+ CSV: _entry_pb2.DataType
31
+ TEXT: _entry_pb2.DataType
32
+ IMAGE: _entry_pb2.DataType
33
+ SESSION_TOKEN: _sapio_conn_info_pb2.SapioUserSecretType
34
+ PASSWORD: _sapio_conn_info_pb2.SapioUserSecretType
35
+
36
+ class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
37
+ __slots__ = ()
38
+ PENDING: _ClassVar[JobStatus]
39
+ RUNNING: _ClassVar[JobStatus]
40
+ COMPLETED: _ClassVar[JobStatus]
41
+ FAILED: _ClassVar[JobStatus]
42
+ PENDING: JobStatus
43
+ RUNNING: JobStatus
44
+ COMPLETED: JobStatus
45
+ FAILED: JobStatus
46
+
47
+ class CreateScriptJobRequest(_message.Message):
48
+ __slots__ = ("sapio_user", "script_language", "plan_instance_id", "step_instance_id", "invocation_id", "input_configs", "output_configs", "script", "timeout", "max_memory_mb", "working_directory", "entry_data")
49
+ SAPIO_USER_FIELD_NUMBER: _ClassVar[int]
50
+ SCRIPT_LANGUAGE_FIELD_NUMBER: _ClassVar[int]
51
+ PLAN_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
52
+ STEP_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
53
+ INVOCATION_ID_FIELD_NUMBER: _ClassVar[int]
54
+ INPUT_CONFIGS_FIELD_NUMBER: _ClassVar[int]
55
+ OUTPUT_CONFIGS_FIELD_NUMBER: _ClassVar[int]
56
+ SCRIPT_FIELD_NUMBER: _ClassVar[int]
57
+ TIMEOUT_FIELD_NUMBER: _ClassVar[int]
58
+ MAX_MEMORY_MB_FIELD_NUMBER: _ClassVar[int]
59
+ WORKING_DIRECTORY_FIELD_NUMBER: _ClassVar[int]
60
+ ENTRY_DATA_FIELD_NUMBER: _ClassVar[int]
61
+ sapio_user: _sapio_conn_info_pb2.SapioConnectionInfo
62
+ script_language: str
63
+ plan_instance_id: int
64
+ step_instance_id: int
65
+ invocation_id: int
66
+ input_configs: _containers.RepeatedCompositeFieldContainer[_step_pb2.StepIoInfo]
67
+ output_configs: _containers.RepeatedCompositeFieldContainer[_step_pb2.StepIoInfo]
68
+ script: str
69
+ timeout: int
70
+ max_memory_mb: int
71
+ working_directory: str
72
+ entry_data: _containers.RepeatedCompositeFieldContainer[_entry_pb2.StepEntryInputData]
73
+ def __init__(self, sapio_user: _Optional[_Union[_sapio_conn_info_pb2.SapioConnectionInfo, _Mapping]] = ..., script_language: _Optional[str] = ..., plan_instance_id: _Optional[int] = ..., step_instance_id: _Optional[int] = ..., invocation_id: _Optional[int] = ..., input_configs: _Optional[_Iterable[_Union[_step_pb2.StepIoInfo, _Mapping]]] = ..., output_configs: _Optional[_Iterable[_Union[_step_pb2.StepIoInfo, _Mapping]]] = ..., script: _Optional[str] = ..., timeout: _Optional[int] = ..., max_memory_mb: _Optional[int] = ..., working_directory: _Optional[str] = ..., entry_data: _Optional[_Iterable[_Union[_entry_pb2.StepEntryInputData, _Mapping]]] = ...) -> None: ...
74
+
75
+ class CreateScriptJobResponse(_message.Message):
76
+ __slots__ = ("job_id",)
77
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
78
+ job_id: str
79
+ def __init__(self, job_id: _Optional[str] = ...) -> None: ...
80
+
81
+ class GetJobRequest(_message.Message):
82
+ __slots__ = ("job_id", "log_offset")
83
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
84
+ LOG_OFFSET_FIELD_NUMBER: _ClassVar[int]
85
+ job_id: str
86
+ log_offset: int
87
+ def __init__(self, job_id: _Optional[str] = ..., log_offset: _Optional[int] = ...) -> None: ...
88
+
89
+ class GetJobResponse(_message.Message):
90
+ __slots__ = ("status", "log", "exception", "entry_data")
91
+ STATUS_FIELD_NUMBER: _ClassVar[int]
92
+ LOG_FIELD_NUMBER: _ClassVar[int]
93
+ EXCEPTION_FIELD_NUMBER: _ClassVar[int]
94
+ ENTRY_DATA_FIELD_NUMBER: _ClassVar[int]
95
+ status: JobStatus
96
+ log: str
97
+ exception: str
98
+ entry_data: _containers.RepeatedCompositeFieldContainer[_entry_pb2.StepEntryOutputData]
99
+ def __init__(self, status: _Optional[_Union[JobStatus, str]] = ..., log: _Optional[str] = ..., exception: _Optional[str] = ..., entry_data: _Optional[_Iterable[_Union[_entry_pb2.StepEntryOutputData, _Mapping]]] = ...) -> None: ...
@@ -0,0 +1,153 @@
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
+ from sapiopycommons.ai.api.plan.script.proto import script_pb2 as com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2
7
+
8
+ GRPC_GENERATED_VERSION = '1.70.0'
9
+ GRPC_VERSION = grpc.__version__
10
+ _version_not_supported = False
11
+
12
+ try:
13
+ from grpc._utilities import first_version_is_lower
14
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
15
+ except ImportError:
16
+ _version_not_supported = True
17
+
18
+ if _version_not_supported:
19
+ raise RuntimeError(
20
+ f'The grpc package installed is at version {GRPC_VERSION},'
21
+ + f' but the generated code in sapiopycommons/ai/api/plan/script/proto/script_pb2_grpc.py depends on'
22
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
23
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
24
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
25
+ )
26
+
27
+
28
+ class ScriptServiceStub(object):
29
+ """
30
+ This is the generic service interface that all tools must implement. We will use hostname routing to route the request to the correct tool.
31
+ The other option is for us to use gRPC metadata to route the request to the correct tool. We don't want to expose a bunch of ports and that's
32
+ a pain to manage. So we will use hostname routing for now.
33
+ """
34
+
35
+ def __init__(self, channel):
36
+ """Constructor.
37
+
38
+ Args:
39
+ channel: A grpc.Channel.
40
+ """
41
+ self.CreateScriptJob = channel.unary_unary(
42
+ '/ScriptService/CreateScriptJob',
43
+ request_serializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobRequest.SerializeToString,
44
+ response_deserializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobResponse.FromString,
45
+ _registered_method=True)
46
+ self.GetJob = channel.unary_unary(
47
+ '/ScriptService/GetJob',
48
+ request_serializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobRequest.SerializeToString,
49
+ response_deserializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobResponse.FromString,
50
+ _registered_method=True)
51
+
52
+
53
+ class ScriptServiceServicer(object):
54
+ """
55
+ This is the generic service interface that all tools must implement. We will use hostname routing to route the request to the correct tool.
56
+ The other option is for us to use gRPC metadata to route the request to the correct tool. We don't want to expose a bunch of ports and that's
57
+ a pain to manage. So we will use hostname routing for now.
58
+ """
59
+
60
+ def CreateScriptJob(self, request, context):
61
+ """The main entry point for script
62
+ """
63
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
64
+ context.set_details('Method not implemented!')
65
+ raise NotImplementedError('Method not implemented!')
66
+
67
+ def GetJob(self, request, context):
68
+ """Missing associated documentation comment in .proto file."""
69
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
70
+ context.set_details('Method not implemented!')
71
+ raise NotImplementedError('Method not implemented!')
72
+
73
+
74
+ def add_ScriptServiceServicer_to_server(servicer, server):
75
+ rpc_method_handlers = {
76
+ 'CreateScriptJob': grpc.unary_unary_rpc_method_handler(
77
+ servicer.CreateScriptJob,
78
+ request_deserializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobRequest.FromString,
79
+ response_serializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobResponse.SerializeToString,
80
+ ),
81
+ 'GetJob': grpc.unary_unary_rpc_method_handler(
82
+ servicer.GetJob,
83
+ request_deserializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobRequest.FromString,
84
+ response_serializer=com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobResponse.SerializeToString,
85
+ ),
86
+ }
87
+ generic_handler = grpc.method_handlers_generic_handler(
88
+ 'ScriptService', rpc_method_handlers)
89
+ server.add_generic_rpc_handlers((generic_handler,))
90
+ server.add_registered_method_handlers('ScriptService', rpc_method_handlers)
91
+
92
+
93
+ # This class is part of an EXPERIMENTAL API.
94
+ class ScriptService(object):
95
+ """
96
+ This is the generic service interface that all tools must implement. We will use hostname routing to route the request to the correct tool.
97
+ The other option is for us to use gRPC metadata to route the request to the correct tool. We don't want to expose a bunch of ports and that's
98
+ a pain to manage. So we will use hostname routing for now.
99
+ """
100
+
101
+ @staticmethod
102
+ def CreateScriptJob(request,
103
+ target,
104
+ options=(),
105
+ channel_credentials=None,
106
+ call_credentials=None,
107
+ insecure=False,
108
+ compression=None,
109
+ wait_for_ready=None,
110
+ timeout=None,
111
+ metadata=None):
112
+ return grpc.experimental.unary_unary(
113
+ request,
114
+ target,
115
+ '/ScriptService/CreateScriptJob',
116
+ com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobRequest.SerializeToString,
117
+ com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.CreateScriptJobResponse.FromString,
118
+ options,
119
+ channel_credentials,
120
+ insecure,
121
+ call_credentials,
122
+ compression,
123
+ wait_for_ready,
124
+ timeout,
125
+ metadata,
126
+ _registered_method=True)
127
+
128
+ @staticmethod
129
+ def GetJob(request,
130
+ target,
131
+ options=(),
132
+ channel_credentials=None,
133
+ call_credentials=None,
134
+ insecure=False,
135
+ compression=None,
136
+ wait_for_ready=None,
137
+ timeout=None,
138
+ metadata=None):
139
+ return grpc.experimental.unary_unary(
140
+ request,
141
+ target,
142
+ '/ScriptService/GetJob',
143
+ com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobRequest.SerializeToString,
144
+ com_dot_velox_dot_api_dot_plan_dot_script_dot_proto_dot_script__pb2.GetJobResponse.FromString,
145
+ options,
146
+ channel_credentials,
147
+ insecure,
148
+ call_credentials,
149
+ compression,
150
+ wait_for_ready,
151
+ timeout,
152
+ metadata,
153
+ _registered_method=True)
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: sapiopycommons/ai/api/plan/tool/proto/entry.proto
5
+ # Protobuf Python Version: 5.29.0
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'sapiopycommons/ai/api/plan/tool/proto/entry.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)sapiopycommons/ai/api/plan/tool/proto/entry.proto\"!\n\x10StepCsvHeaderRow\x12\r\n\x05\x63\x65lls\x18\x01 \x03(\t\"\x1b\n\nStepCsvRow\x12\r\n\x05\x63\x65lls\x18\x01 \x03(\t\"N\n\x0bStepCsvData\x12!\n\x06header\x18\x0e \x01(\x0b\x32\x11.StepCsvHeaderRow\x12\x1c\n\x07\x65ntries\x18\x0f \x03(\x0b\x32\x0b.StepCsvRow\"\x1f\n\x0cStepJsonData\x12\x0f\n\x07\x65ntries\x18\x0f \x03(\t\"\x1f\n\x0cStepTextData\x12\x0f\n\x07\x65ntries\x18\x0f \x03(\t\"!\n\x0eStepBinaryData\x12\x0f\n\x07\x65ntries\x18\x0f \x03(\x0c\"6\n\rStepImageData\x12\x14\n\x0cimage_format\x18\x01 \x01(\t\x12\x0f\n\x07\x65ntries\x18\x0f \x03(\x0c\"\xf1\x01\n\rStepEntryData\x12\x1b\n\x08\x64\x61taType\x18\x01 \x01(\x0e\x32\t.DataType\x12\'\n\x0b\x62inary_data\x18\xff\x0f \x01(\x0b\x32\x0f.StepBinaryDataH\x00\x12!\n\x08\x63sv_data\x18\xfe\x0f \x01(\x0b\x32\x0c.StepCsvDataH\x00\x12#\n\tjson_data\x18\xfd\x0f \x01(\x0b\x32\r.StepJsonDataH\x00\x12#\n\ttext_data\x18\xfc\x0f \x01(\x0b\x32\r.StepTextDataH\x00\x12%\n\nimage_data\x18\xfb\x0f \x01(\x0b\x32\x0e.StepImageDataH\x00\x42\x06\n\x04\x64\x61ta\"L\n\x12StepEntryInputData\x12\x12\n\nis_partial\x18\x02 \x01(\x08\x12\"\n\nentry_data\x18\x01 \x01(\x0b\x32\x0e.StepEntryData\"9\n\x13StepEntryOutputData\x12\"\n\nentry_data\x18\x01 \x01(\x0b\x32\x0e.StepEntryData*>\n\x08\x44\x61taType\x12\n\n\x06\x42INARY\x10\x00\x12\x08\n\x04JSON\x10\x01\x12\x07\n\x03\x43SV\x10\x02\x12\x08\n\x04TEXT\x10\x03\x12\t\n\x05IMAGE\x10\x04\x42!\n\x1d\x63om.velox.api.plan.tool.protoP\x01\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sapiopycommons.ai.api.plan.tool.proto.entry_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ _globals['DESCRIPTOR']._loaded_options = None
34
+ _globals['DESCRIPTOR']._serialized_options = b'\n\035sapiopycommons.ai.api.plan.tool.protoP\001'
35
+ _globals['_DATATYPE']._serialized_start=727
36
+ _globals['_DATATYPE']._serialized_end=789
37
+ _globals['_STEPCSVHEADERROW']._serialized_start=45
38
+ _globals['_STEPCSVHEADERROW']._serialized_end=78
39
+ _globals['_STEPCSVROW']._serialized_start=80
40
+ _globals['_STEPCSVROW']._serialized_end=107
41
+ _globals['_STEPCSVDATA']._serialized_start=109
42
+ _globals['_STEPCSVDATA']._serialized_end=187
43
+ _globals['_STEPJSONDATA']._serialized_start=189
44
+ _globals['_STEPJSONDATA']._serialized_end=220
45
+ _globals['_STEPTEXTDATA']._serialized_start=222
46
+ _globals['_STEPTEXTDATA']._serialized_end=253
47
+ _globals['_STEPBINARYDATA']._serialized_start=255
48
+ _globals['_STEPBINARYDATA']._serialized_end=288
49
+ _globals['_STEPIMAGEDATA']._serialized_start=290
50
+ _globals['_STEPIMAGEDATA']._serialized_end=344
51
+ _globals['_STEPENTRYDATA']._serialized_start=347
52
+ _globals['_STEPENTRYDATA']._serialized_end=588
53
+ _globals['_STEPENTRYINPUTDATA']._serialized_start=590
54
+ _globals['_STEPENTRYINPUTDATA']._serialized_end=666
55
+ _globals['_STEPENTRYOUTPUTDATA']._serialized_start=668
56
+ _globals['_STEPENTRYOUTPUTDATA']._serialized_end=725
57
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,96 @@
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, Mapping as _Mapping, Optional as _Optional, Union as _Union
6
+
7
+ DESCRIPTOR: _descriptor.FileDescriptor
8
+
9
+ class DataType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
10
+ __slots__ = ()
11
+ BINARY: _ClassVar[DataType]
12
+ JSON: _ClassVar[DataType]
13
+ CSV: _ClassVar[DataType]
14
+ TEXT: _ClassVar[DataType]
15
+ IMAGE: _ClassVar[DataType]
16
+ BINARY: DataType
17
+ JSON: DataType
18
+ CSV: DataType
19
+ TEXT: DataType
20
+ IMAGE: DataType
21
+
22
+ class StepCsvHeaderRow(_message.Message):
23
+ __slots__ = ("cells",)
24
+ CELLS_FIELD_NUMBER: _ClassVar[int]
25
+ cells: _containers.RepeatedScalarFieldContainer[str]
26
+ def __init__(self, cells: _Optional[_Iterable[str]] = ...) -> None: ...
27
+
28
+ class StepCsvRow(_message.Message):
29
+ __slots__ = ("cells",)
30
+ CELLS_FIELD_NUMBER: _ClassVar[int]
31
+ cells: _containers.RepeatedScalarFieldContainer[str]
32
+ def __init__(self, cells: _Optional[_Iterable[str]] = ...) -> None: ...
33
+
34
+ class StepCsvData(_message.Message):
35
+ __slots__ = ("header", "entries")
36
+ HEADER_FIELD_NUMBER: _ClassVar[int]
37
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
38
+ header: StepCsvHeaderRow
39
+ entries: _containers.RepeatedCompositeFieldContainer[StepCsvRow]
40
+ def __init__(self, header: _Optional[_Union[StepCsvHeaderRow, _Mapping]] = ..., entries: _Optional[_Iterable[_Union[StepCsvRow, _Mapping]]] = ...) -> None: ...
41
+
42
+ class StepJsonData(_message.Message):
43
+ __slots__ = ("entries",)
44
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
45
+ entries: _containers.RepeatedScalarFieldContainer[str]
46
+ def __init__(self, entries: _Optional[_Iterable[str]] = ...) -> None: ...
47
+
48
+ class StepTextData(_message.Message):
49
+ __slots__ = ("entries",)
50
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
51
+ entries: _containers.RepeatedScalarFieldContainer[str]
52
+ def __init__(self, entries: _Optional[_Iterable[str]] = ...) -> None: ...
53
+
54
+ class StepBinaryData(_message.Message):
55
+ __slots__ = ("entries",)
56
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
57
+ entries: _containers.RepeatedScalarFieldContainer[bytes]
58
+ def __init__(self, entries: _Optional[_Iterable[bytes]] = ...) -> None: ...
59
+
60
+ class StepImageData(_message.Message):
61
+ __slots__ = ("image_format", "entries")
62
+ IMAGE_FORMAT_FIELD_NUMBER: _ClassVar[int]
63
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
64
+ image_format: str
65
+ entries: _containers.RepeatedScalarFieldContainer[bytes]
66
+ def __init__(self, image_format: _Optional[str] = ..., entries: _Optional[_Iterable[bytes]] = ...) -> None: ...
67
+
68
+ class StepEntryData(_message.Message):
69
+ __slots__ = ("dataType", "binary_data", "csv_data", "json_data", "text_data", "image_data")
70
+ DATATYPE_FIELD_NUMBER: _ClassVar[int]
71
+ BINARY_DATA_FIELD_NUMBER: _ClassVar[int]
72
+ CSV_DATA_FIELD_NUMBER: _ClassVar[int]
73
+ JSON_DATA_FIELD_NUMBER: _ClassVar[int]
74
+ TEXT_DATA_FIELD_NUMBER: _ClassVar[int]
75
+ IMAGE_DATA_FIELD_NUMBER: _ClassVar[int]
76
+ dataType: DataType
77
+ binary_data: StepBinaryData
78
+ csv_data: StepCsvData
79
+ json_data: StepJsonData
80
+ text_data: StepTextData
81
+ image_data: StepImageData
82
+ def __init__(self, dataType: _Optional[_Union[DataType, str]] = ..., binary_data: _Optional[_Union[StepBinaryData, _Mapping]] = ..., csv_data: _Optional[_Union[StepCsvData, _Mapping]] = ..., json_data: _Optional[_Union[StepJsonData, _Mapping]] = ..., text_data: _Optional[_Union[StepTextData, _Mapping]] = ..., image_data: _Optional[_Union[StepImageData, _Mapping]] = ...) -> None: ...
83
+
84
+ class StepEntryInputData(_message.Message):
85
+ __slots__ = ("is_partial", "entry_data")
86
+ IS_PARTIAL_FIELD_NUMBER: _ClassVar[int]
87
+ ENTRY_DATA_FIELD_NUMBER: _ClassVar[int]
88
+ is_partial: bool
89
+ entry_data: StepEntryData
90
+ def __init__(self, is_partial: bool = ..., entry_data: _Optional[_Union[StepEntryData, _Mapping]] = ...) -> None: ...
91
+
92
+ class StepEntryOutputData(_message.Message):
93
+ __slots__ = ("entry_data",)
94
+ ENTRY_DATA_FIELD_NUMBER: _ClassVar[int]
95
+ entry_data: StepEntryData
96
+ def __init__(self, entry_data: _Optional[_Union[StepEntryData, _Mapping]] = ...) -> None: ...