armonik 3.8.2.dev382__tar.gz → 3.8.3.dev470__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.
Files changed (108) hide show
  1. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/PKG-INFO +1 -1
  2. armonik-3.8.3.dev470/src/armonik/_version.py +3 -0
  3. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/client/__init__.py +1 -0
  4. armonik-3.8.3.dev470/src/armonik/client/results.py +19 -0
  5. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/client/submitter.py +0 -11
  6. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/common/helpers.py +1 -1
  7. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/common/objects.py +13 -12
  8. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/worker/seqlogger.py +2 -3
  9. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/worker/taskhandler.py +12 -15
  10. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/worker/worker.py +2 -2
  11. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik.egg-info/PKG-INFO +1 -1
  12. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik.egg-info/SOURCES.txt +1 -0
  13. armonik-3.8.2.dev382/src/armonik/_version.py +0 -3
  14. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/README.md +0 -0
  15. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/pyproject.toml +0 -0
  16. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/setup.cfg +0 -0
  17. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/__init__.py +0 -0
  18. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/client/tasks.py +0 -0
  19. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/common/__init__.py +0 -0
  20. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/common/enumwrapper.py +0 -0
  21. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/__init__.py +0 -0
  22. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/applications_service_pb2.py +0 -0
  23. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/applications_service_pb2.pyi +0 -0
  24. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/applications_service_pb2_grpc.py +0 -0
  25. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/auth_service_pb2.py +0 -0
  26. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/auth_service_pb2.pyi +0 -0
  27. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/auth_service_pb2_grpc.py +0 -0
  28. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/events_service_pb2.py +0 -0
  29. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/events_service_pb2.pyi +0 -0
  30. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/events_service_pb2_grpc.py +0 -0
  31. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/partitions_service_pb2.py +0 -0
  32. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/partitions_service_pb2.pyi +0 -0
  33. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/partitions_service_pb2_grpc.py +0 -0
  34. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/results_service_pb2.py +0 -0
  35. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/results_service_pb2.pyi +0 -0
  36. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/results_service_pb2_grpc.py +0 -0
  37. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/sessions_service_pb2.py +0 -0
  38. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/sessions_service_pb2.pyi +0 -0
  39. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/sessions_service_pb2_grpc.py +0 -0
  40. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/submitter_service_pb2.py +0 -0
  41. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/submitter_service_pb2.pyi +0 -0
  42. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/submitter_service_pb2_grpc.py +0 -0
  43. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/tasks_service_pb2.py +0 -0
  44. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/tasks_service_pb2.pyi +0 -0
  45. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/tasks_service_pb2_grpc.py +0 -0
  46. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/versions_service_pb2.py +0 -0
  47. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/versions_service_pb2.pyi +0 -0
  48. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/client/versions_service_pb2_grpc.py +0 -0
  49. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/__init__.py +0 -0
  50. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/agent_common_pb2.py +0 -0
  51. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/agent_common_pb2.pyi +0 -0
  52. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/agent_common_pb2_grpc.py +0 -0
  53. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/applications_common_pb2.py +0 -0
  54. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/applications_common_pb2.pyi +0 -0
  55. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/applications_common_pb2_grpc.py +0 -0
  56. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/auth_common_pb2.py +0 -0
  57. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/auth_common_pb2.pyi +0 -0
  58. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/auth_common_pb2_grpc.py +0 -0
  59. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/events_common_pb2.py +0 -0
  60. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/events_common_pb2.pyi +0 -0
  61. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/events_common_pb2_grpc.py +0 -0
  62. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/objects_pb2.py +0 -0
  63. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/objects_pb2.pyi +0 -0
  64. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/objects_pb2_grpc.py +0 -0
  65. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/partitions_common_pb2.py +0 -0
  66. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/partitions_common_pb2.pyi +0 -0
  67. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/partitions_common_pb2_grpc.py +0 -0
  68. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/result_status_pb2.py +0 -0
  69. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/result_status_pb2.pyi +0 -0
  70. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/result_status_pb2_grpc.py +0 -0
  71. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/results_common_pb2.py +0 -0
  72. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/results_common_pb2.pyi +0 -0
  73. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/results_common_pb2_grpc.py +0 -0
  74. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/session_status_pb2.py +0 -0
  75. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/session_status_pb2.pyi +0 -0
  76. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/session_status_pb2_grpc.py +0 -0
  77. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sessions_common_pb2.py +0 -0
  78. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sessions_common_pb2.pyi +0 -0
  79. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sessions_common_pb2_grpc.py +0 -0
  80. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sort_direction_pb2.py +0 -0
  81. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sort_direction_pb2.pyi +0 -0
  82. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/sort_direction_pb2_grpc.py +0 -0
  83. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/submitter_common_pb2.py +0 -0
  84. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/submitter_common_pb2.pyi +0 -0
  85. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/submitter_common_pb2_grpc.py +0 -0
  86. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/task_status_pb2.py +0 -0
  87. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/task_status_pb2.pyi +0 -0
  88. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/task_status_pb2_grpc.py +0 -0
  89. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/tasks_common_pb2.py +0 -0
  90. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/tasks_common_pb2.pyi +0 -0
  91. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/tasks_common_pb2_grpc.py +0 -0
  92. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/versions_common_pb2.py +0 -0
  93. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/versions_common_pb2.pyi +0 -0
  94. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/versions_common_pb2_grpc.py +0 -0
  95. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/worker_common_pb2.py +0 -0
  96. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/worker_common_pb2.pyi +0 -0
  97. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/common/worker_common_pb2_grpc.py +0 -0
  98. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/__init__.py +0 -0
  99. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/agent_service_pb2.py +0 -0
  100. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/agent_service_pb2.pyi +0 -0
  101. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/agent_service_pb2_grpc.py +0 -0
  102. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/worker_service_pb2.py +0 -0
  103. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/worker_service_pb2.pyi +0 -0
  104. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/protogen/worker/worker_service_pb2_grpc.py +0 -0
  105. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik/worker/__init__.py +0 -0
  106. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik.egg-info/dependency_links.txt +0 -0
  107. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik.egg-info/requires.txt +0 -0
  108. {armonik-3.8.2.dev382 → armonik-3.8.3.dev470}/src/armonik.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: armonik
