oalib-at-runner 0.3.0__tar.gz

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.
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: oalib-at-runner
3
+ Version: 0.3.0
4
+ Summary: Python client library for the AT Runner gRPC service
5
+ License-Expression: GPL-3.0-only
6
+ Project-URL: Homepage, https://github.com/jgebbie/at-runner
7
+ Project-URL: Repository, https://github.com/jgebbie/at-runner
8
+ Project-URL: Issues, https://github.com/jgebbie/at-runner/issues
9
+ Keywords: acoustics,acoustics-toolbox,bellhop,grpc,oalib
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Topic :: Scientific/Engineering
15
+ Requires-Python: >=3.12
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: grpcio>=1.80
18
+ Requires-Dist: protobuf>=6.31.1
19
+ Provides-Extra: dev
20
+ Requires-Dist: grpcio-tools>=1.80; extra == "dev"
21
+ Requires-Dist: pytest>=8; extra == "dev"
22
+
23
+ # oalib-at-runner
24
+
25
+ `oalib-at-runner` is the Python client distribution for
26
+ [AT Runner](https://github.com/jgebbie/at-runner), a gRPC service that runs
27
+ Acoustics Toolbox models such as BELLHOP, KRAKEN, SCOOTER, and SPARC.
28
+
29
+ The PyPI distribution installs the import package `at_runner`:
30
+
31
+ ```bash
32
+ python -m pip install oalib-at-runner
33
+ ```
34
+
35
+ ```python
36
+ from at_runner import ATSession
37
+
38
+ with ATSession("localhost:50051") as session:
39
+ session.upload("MunkK.env", b"...")
40
+ result = session.run("kraken", "MunkK")
41
+ ```
42
+
43
+ The client expects an AT Runner service to be available. The service image is
44
+ published as `ghcr.io/jgebbie/at-runner`.
@@ -0,0 +1,22 @@
1
+ # oalib-at-runner
2
+
3
+ `oalib-at-runner` is the Python client distribution for
4
+ [AT Runner](https://github.com/jgebbie/at-runner), a gRPC service that runs
5
+ Acoustics Toolbox models such as BELLHOP, KRAKEN, SCOOTER, and SPARC.
6
+
7
+ The PyPI distribution installs the import package `at_runner`:
8
+
9
+ ```bash
10
+ python -m pip install oalib-at-runner
11
+ ```
12
+
13
+ ```python
14
+ from at_runner import ATSession
15
+
16
+ with ATSession("localhost:50051") as session:
17
+ session.upload("MunkK.env", b"...")
18
+ result = session.run("kraken", "MunkK")
19
+ ```
20
+
21
+ The client expects an AT Runner service to be available. The service image is
22
+ published as `ghcr.io/jgebbie/at-runner`.
@@ -0,0 +1,37 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "grpcio-tools>=1.62"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "oalib-at-runner"
7
+ version = "0.3.0"
8
+ description = "Python client library for the AT Runner gRPC service"
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = "GPL-3.0-only"
12
+ keywords = ["acoustics", "acoustics-toolbox", "bellhop", "grpc", "oalib"]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Intended Audience :: Science/Research",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Topic :: Scientific/Engineering",
19
+ ]
20
+ dependencies = [
21
+ "grpcio>=1.80",
22
+ "protobuf>=6.31.1",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ dev = [
27
+ "grpcio-tools>=1.80",
28
+ "pytest>=8",
29
+ ]
30
+
31
+ [tool.setuptools.packages.find]
32
+ where = ["src"]
33
+
34
+ [project.urls]
35
+ Homepage = "https://github.com/jgebbie/at-runner"
36
+ Repository = "https://github.com/jgebbie/at-runner"
37
+ Issues = "https://github.com/jgebbie/at-runner/issues"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,11 @@
1
+ from at_runner.session import ATSession, RunResult, PipelineResult, StepResult, Step
2
+ from at_runner.session import run_sync
3
+
4
+ __all__ = [
5
+ "ATSession",
6
+ "RunResult",
7
+ "PipelineResult",
8
+ "StepResult",
9
+ "Step",
10
+ "run_sync",
11
+ ]
@@ -0,0 +1,84 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: at/runner/v1/runner.proto
5
+ # Protobuf Python Version: 6.31.1
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
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'at/runner/v1/runner.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\x19\x61t/runner/v1/runner.proto\x12\x0c\x61t.runner.v1\"%\n\x04\x46ile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"\'\n\tFileChunk\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\",\n\x08\x46ileInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\x04\"G\n\x0bOutputChunk\x12*\n\x06stream\x18\x01 \x01(\x0e\x32\x1a.at.runner.v1.OutputStream\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\".\n\nRunStarted\x12\r\n\x05model\x18\x01 \x01(\t\x12\x11\n\tfile_root\x18\x02 \x01(\t\"\x91\x01\n\x0cRunCompleted\x12\'\n\x06status\x18\x01 \x01(\x0e\x32\x17.at.runner.v1.RunStatus\x12\x11\n\texit_code\x18\x02 \x01(\x05\x12\x17\n\x0f\x65lapsed_seconds\x18\x03 \x01(\x01\x12,\n\x0coutput_files\x18\x04 \x03(\x0b\x32\x16.at.runner.v1.FileInfo\"\x88\x01\n\x0eRunSyncRequest\x12\r\n\x05model\x18\x01 \x01(\t\x12\x11\n\tfile_root\x18\x02 \x01(\t\x12\"\n\x06inputs\x18\x03 \x03(\x0b\x32\x12.at.runner.v1.File\x12\x1c\n\x0ftimeout_seconds\x18\x04 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_timeout_seconds\"\xab\x01\n\x0fRunSyncResponse\x12\'\n\x06status\x18\x01 \x01(\x0e\x32\x17.at.runner.v1.RunStatus\x12\x11\n\texit_code\x18\x02 \x01(\x05\x12\x0e\n\x06stdout\x18\x03 \x01(\x0c\x12\x0e\n\x06stderr\x18\x04 \x01(\x0c\x12\x17\n\x0f\x65lapsed_seconds\x18\x05 \x01(\x01\x12#\n\x07outputs\x18\x06 \x03(\x0b\x32\x12.at.runner.v1.File\"2\n\x0eUploadResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\x04\"\x1e\n\x0eGetFileRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"!\n\x11\x44\x65leteFileRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteFileResponse\"\x12\n\x10ListFilesRequest\":\n\x11ListFilesResponse\x12%\n\x05\x66iles\x18\x01 \x03(\x0b\x32\x16.at.runner.v1.FileInfo\"`\n\nRunRequest\x12\r\n\x05model\x18\x01 \x01(\t\x12\x11\n\tfile_root\x18\x02 \x01(\t\x12\x1c\n\x0ftimeout_seconds\x18\x03 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_timeout_seconds\"\xca\x01\n\tRunOutput\x12+\n\x07started\x18\x01 \x01(\x0b\x32\x18.at.runner.v1.RunStartedH\x00\x12+\n\x06output\x18\x02 \x01(\x0b\x32\x19.at.runner.v1.OutputChunkH\x00\x12/\n\tcompleted\x18\x03 \x01(\x0b\x32\x1a.at.runner.v1.RunCompletedH\x00\x12\'\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x17.at.runner.v1.FileChunkH\x00\x42\t\n\x07payload\"q\n\x12RunPipelineRequest\x12)\n\x05steps\x18\x01 \x03(\x0b\x32\x1a.at.runner.v1.PipelineStep\x12\x1c\n\x0ftimeout_seconds\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_timeout_seconds\"\xa6\x01\n\x0cPipelineStep\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12\x11\n\tfile_root\x18\x03 \x01(\t\x12\"\n\x06inputs\x18\x04 \x03(\x0b\x32\x12.at.runner.v1.File\x12\x12\n\ndepends_on\x18\x05 \x03(\t\x12\x1c\n\x0ftimeout_seconds\x18\x06 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_timeout_seconds\"\xbe\x01\n\x0ePipelineOutput\x12\x39\n\x10pipeline_started\x18\x01 \x01(\x0b\x32\x1d.at.runner.v1.PipelineStartedH\x00\x12\'\n\x04step\x18\x02 \x01(\x0b\x32\x17.at.runner.v1.StepEventH\x00\x12=\n\x12pipeline_completed\x18\x03 \x01(\x0b\x32\x1f.at.runner.v1.PipelineCompletedH\x00\x42\t\n\x07payload\"#\n\x0fPipelineStarted\x12\x10\n\x08step_ids\x18\x01 \x03(\t\"\xda\x01\n\tStepEvent\x12\x0f\n\x07step_id\x18\x01 \x01(\t\x12+\n\x07started\x18\x02 \x01(\x0b\x32\x18.at.runner.v1.RunStartedH\x00\x12+\n\x06output\x18\x03 \x01(\x0b\x32\x19.at.runner.v1.OutputChunkH\x00\x12/\n\tcompleted\x18\x04 \x01(\x0b\x32\x1a.at.runner.v1.RunCompletedH\x00\x12\'\n\x04\x66ile\x18\x05 \x01(\x0b\x32\x17.at.runner.v1.FileChunkH\x00\x42\x08\n\x06\x64\x65tail\"Z\n\x11PipelineCompleted\x12\x15\n\rall_succeeded\x18\x01 \x01(\x08\x12\x17\n\x0f\x65lapsed_seconds\x18\x02 \x01(\x01\x12\x15\n\rskipped_steps\x18\x03 \x03(\t*a\n\x0cOutputStream\x12\x1d\n\x19OUTPUT_STREAM_UNSPECIFIED\x10\x00\x12\x18\n\x14OUTPUT_STREAM_STDOUT\x10\x01\x12\x18\n\x14OUTPUT_STREAM_STDERR\x10\x02*\x8c\x01\n\tRunStatus\x12\x1a\n\x16RUN_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14RUN_STATUS_COMPLETED\x10\x01\x12\x18\n\x14RUN_STATUS_TIMED_OUT\x10\x02\x12\x17\n\x13RUN_STATUS_SIGNALED\x10\x03\x12\x16\n\x12RUN_STATUS_SKIPPED\x10\x04\x32\x87\x04\n\x06Runner\x12\x46\n\x07RunSync\x12\x1c.at.runner.v1.RunSyncRequest\x1a\x1d.at.runner.v1.RunSyncResponse\x12\x45\n\nUploadFile\x12\x17.at.runner.v1.FileChunk\x1a\x1c.at.runner.v1.UploadResponse(\x01\x12\x42\n\x07GetFile\x12\x1c.at.runner.v1.GetFileRequest\x1a\x17.at.runner.v1.FileChunk0\x01\x12O\n\nDeleteFile\x12\x1f.at.runner.v1.DeleteFileRequest\x1a .at.runner.v1.DeleteFileResponse\x12L\n\tListFiles\x12\x1e.at.runner.v1.ListFilesRequest\x1a\x1f.at.runner.v1.ListFilesResponse\x12:\n\x03Run\x12\x18.at.runner.v1.RunRequest\x1a\x17.at.runner.v1.RunOutput0\x01\x12O\n\x0bRunPipeline\x12 .at.runner.v1.RunPipelineRequest\x1a\x1c.at.runner.v1.PipelineOutput0\x01\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'at.runner.v1.runner_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_OUTPUTSTREAM']._serialized_start=2102
35
+ _globals['_OUTPUTSTREAM']._serialized_end=2199
36
+ _globals['_RUNSTATUS']._serialized_start=2202
37
+ _globals['_RUNSTATUS']._serialized_end=2342
38
+ _globals['_FILE']._serialized_start=43
39
+ _globals['_FILE']._serialized_end=80
40
+ _globals['_FILECHUNK']._serialized_start=82
41
+ _globals['_FILECHUNK']._serialized_end=121
42
+ _globals['_FILEINFO']._serialized_start=123
43
+ _globals['_FILEINFO']._serialized_end=167
44
+ _globals['_OUTPUTCHUNK']._serialized_start=169
45
+ _globals['_OUTPUTCHUNK']._serialized_end=240
46
+ _globals['_RUNSTARTED']._serialized_start=242
47
+ _globals['_RUNSTARTED']._serialized_end=288
48
+ _globals['_RUNCOMPLETED']._serialized_start=291
49
+ _globals['_RUNCOMPLETED']._serialized_end=436
50
+ _globals['_RUNSYNCREQUEST']._serialized_start=439
51
+ _globals['_RUNSYNCREQUEST']._serialized_end=575
52
+ _globals['_RUNSYNCRESPONSE']._serialized_start=578
53
+ _globals['_RUNSYNCRESPONSE']._serialized_end=749
54
+ _globals['_UPLOADRESPONSE']._serialized_start=751
55
+ _globals['_UPLOADRESPONSE']._serialized_end=801
56
+ _globals['_GETFILEREQUEST']._serialized_start=803
57
+ _globals['_GETFILEREQUEST']._serialized_end=833
58
+ _globals['_DELETEFILEREQUEST']._serialized_start=835
59
+ _globals['_DELETEFILEREQUEST']._serialized_end=868
60
+ _globals['_DELETEFILERESPONSE']._serialized_start=870
61
+ _globals['_DELETEFILERESPONSE']._serialized_end=890
62
+ _globals['_LISTFILESREQUEST']._serialized_start=892
63
+ _globals['_LISTFILESREQUEST']._serialized_end=910
64
+ _globals['_LISTFILESRESPONSE']._serialized_start=912
65
+ _globals['_LISTFILESRESPONSE']._serialized_end=970
66
+ _globals['_RUNREQUEST']._serialized_start=972
67
+ _globals['_RUNREQUEST']._serialized_end=1068
68
+ _globals['_RUNOUTPUT']._serialized_start=1071
69
+ _globals['_RUNOUTPUT']._serialized_end=1273
70
+ _globals['_RUNPIPELINEREQUEST']._serialized_start=1275
71
+ _globals['_RUNPIPELINEREQUEST']._serialized_end=1388
72
+ _globals['_PIPELINESTEP']._serialized_start=1391
73
+ _globals['_PIPELINESTEP']._serialized_end=1557
74
+ _globals['_PIPELINEOUTPUT']._serialized_start=1560
75
+ _globals['_PIPELINEOUTPUT']._serialized_end=1750
76
+ _globals['_PIPELINESTARTED']._serialized_start=1752
77
+ _globals['_PIPELINESTARTED']._serialized_end=1787
78
+ _globals['_STEPEVENT']._serialized_start=1790
79
+ _globals['_STEPEVENT']._serialized_end=2008
80
+ _globals['_PIPELINECOMPLETED']._serialized_start=2010
81
+ _globals['_PIPELINECOMPLETED']._serialized_end=2100
82
+ _globals['_RUNNER']._serialized_start=2345
83
+ _globals['_RUNNER']._serialized_end=2864
84
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,230 @@
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 collections.abc import Iterable as _Iterable, Mapping as _Mapping
6
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
7
+
8
+ DESCRIPTOR: _descriptor.FileDescriptor
9
+
10
+ class OutputStream(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
11
+ __slots__ = ()
12
+ OUTPUT_STREAM_UNSPECIFIED: _ClassVar[OutputStream]
13
+ OUTPUT_STREAM_STDOUT: _ClassVar[OutputStream]
14
+ OUTPUT_STREAM_STDERR: _ClassVar[OutputStream]
15
+
16
+ class RunStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
17
+ __slots__ = ()
18
+ RUN_STATUS_UNSPECIFIED: _ClassVar[RunStatus]
19
+ RUN_STATUS_COMPLETED: _ClassVar[RunStatus]
20
+ RUN_STATUS_TIMED_OUT: _ClassVar[RunStatus]
21
+ RUN_STATUS_SIGNALED: _ClassVar[RunStatus]
22
+ RUN_STATUS_SKIPPED: _ClassVar[RunStatus]
23
+ OUTPUT_STREAM_UNSPECIFIED: OutputStream
24
+ OUTPUT_STREAM_STDOUT: OutputStream
25
+ OUTPUT_STREAM_STDERR: OutputStream
26
+ RUN_STATUS_UNSPECIFIED: RunStatus
27
+ RUN_STATUS_COMPLETED: RunStatus
28
+ RUN_STATUS_TIMED_OUT: RunStatus
29
+ RUN_STATUS_SIGNALED: RunStatus
30
+ RUN_STATUS_SKIPPED: RunStatus
31
+
32
+ class File(_message.Message):
33
+ __slots__ = ("name", "content")
34
+ NAME_FIELD_NUMBER: _ClassVar[int]
35
+ CONTENT_FIELD_NUMBER: _ClassVar[int]
36
+ name: str
37
+ content: bytes
38
+ def __init__(self, name: _Optional[str] = ..., content: _Optional[bytes] = ...) -> None: ...
39
+
40
+ class FileChunk(_message.Message):
41
+ __slots__ = ("name", "data")
42
+ NAME_FIELD_NUMBER: _ClassVar[int]
43
+ DATA_FIELD_NUMBER: _ClassVar[int]
44
+ name: str
45
+ data: bytes
46
+ def __init__(self, name: _Optional[str] = ..., data: _Optional[bytes] = ...) -> None: ...
47
+
48
+ class FileInfo(_message.Message):
49
+ __slots__ = ("name", "size_bytes")
50
+ NAME_FIELD_NUMBER: _ClassVar[int]
51
+ SIZE_BYTES_FIELD_NUMBER: _ClassVar[int]
52
+ name: str
53
+ size_bytes: int
54
+ def __init__(self, name: _Optional[str] = ..., size_bytes: _Optional[int] = ...) -> None: ...
55
+
56
+ class OutputChunk(_message.Message):
57
+ __slots__ = ("stream", "data")
58
+ STREAM_FIELD_NUMBER: _ClassVar[int]
59
+ DATA_FIELD_NUMBER: _ClassVar[int]
60
+ stream: OutputStream
61
+ data: bytes
62
+ def __init__(self, stream: _Optional[_Union[OutputStream, str]] = ..., data: _Optional[bytes] = ...) -> None: ...
63
+
64
+ class RunStarted(_message.Message):
65
+ __slots__ = ("model", "file_root")
66
+ MODEL_FIELD_NUMBER: _ClassVar[int]
67
+ FILE_ROOT_FIELD_NUMBER: _ClassVar[int]
68
+ model: str
69
+ file_root: str
70
+ def __init__(self, model: _Optional[str] = ..., file_root: _Optional[str] = ...) -> None: ...
71
+
72
+ class RunCompleted(_message.Message):
73
+ __slots__ = ("status", "exit_code", "elapsed_seconds", "output_files")
74
+ STATUS_FIELD_NUMBER: _ClassVar[int]
75
+ EXIT_CODE_FIELD_NUMBER: _ClassVar[int]
76
+ ELAPSED_SECONDS_FIELD_NUMBER: _ClassVar[int]
77
+ OUTPUT_FILES_FIELD_NUMBER: _ClassVar[int]
78
+ status: RunStatus
79
+ exit_code: int
80
+ elapsed_seconds: float
81
+ output_files: _containers.RepeatedCompositeFieldContainer[FileInfo]
82
+ def __init__(self, status: _Optional[_Union[RunStatus, str]] = ..., exit_code: _Optional[int] = ..., elapsed_seconds: _Optional[float] = ..., output_files: _Optional[_Iterable[_Union[FileInfo, _Mapping]]] = ...) -> None: ...
83
+
84
+ class RunSyncRequest(_message.Message):
85
+ __slots__ = ("model", "file_root", "inputs", "timeout_seconds")
86
+ MODEL_FIELD_NUMBER: _ClassVar[int]
87
+ FILE_ROOT_FIELD_NUMBER: _ClassVar[int]
88
+ INPUTS_FIELD_NUMBER: _ClassVar[int]
89
+ TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int]
90
+ model: str
91
+ file_root: str
92
+ inputs: _containers.RepeatedCompositeFieldContainer[File]
93
+ timeout_seconds: int
94
+ def __init__(self, model: _Optional[str] = ..., file_root: _Optional[str] = ..., inputs: _Optional[_Iterable[_Union[File, _Mapping]]] = ..., timeout_seconds: _Optional[int] = ...) -> None: ...
95
+
96
+ class RunSyncResponse(_message.Message):
97
+ __slots__ = ("status", "exit_code", "stdout", "stderr", "elapsed_seconds", "outputs")
98
+ STATUS_FIELD_NUMBER: _ClassVar[int]
99
+ EXIT_CODE_FIELD_NUMBER: _ClassVar[int]
100
+ STDOUT_FIELD_NUMBER: _ClassVar[int]
101
+ STDERR_FIELD_NUMBER: _ClassVar[int]
102
+ ELAPSED_SECONDS_FIELD_NUMBER: _ClassVar[int]
103
+ OUTPUTS_FIELD_NUMBER: _ClassVar[int]
104
+ status: RunStatus
105
+ exit_code: int
106
+ stdout: bytes
107
+ stderr: bytes
108
+ elapsed_seconds: float
109
+ outputs: _containers.RepeatedCompositeFieldContainer[File]
110
+ def __init__(self, status: _Optional[_Union[RunStatus, str]] = ..., exit_code: _Optional[int] = ..., stdout: _Optional[bytes] = ..., stderr: _Optional[bytes] = ..., elapsed_seconds: _Optional[float] = ..., outputs: _Optional[_Iterable[_Union[File, _Mapping]]] = ...) -> None: ...
111
+
112
+ class UploadResponse(_message.Message):
113
+ __slots__ = ("name", "size_bytes")
114
+ NAME_FIELD_NUMBER: _ClassVar[int]
115
+ SIZE_BYTES_FIELD_NUMBER: _ClassVar[int]
116
+ name: str
117
+ size_bytes: int
118
+ def __init__(self, name: _Optional[str] = ..., size_bytes: _Optional[int] = ...) -> None: ...
119
+
120
+ class GetFileRequest(_message.Message):
121
+ __slots__ = ("name",)
122
+ NAME_FIELD_NUMBER: _ClassVar[int]
123
+ name: str
124
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
125
+
126
+ class DeleteFileRequest(_message.Message):
127
+ __slots__ = ("name",)
128
+ NAME_FIELD_NUMBER: _ClassVar[int]
129
+ name: str
130
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
131
+
132
+ class DeleteFileResponse(_message.Message):
133
+ __slots__ = ()
134
+ def __init__(self) -> None: ...
135
+
136
+ class ListFilesRequest(_message.Message):
137
+ __slots__ = ()
138
+ def __init__(self) -> None: ...
139
+
140
+ class ListFilesResponse(_message.Message):
141
+ __slots__ = ("files",)
142
+ FILES_FIELD_NUMBER: _ClassVar[int]
143
+ files: _containers.RepeatedCompositeFieldContainer[FileInfo]
144
+ def __init__(self, files: _Optional[_Iterable[_Union[FileInfo, _Mapping]]] = ...) -> None: ...
145
+
146
+ class RunRequest(_message.Message):
147
+ __slots__ = ("model", "file_root", "timeout_seconds")
148
+ MODEL_FIELD_NUMBER: _ClassVar[int]
149
+ FILE_ROOT_FIELD_NUMBER: _ClassVar[int]
150
+ TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int]
151
+ model: str
152
+ file_root: str
153
+ timeout_seconds: int
154
+ def __init__(self, model: _Optional[str] = ..., file_root: _Optional[str] = ..., timeout_seconds: _Optional[int] = ...) -> None: ...
155
+
156
+ class RunOutput(_message.Message):
157
+ __slots__ = ("started", "output", "completed", "file")
158
+ STARTED_FIELD_NUMBER: _ClassVar[int]
159
+ OUTPUT_FIELD_NUMBER: _ClassVar[int]
160
+ COMPLETED_FIELD_NUMBER: _ClassVar[int]
161
+ FILE_FIELD_NUMBER: _ClassVar[int]
162
+ started: RunStarted
163
+ output: OutputChunk
164
+ completed: RunCompleted
165
+ file: FileChunk
166
+ def __init__(self, started: _Optional[_Union[RunStarted, _Mapping]] = ..., output: _Optional[_Union[OutputChunk, _Mapping]] = ..., completed: _Optional[_Union[RunCompleted, _Mapping]] = ..., file: _Optional[_Union[FileChunk, _Mapping]] = ...) -> None: ...
167
+
168
+ class RunPipelineRequest(_message.Message):
169
+ __slots__ = ("steps", "timeout_seconds")
170
+ STEPS_FIELD_NUMBER: _ClassVar[int]
171
+ TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int]
172
+ steps: _containers.RepeatedCompositeFieldContainer[PipelineStep]
173
+ timeout_seconds: int
174
+ def __init__(self, steps: _Optional[_Iterable[_Union[PipelineStep, _Mapping]]] = ..., timeout_seconds: _Optional[int] = ...) -> None: ...
175
+
176
+ class PipelineStep(_message.Message):
177
+ __slots__ = ("id", "model", "file_root", "inputs", "depends_on", "timeout_seconds")
178
+ ID_FIELD_NUMBER: _ClassVar[int]
179
+ MODEL_FIELD_NUMBER: _ClassVar[int]
180
+ FILE_ROOT_FIELD_NUMBER: _ClassVar[int]
181
+ INPUTS_FIELD_NUMBER: _ClassVar[int]
182
+ DEPENDS_ON_FIELD_NUMBER: _ClassVar[int]
183
+ TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int]
184
+ id: str
185
+ model: str
186
+ file_root: str
187
+ inputs: _containers.RepeatedCompositeFieldContainer[File]
188
+ depends_on: _containers.RepeatedScalarFieldContainer[str]
189
+ timeout_seconds: int
190
+ def __init__(self, id: _Optional[str] = ..., model: _Optional[str] = ..., file_root: _Optional[str] = ..., inputs: _Optional[_Iterable[_Union[File, _Mapping]]] = ..., depends_on: _Optional[_Iterable[str]] = ..., timeout_seconds: _Optional[int] = ...) -> None: ...
191
+
192
+ class PipelineOutput(_message.Message):
193
+ __slots__ = ("pipeline_started", "step", "pipeline_completed")
194
+ PIPELINE_STARTED_FIELD_NUMBER: _ClassVar[int]
195
+ STEP_FIELD_NUMBER: _ClassVar[int]
196
+ PIPELINE_COMPLETED_FIELD_NUMBER: _ClassVar[int]
197
+ pipeline_started: PipelineStarted
198
+ step: StepEvent
199
+ pipeline_completed: PipelineCompleted
200
+ def __init__(self, pipeline_started: _Optional[_Union[PipelineStarted, _Mapping]] = ..., step: _Optional[_Union[StepEvent, _Mapping]] = ..., pipeline_completed: _Optional[_Union[PipelineCompleted, _Mapping]] = ...) -> None: ...
201
+
202
+ class PipelineStarted(_message.Message):
203
+ __slots__ = ("step_ids",)
204
+ STEP_IDS_FIELD_NUMBER: _ClassVar[int]
205
+ step_ids: _containers.RepeatedScalarFieldContainer[str]
206
+ def __init__(self, step_ids: _Optional[_Iterable[str]] = ...) -> None: ...
207
+
208
+ class StepEvent(_message.Message):
209
+ __slots__ = ("step_id", "started", "output", "completed", "file")
210
+ STEP_ID_FIELD_NUMBER: _ClassVar[int]
211
+ STARTED_FIELD_NUMBER: _ClassVar[int]
212
+ OUTPUT_FIELD_NUMBER: _ClassVar[int]
213
+ COMPLETED_FIELD_NUMBER: _ClassVar[int]
214
+ FILE_FIELD_NUMBER: _ClassVar[int]
215
+ step_id: str
216
+ started: RunStarted
217
+ output: OutputChunk
218
+ completed: RunCompleted
219
+ file: FileChunk
220
+ def __init__(self, step_id: _Optional[str] = ..., started: _Optional[_Union[RunStarted, _Mapping]] = ..., output: _Optional[_Union[OutputChunk, _Mapping]] = ..., completed: _Optional[_Union[RunCompleted, _Mapping]] = ..., file: _Optional[_Union[FileChunk, _Mapping]] = ...) -> None: ...
221
+
222
+ class PipelineCompleted(_message.Message):
223
+ __slots__ = ("all_succeeded", "elapsed_seconds", "skipped_steps")
224
+ ALL_SUCCEEDED_FIELD_NUMBER: _ClassVar[int]
225
+ ELAPSED_SECONDS_FIELD_NUMBER: _ClassVar[int]
226
+ SKIPPED_STEPS_FIELD_NUMBER: _ClassVar[int]
227
+ all_succeeded: bool
228
+ elapsed_seconds: float
229
+ skipped_steps: _containers.RepeatedScalarFieldContainer[str]
230
+ def __init__(self, all_succeeded: bool = ..., elapsed_seconds: _Optional[float] = ..., skipped_steps: _Optional[_Iterable[str]] = ...) -> None: ...