esd-services-api-client 2.5.10a140.dev5__tar.gz → 2.5.11__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 (57) hide show
  1. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/PKG-INFO +1 -1
  2. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/__init__.py +1 -1
  3. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/modules/__init__.py +4 -1
  4. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/modules/astra_client_module.py +19 -25
  5. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/telemetry/recorder.py +0 -1
  6. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/telemetry/user_telemetry_recorder.py +9 -4
  7. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/pyproject.toml +1 -1
  8. esd_services_api_client-2.5.10a140.dev5/esd_services_api_client/_version.py +0 -1
  9. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/LICENSE +0 -0
  10. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/README.md +0 -0
  11. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/beast/__init__.py +0 -0
  12. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/beast/v3/__init__.py +0 -0
  13. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/beast/v3/_connector.py +0 -0
  14. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/beast/v3/_models.py +0 -0
  15. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/README.md +0 -0
  16. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/__init__.py +0 -0
  17. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/_auth.py +0 -0
  18. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/_base.py +0 -0
  19. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/_connector.py +0 -0
  20. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/boxer/_models.py +0 -0
  21. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/common/__init__.py +0 -0
  22. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/crystal/__init__.py +0 -0
  23. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/crystal/_api_versions.py +0 -0
  24. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/crystal/_connector.py +0 -0
  25. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/crystal/_models.py +0 -0
  26. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/README.md +0 -0
  27. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/__init__.py +0 -0
  28. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/__init__.py +0 -0
  29. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/algrorithm_cache.py +0 -0
  30. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/input_object.py +0 -0
  31. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/logger_factory.py +0 -0
  32. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/nexus_object.py +0 -0
  33. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/abstractions/socket_provider.py +0 -0
  34. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/__init__.py +0 -0
  35. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/_baseline_algorithm.py +0 -0
  36. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/_remote_algorithm.py +0 -0
  37. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/distributed.py +0 -0
  38. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/forked_algorithm.py +0 -0
  39. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/minimalistic.py +0 -0
  40. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/algorithms/recursive.py +0 -0
  41. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/configurations/__init__.py +0 -0
  42. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/configurations/algorithm_configuration.py +0 -0
  43. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/core/__init__.py +0 -0
  44. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/core/app_core.py +0 -0
  45. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/core/app_dependencies.py +0 -0
  46. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/core/serializers.py +0 -0
  47. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/exceptions/__init__.py +0 -0
  48. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/exceptions/_nexus_error.py +0 -0
  49. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/exceptions/cache_errors.py +0 -0
  50. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/exceptions/input_reader_error.py +0 -0
  51. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/exceptions/startup_error.py +0 -0
  52. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/input/__init__.py +0 -0
  53. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/input/input_processor.py +0 -0
  54. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/input/input_reader.py +0 -0
  55. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/input/payload_reader.py +0 -0
  56. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/modules/mlflow_module.py +0 -0
  57. {esd_services_api_client-2.5.10a140.dev5 → esd_services_api_client-2.5.11}/esd_services_api_client/nexus/telemetry/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: esd-services-api-client
3
- Version: 2.5.10a140.dev5
3
+ Version: 2.5.11
4
4
  Summary: Python clients for ESD services
5
5
  License: Apache 2.0
6
6
  Author: ECCO Sneaks & Data
@@ -17,4 +17,4 @@
17
17
  Root index.
18
18
  """
19
19
 
20
- __version__ = "0.0.0"
20
+ __version__ = "2.5.11"
@@ -17,5 +17,8 @@
17
17
  Import index.
18
18
  """
19
19
 
20
- from esd_services_api_client.nexus.modules.mlflow_module import MlflowModule
20
+ try:
21
+ from esd_services_api_client.nexus.modules.mlflow_module import MlflowModule
22
+ except ModuleNotFoundError:
23
+ pass
21
24
  from esd_services_api_client.nexus.modules.astra_client_module import AstraClientModule
@@ -40,30 +40,24 @@ class AstraClientModule(Module):
40
40
  """
41
41
  DI factory method.
42
42
  """
43
- missing_env_vars = []
44
43
 