3
- Version: 3.8.2.dev382
3
+ Version: 3.8.3.dev470
4
4
  Summary: GRPC python binding for the ArmoniK orchestrator API
5
5
  License: Apache v2.0 LICENSE
6
6
  Project-URL: Homepage, https://github.com/aneoconsulting/ArmoniK.Api
@@ -0,0 +1,3 @@
1
+ # generated by genversion.py, based on setuptools_scm
2
+ __version__ = "3.8.3.dev470"
3
+ __version_tuple__ = (3, 8, 3, 'dev470')
@@ -1,2 +1,3 @@
1
1
  from .submitter import ArmoniKSubmitter
2
2
  from .tasks import ArmoniKTasks
3
+ from .results import ArmoniKResult
@@ -0,0 +1,19 @@
1
+ from grpc import Channel
2
+
3
+ from typing import List, Dict, cast
4
+
5
+ from ..protogen.client.results_service_pb2_grpc import ResultsStub
6
+ from ..protogen.common.results_common_pb2 import CreateResultsMetaDataRequest, CreateResultsMetaDataResponse
7
+
8
+
9
+ class ArmoniKResult:
10
+ def __init__(self, grpc_channel: Channel):
11
+ """ Result service client
12
+
13
+ Args:
14
+ grpc_channel: gRPC channel to use
15
+ """
16
+ self._client = ResultsStub(grpc_channel)
17
+
18
+ def get_results_ids(self, session_id: str, names : List[str]) -> Dict[str, str]:
19
+ return {r.name : r.result_id for r in cast(CreateResultsMetaDataResponse, self._client.CreateResultsMetaData(CreateResultsMetaDataRequest(results=[CreateResultsMetaDataRequest.ResultCreate(name = n) for n in names], session_id=session_id))).results}
@@ -232,17 +232,6 @@ class ArmoniKSubmitter:
232
232
  return ResultAvailability(errors=[e.detail for e in response.error.errors])
