esd-services-api-client 2.2.1__tar.gz → 2.2.2__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 (53) hide show
  1. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/PKG-INFO +1 -1
  2. esd_services_api_client-2.2.2/esd_services_api_client/_version.py +1 -0
  3. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/crystal/_connector.py +4 -0
  4. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/crystal/_models.py +12 -0
  5. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/telemetry/recorder.py +20 -12
  6. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/pyproject.toml +1 -1
  7. esd_services_api_client-2.2.1/esd_services_api_client/_version.py +0 -1
  8. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/LICENSE +0 -0
  9. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/README.md +0 -0
  10. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/__init__.py +0 -0
  11. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/beast/__init__.py +0 -0
  12. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/beast/v3/__init__.py +0 -0
  13. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/beast/v3/_connector.py +0 -0
  14. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/beast/v3/_models.py +0 -0
  15. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/README.md +0 -0
  16. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/__init__.py +0 -0
  17. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/_auth.py +0 -0
  18. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/_base.py +0 -0
  19. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/_connector.py +0 -0
  20. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/boxer/_models.py +0 -0
  21. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/common/__init__.py +0 -0
  22. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/crystal/__init__.py +0 -0
  23. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/crystal/_api_versions.py +0 -0
  24. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/README.md +0 -0
  25. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/__init__.py +0 -0
  26. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/__init__.py +0 -0
  27. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/algrorithm_cache.py +0 -0
  28. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/input_object.py +0 -0
  29. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/logger_factory.py +0 -0
  30. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/nexus_object.py +0 -0
  31. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/abstractions/socket_provider.py +0 -0
  32. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/__init__.py +0 -0
  33. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/_baseline_algorithm.py +0 -0
  34. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/_remote_algorithm.py +0 -0
  35. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/distributed.py +0 -0
  36. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/forked_algorithm.py +0 -0
  37. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/minimalistic.py +0 -0
  38. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/algorithms/recursive.py +0 -0
  39. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/configurations/__init__.py +0 -0
  40. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/configurations/algorithm_configuration.py +0 -0
  41. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/core/__init__.py +0 -0
  42. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/core/app_core.py +0 -0
  43. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/core/app_dependencies.py +0 -0
  44. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/exceptions/__init__.py +0 -0
  45. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/exceptions/_nexus_error.py +0 -0
  46. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/exceptions/cache_errors.py +0 -0
  47. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/exceptions/input_reader_error.py +0 -0
  48. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/exceptions/startup_error.py +0 -0
  49. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/input/__init__.py +0 -0
  50. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/input/input_processor.py +0 -0
  51. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/input/input_reader.py +0 -0
  52. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/input/payload_reader.py +0 -0
  53. {esd_services_api_client-2.2.1 → esd_services_api_client-2.2.2}/esd_services_api_client/nexus/telemetry/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esd-services-api-client
3
- Version: 2.2.1
3
+ Version: 2.2.2
4
4
  Summary: Python clients for ESD services
5
5
  Home-page: https://github.com/SneaksAndData/esd-services-api-client
6
6
  License: Apache 2.0
@@ -0,0 +1 @@
1
+ __version__ = '2.2.2'
@@ -37,6 +37,7 @@ from esd_services_api_client.crystal._models import (
37
37
  AlgorithmRequest,
38
38
  AlgorithmConfiguration,
39
39
  RequestLifeCycleStage,
40
+ ParentRequest,
40
41
  )
41
42
 
42
43
  T = TypeVar("T") # pylint: disable=C0103
@@ -154,6 +155,7 @@ class CrystalConnector:
154
155
  algorithm: str,
155
156
  payload: Dict,
156
157
  custom_config: Optional[AlgorithmConfiguration] = None,
158
+ parent_request: Optional[ParentRequest] = None,
157
159
  tag: Optional[str] = None,
158
160
  ) -> str:
159
161
  """
@@ -162,6 +164,7 @@ class CrystalConnector:
162
164
  :param algorithm: Name of a connected algorithm.
163
165
  :param payload: Algorithm payload.
164
166
  :param custom_config: Customized config for this run.
167
+ :param parent_request: Parent request for this run.
165
168
  :param tag: Client-side submission identifier.
166
169
  :return: Request identifier assigned to the job by Crystal.
167
170
  """
@@ -176,6 +179,7 @@ class CrystalConnector:
176
179
  algorithm_name=algorithm,
177
180
  algorithm_parameters=payload,
178
181
  custom_configuration=custom_config,
182
+ parent_request=parent_request,
179
183
  tag=tag,
180
184
  ).to_dict()
181
185
 
@@ -133,6 +133,17 @@ class AlgorithmConfiguration(DataClassJsonMixin):
133
133
  speculative_attempts: Optional[int] = None
134
134
 
135
135
 
136
+ @dataclass_json(letter_case=LetterCase.CAMEL)
137
+ @dataclass
138
+ class ParentRequest(DataClassJsonMixin):
139
+ """
140
+ Used to specify crystal parent job for a new crystal job.
141
+ """
142
+
143
+ request_id: Optional[str] = None
144
+ algorithm_name: Optional[str] = None
145
+
146
+
136
147
  @dataclass_json(letter_case=LetterCase.CAMEL)
137
148
  @dataclass
138
149
  class AlgorithmRequest(DataClassJsonMixin):
@@ -143,4 +154,5 @@ class AlgorithmRequest(DataClassJsonMixin):
143
154
  algorithm_parameters: Dict
144
155
  algorithm_name: Optional[str] = None
145
156
  custom_configuration: Optional[AlgorithmConfiguration] = None
157
+ parent_request: Optional[ParentRequest] = None
146
158
  tag: Optional[str] = None
@@ -59,18 +59,26 @@ class TelemetryRecorder(NexusCoreObject):
59
59
  entity_name=entity_name,
60
60
  run_id=run_id,
61
61
  )
62
- self._storage_client.save_data_as_blob(
63
- data=entity_to_record,
64
- blob_path=DataSocket(
65
- alias="telemetry",
66
- data_path=f"{self._telemetry_base_path}/{entity_name}/{run_id}",
67
- data_format="null",
68
- ).parse_data_path(),
69
- serialization_format=DictJsonSerializationFormat
70
- if isinstance(entity_to_record, dict)
71
- else DataFrameParquetSerializationFormat,
72
- overwrite=True,
73
- )
62
+ if not isinstance(entity_to_record, dict) and not isinstance(
63
+ entity_to_record, pd.DataFrame
64
+ ):
65
+ self._logger.warning(
66
+ "Unsupported data type: {telemetry_entity_type}. Telemetry recording skipped.",
67
+ telemetry_entity_type=type(entity_to_record),
68
+ )
69
+ else:
70
+ self._storage_client.save_data_as_blob(
71
+ data=entity_to_record,
72
+ blob_path=DataSocket(
73
+ alias="telemetry",
74
+ data_path=f"{self._telemetry_base_path}/{entity_name}/{run_id}",
75
+ data_format="null",
76
+ ).parse_data_path(),
77
+ serialization_format=DictJsonSerializationFormat
78
+ if isinstance(entity_to_record, dict)
79
+ else DataFrameParquetSerializationFormat,
80
+ overwrite=True,
81
+ )
74
82
 
75
83
  telemetry_tasks = [
76
84
  asyncio.create_task(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "esd-services-api-client"
3
- version = "2.2.1"
3
+ version = "2.2.2"
4
4
  description = "Python clients for ESD services"
5
5
  authors = ["ECCO Sneaks & Data <esdsupport@ecco.com>"]
6
6
  maintainers = ['GZU <gzu@ecco.com>', 'JRB <ext-jrb@ecco.com>', 'VISA <visa@ecco.com>']
@@ -1 +0,0 @@
1
- __version__ = '2.2.1'