45
- if "CRYSTAL__ALGORITHM_NAME" not in os.environ:
46
- missing_env_vars.append("CRYSTAL__ALGORITHM_NAME")
47
-
48
- if "CRYSTAL__ASTRA_KEYSPACE" not in os.environ:
49
- missing_env_vars.append("CRYSTAL__ASTRA_KEYSPACE")
50
-
51
- if "PROTEUS__ASTRA_BUNDLE_BYTES" not in os.environ:
52
- missing_env_vars.append("PROTEUS__ASTRA_BUNDLE_BYTES")
53
-
54
- if "PROTEUS__ASTRA_CLIENT_ID" not in os.environ:
55
- missing_env_vars.append("PROTEUS__ASTRA_CLIENT_ID")
56
-
57
- if "PROTEUS__ASTRA_CLIENT_SECRET" not in os.environ:
58
- missing_env_vars.append("PROTEUS__ASTRA_CLIENT_SECRET")
59
-
60
- if missing_env_vars:
61
- raise FatalStartupConfigurationError(", ".join(missing_env_vars))
62
-
63
- return AstraClient(
64
- client_name=os.getenv("CRYSTAL__ALGORITHM_NAME"),
65
- keyspace=os.getenv("CRYSTAL__ASTRA_KEYSPACE"),
66
- secure_connect_bundle_bytes=os.getenv("PROTEUS__ASTRA_BUNDLE_BYTES"),
67
- client_id=os.getenv("PROTEUS__ASTRA_CLIENT_ID"),
68
- client_secret=os.getenv("PROTEUS__ASTRA_CLIENT_SECRET"),
44
+ required_env_vars = [
45
+ "NEXUS__ALGORITHM_NAME",
46
+ "NEXUS__ASTRA_KEYSPACE",
47
+ "NEXUS__ASTRA_BUNDLE_BYTES",
48
+ "NEXUS__ASTRA_CLIENT_ID",
49
+ "NEXUS__ASTRA_CLIENT_SECRET",
50
+ ]
51
+
52
+ if all(map(lambda v: v in os.environ, required_env_vars)):
53
+ return AstraClient(
54
+ client_name=os.getenv("NEXUS__ALGORITHM_NAME"),
55
+ keyspace=os.getenv("NEXUS__ASTRA_KEYSPACE"),
56
+ secure_connect_bundle_bytes=os.getenv("NEXUS__ASTRA_BUNDLE_BYTES"),
57
+ client_id=os.getenv("NEXUS__ASTRA_CLIENT_ID"),
58
+ client_secret=os.getenv("NEXUS__ASTRA_CLIENT_SECRET"),
59
+ )
60
+
61
+ raise FatalStartupConfigurationError(
62
+ f"Astra client requires these environment variables: {required_env_vars}"
69
63
  )
@@ -87,7 +87,6 @@ class TelemetryRecorder(NexusCoreObject):
87
87
  self._telemetry_base_path,
88
88
  "telemetry_group=inputs",
89
89
  f"entity_name={entity_name}",
90
- f"request_id={run_id}",
91
90
  run_id,
92
91
  ),
93
92
  data_format="null",
@@ -107,7 +107,7 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
107
107
  telemetry_base_path: str,
108
108
  run_id: str,
109
109
  **inputs: DataFrame,
110
- ):
110
+ ) -> None:
111
111
  """
112
112
  Record user-defined telemetry data.
113
113
  """
@@ -119,10 +119,10 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
119
119
  "recorder": self.__class__.alias().upper(),
120
120
  },
121
121
  )
122
- async def _measured_recording(**run_args) -> UserTelemetry:
122
+ async def _measured_recording(**run_args) -> UserTelemetry | None:
123
123
  return await self._compute(**run_args)
124
124
 
125
- telemetry: UserTelemetry = await partial(
125
+ telemetry: UserTelemetry | None = await partial(
126
126
  _measured_recording,
127
127
  **(
128
128
  {
@@ -137,6 +137,12 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
137
137
  logger=self._logger,
138
138
  )()
139
139
 
140
+ if telemetry is None:
141
+ self._logger.info(
142
+ f"No telemetry to record for UserTelemetryRecorder {self.__class__.alias()}"
143
+ )
144
+ return
145
+
140
146
  self._storage_client.save_data_as_blob(
141
147
  data=telemetry.telemetry,
142
148
  blob_path=DataSocket(
@@ -146,7 +152,6 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
146
152
  "telemetry_group=user",
147
153
  f"recorder_class={self.__class__.alias()}",
148
154
  telemetry.telemetry_path, # path join eliminates empty segments
149
- f"request_id={run_id}",
150
155
  run_id,
151
156
  ),
152
157
  data_format="null",
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "esd-services-api-client"
3
- version = "v2.5.10a140.dev5"
3
+ version = "2.5.11"
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__ = 'v2.5.10a140.dev5'