233
233
  return None
234
234
 
235
- def request_output_id(self, session_id: str) -> str:
236
- """Request an output id
237
-
238
- Args:
239
- session_id: Session Id
240
-
241
- Returns:
242
- Output id
243
- """
244
- return f"{session_id}%{uuid.uuid4()}"
245
-
246
235
 
247
236
  def _to_request_stream_internal(request: TaskRequest, is_last: bool, chunk_max_size: int) -> Generator[CreateLargeTaskRequest, None, None]:
248
237
  """ Generate the CreateLargeTaskRequests for the given request
@@ -1,5 +1,5 @@
1
1
  from datetime import timedelta, datetime, timezone
2
- from typing import List, Optional, cast
2
+ from typing import List, Optional
3
3
 
4
4
  import google.protobuf.duration_pb2 as duration
5
5
  import google.protobuf.timestamp_pb2 as timestamp
@@ -19,7 +19,7 @@ class TaskOptions:
19
19
  application_namespace: Optional[str] = None
20
20
  application_service: Optional[str] = None
21
21
  engine_type: Optional[str] = None
22
- options: Optional[Dict] = field(default_factory=dict)
22
+ options: Dict[str, str] = field(default_factory=dict)
23
23
 
24
24
  @classmethod
25
25
  def from_message(cls, task_options):
@@ -66,7 +66,7 @@ class Output:
66
66
  @dataclass()
67
67
  class TaskDefinition:
68
68
  payload: bytes
69
- expected_output_ids: List[str]
69
+ expected_output_ids: List[str] = field(default_factory=list)
70
70
  data_dependencies: List[str] = field(default_factory=list)
71
71
 
72
72
  def __post_init__(self):
@@ -79,10 +79,10 @@ class Task:
79
79
  id: Optional[str] = None
80
80
  session_id: Optional[str] = None
81
81
  owner_pod_id: Optional[str] = None
82
- parent_task_ids: Optional[List[str]] = None
83
- data_dependencies: Optional[List[str]] = None
84
- expected_output_ids: Optional[List[str]] = None
85
- retry_of_ids: Optional[List[str]] = None
82
+ parent_task_ids: List[str] = field(default_factory=list)
83
+ data_dependencies: List[str] = field(default_factory=list)
84
+ expected_output_ids: List[str] = field(default_factory=list)
85
+ retry_of_ids: List[str] = field(default_factory=list)
86
86
  status: TaskStatus = TaskStatus.UNSPECIFIED
87
87
  status_message: Optional[str] = None
88
88
  options: Optional[TaskOptions] = None
@@ -102,13 +102,13 @@ class Task:
102
102
  Args:
103
103
  task_client: ArmoniKTasks client
104
104
  """
105
- result = task_client.get_task(self.id)
105
+ result : "Task" = task_client.get_task(self.id)
106
106
  self.session_id = result.session_id
107
107
  self.owner_pod_id = result.owner_pod_id
108
- self.parent_task_ids = list(result.parent_task_ids)
109
- self.data_dependencies = list(result.data_dependencies)
110
- self.expected_output_ids = list(result.expected_output_ids)
111
- self.retry_of_ids = list(result.retry_of_ids)
108
+ self.parent_task_ids = result.parent_task_ids
109
+ self.data_dependencies = result.data_dependencies
110
+ self.expected_output_ids = result.expected_output_ids
111
+ self.retry_of_ids = result.retry_of_ids
112
112
  self.status = TaskStatus(result.status)
113
113
  self.status_message = result.status_message
114
114
  self.options = result.options
@@ -121,6 +121,7 @@ class Task:
121
121
  self.pod_hostname = result.pod_hostname
122
122
  self.received_at = result.received_at
123
123
  self.acquired_at = result.acquired_at
124
+ self.is_init = True
124
125
 
125
126
  @classmethod
126
127
  def from_message(cls, task_raw: TaskRaw) -> "Task":
@@ -134,7 +135,7 @@ class Task:
134
135
  retry_of_ids=list(task_raw.retry_of_ids),
135
136
  status=TaskStatus(task_raw.status),
136
137
  status_message=task_raw.status_message,
137
- options=task_raw.options,
138
+ options=TaskOptions.from_message(task_raw.options),
138
139
  created_at=timestamp_to_datetime(task_raw.created_at),
139
140
  submitted_at=timestamp_to_datetime(task_raw.submitted_at),
140
141
  started_at=timestamp_to_datetime(task_raw.started_at),
@@ -94,7 +94,7 @@ class ClefLogger:
94
94
  """
95
95
  self.log(logging.ERROR, message, exc_info=exc_info, **kwargs)
96
96
 
97
- def log(self, level: int, message: str, exc_info: Union[BaseException, Tuple[Type[BaseException], BaseException, Optional[TracebackType]], bool, None] = None, **kwargs):
97
+ def log(self, level: int, message: str, exc_info: Union[BaseException, Union[Tuple[Union[Type[BaseException], None], Union[BaseException, None], Optional[TracebackType]], None], bool, None] = None, **kwargs):
98
98
  """ Log a message
99
99
 
100
100
  Args:
@@ -115,8 +115,7 @@ class ClefLogger:
115
115
  exc_info = sys.exc_info()
116
116
  elif isinstance(exc_info, BaseException):
117
117
  exc_info = (type(exc_info), exc_info, exc_info.__traceback__)
118
- exc_info = "\n".join(traceback.format_exception(*exc_info))
119
- payload["@x"] = exc_info
118
+ payload["@x"] = "\n".join(traceback.format_exception(*exc_info))
120
119
  for k, v in kwargs:
121
120
  if k.startswith("@"):
122
121
  k = "@"+k
@@ -1,8 +1,8 @@
1
1
  import uuid
2
- from typing import Optional, Dict, List, Tuple, Union
2
+ from typing import Optional, Dict, List, Tuple, Union, cast
3
3
 
4
4
  from ..common import TaskOptions, TaskDefinition, Task
5
- from ..protogen.common.agent_common_pb2 import Result, CreateTaskRequest
5
+ from ..protogen.common.agent_common_pb2 import Result, CreateTaskRequest, CreateResultsMetaDataRequest, CreateResultsMetaDataResponse
6
6
  from ..protogen.common.objects_pb2 import TaskRequest, InitKeyedDataStream, DataChunk, InitTaskRequest, TaskRequestHeader, Configuration
7
7
  from ..protogen.worker.agent_service_pb2_grpc import AgentStub
8
8
 
@@ -35,12 +35,12 @@ class TaskHandler:
35
35
  raise ValueError("Expected a Compute request type with InitRequest to start the stream.")
36
36
 
37
37
  init_request = current.compute.init_request
38
- self.session_id: str = init_request.session_id
39
- self.task_id: str = init_request.task_id
40
- self.task_options: TaskOptions = TaskOptions.from_message(init_request.task_options)
38
+ self.session_id = init_request.session_id
39
+ self.task_id = init_request.task_id
40
+ self.task_options = TaskOptions.from_message(init_request.task_options)
41
41
  self.expected_results = list(init_request.expected_output_keys)
42
42
  self.configuration = init_request.configuration
43
- self.token: str = current.communication_token
43
+ self.token = current.communication_token
44
44
 
45
45
  datachunk = init_request.payload
46
46
  self.payload.extend(datachunk.data)
@@ -98,7 +98,7 @@ class TaskHandler:
98
98
  task_request.data_dependencies.extend(t.data_dependencies)
99
99
  task_request.payload = t.payload
100
100
  task_requests.append(task_request)
101
-
101
+ assert self.configuration is not None
102
102
  create_tasks_reply = self._client.CreateTask(_to_request_stream(task_requests, self.token, task_options.to_message() if task_options is not None else None, self.configuration.data_chunk_max_size))
103
103
  ret = create_tasks_reply.WhichOneof("Response")
104
104
  if ret is None or ret == "error":
@@ -115,14 +115,6 @@ class TaskHandler:
115
115
  raise Exception("Unknown value")
116
116
  return tasks_created, tasks_creation_failed
117
117
 
118
- def request_output_id(self) -> str:
119
- """Request an output id
120
-
121
- Returns:
122
- Output id
123
- """
124
- return f"{self.token}%{uuid.uuid4()}"
125
-
126
118
  def send_result(self, key: str, data: Union[bytes, bytearray]) -> None:
127
119
  """ Send task result
128
120
 
@@ -132,6 +124,7 @@ class TaskHandler:
132
124
  """
133
125
  def result_stream():
134
126
  res = Result(communication_token=self.token, init=InitKeyedDataStream(key=key))
127
+ assert self.configuration is not None
135
128
  yield res
136
129
  start = 0
137
130
  data_len = len(data)
@@ -148,6 +141,10 @@ class TaskHandler:
148
141
  result_reply = self._client.SendResult(result_stream())
149
142
  if result_reply.WhichOneof("type") == "error":
150
143
  raise Exception(f"Cannot send result id={key}")
144
+
145
+ def get_results_ids(self, names : List[str]) -> Dict[str, str]:
146
+ return {r.name : r.result_id for r in cast(CreateResultsMetaDataResponse, self._client.CreateResultsMetaData(CreateResultsMetaDataRequest(results=[CreateResultsMetaDataRequest.ResultCreate(name = n) for n in names], session_id=self.session_id, communication_token=self.token))).results}
147
+
151
148
 
152
149
 
153
150
  def _to_request_stream_internal(request, communication_token, is_last, chunk_max_size):
@@ -1,6 +1,6 @@
1
1
  import traceback
2
2
  from concurrent import futures
3
- from typing import Callable
3
+ from typing import Callable, Union
4
4
 
5
5
  import grpc
6
6
  from grpc import Channel
@@ -45,7 +45,7 @@ class ArmoniKWorker(WorkerServicer):
45
45
  server.start()
46
46
  server.wait_for_termination()
47
47
 
48
- def Process(self, request_iterator, context) -> ProcessReply:
48
+ def Process(self, request_iterator, context) -> Union[ProcessReply, None]:
49
49
  try:
50
50
  self._logger.debug("Received task")
51
51
  task_handler = TaskHandler.create(request_iterator, self._client)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: armonik
3
- Version: 3.8.2.dev382
3
+ Version: 3.8.3.dev470
4
4
  Summary: GRPC python binding for the ArmoniK orchestrator API
5
5
  License: Apache v2.0 LICENSE
6
6
  Project-URL: Homepage, https://github.com/aneoconsulting/ArmoniK.Api
@@ -8,6 +8,7 @@ src/armonik.egg-info/dependency_links.txt
8
8
  src/armonik.egg-info/requires.txt
9
9
  src/armonik.egg-info/top_level.txt
10
10
  src/armonik/client/__init__.py
11
+ src/armonik/client/results.py
11
12
  src/armonik/client/submitter.py
12
13
  src/armonik/client/tasks.py
13
14
  src/armonik/common/__init__.py
@@ -1,3 +0,0 @@
1
- # generated by genversion.py, based on setuptools_scm
2
- __version__ = "3.8.2.dev382"
3
- __version_tuple__ = (3, 8, 2, 'dev382')
File without changes
File without changes