esd-services-api-client 2.6.1a149.dev16__tar.gz → 2.6.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 (57) hide show
  1. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/PKG-INFO +2 -2
  2. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/__init__.py +1 -1
  3. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/logger_factory.py +0 -2
  4. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/core/app_core.py +7 -2
  5. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/core/serializers.py +5 -5
  6. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/input/payload_reader.py +1 -1
  7. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/telemetry/user_telemetry_recorder.py +7 -5
  8. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/pyproject.toml +2 -2
  9. esd_services_api_client-2.6.1a149.dev16/esd_services_api_client/_version.py +0 -1
  10. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/LICENSE +0 -0
  11. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/README.md +0 -0
  12. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/beast/__init__.py +0 -0
  13. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/beast/v3/__init__.py +0 -0
  14. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/beast/v3/_connector.py +0 -0
  15. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/beast/v3/_models.py +0 -0
  16. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/README.md +0 -0
  17. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/__init__.py +0 -0
  18. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/_auth.py +0 -0
  19. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/_base.py +0 -0
  20. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/_connector.py +0 -0
  21. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/boxer/_models.py +0 -0
  22. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/common/__init__.py +0 -0
  23. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/crystal/__init__.py +0 -0
  24. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/crystal/_api_versions.py +0 -0
  25. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/crystal/_connector.py +0 -0
  26. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/crystal/_models.py +0 -0
  27. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/README.md +0 -0
  28. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/__init__.py +0 -0
  29. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/__init__.py +0 -0
  30. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/algrorithm_cache.py +0 -0
  31. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/input_object.py +0 -0
  32. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/nexus_object.py +0 -0
  33. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/abstractions/socket_provider.py +0 -0
  34. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/__init__.py +0 -0
  35. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/_baseline_algorithm.py +0 -0
  36. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/_remote_algorithm.py +0 -0
  37. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/distributed.py +0 -0
  38. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/forked_algorithm.py +0 -0
  39. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/minimalistic.py +0 -0
  40. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/algorithms/recursive.py +0 -0
  41. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/configurations/__init__.py +0 -0
  42. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/configurations/algorithm_configuration.py +0 -0
  43. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/core/__init__.py +0 -0
  44. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/core/app_dependencies.py +0 -0
  45. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/exceptions/__init__.py +0 -0
  46. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/exceptions/_nexus_error.py +0 -0
  47. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/exceptions/cache_errors.py +0 -0
  48. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/exceptions/input_reader_error.py +0 -0
  49. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/exceptions/startup_error.py +0 -0
  50. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/input/__init__.py +0 -0
  51. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/input/input_processor.py +0 -0
  52. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/input/input_reader.py +0 -0
  53. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/modules/__init__.py +0 -0
  54. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/modules/astra_client_module.py +0 -0
  55. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/modules/mlflow_module.py +0 -0
  56. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/telemetry/__init__.py +0 -0
  57. {esd_services_api_client-2.6.1a149.dev16 → esd_services_api_client-2.6.2}/esd_services_api_client/nexus/telemetry/recorder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: esd-services-api-client
3
- Version: 2.6.1a149.dev16
3
+ Version: 2.6.2
4
4
  Summary: Python clients for ESD services
5
5
  License: Apache 2.0
6
6
  Author: ECCO Sneaks & Data
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Provides-Extra: azure
15
15
  Provides-Extra: nexus
16
- Requires-Dist: adapta[datadog,storage] (>=3.3,<4.0)
16
+ Requires-Dist: adapta[datadog,storage] (>=3.4.1,<3.5.0)
17
17
  Requires-Dist: azure-identity (>=1.7,<1.8) ; extra == "azure"
18
18
  Requires-Dist: dataclasses-json (>=0.6.0,<0.7.0)
19
19
  Requires-Dist: httpx (>=0.27.0,<0.28.0) ; extra == "nexus"
@@ -17,4 +17,4 @@
17
17
  Root index.
18
18
  """
19
19
 
20
- __version__ = "0.0.0"
20
+ __version__ = "2.6.2"
@@ -36,8 +36,6 @@ class BootstrapLogger(LoggerInterface, ABC):
36
36
  Dummy class to separate bootstrap logging from core app loggers
37
37
  """
38
38
 
39
- pass
40
-
41
39
 
42
40
  @final
43
41
  class BootstrapLoggerFactory:
@@ -215,6 +215,11 @@ class Nexus:
215
215
  | None = None,
216
216
  delimiter: str = ", ",
217
217
  ) -> "Nexus":
218
+ """
219
+ Adds a log `tagger` and a log `enricher` to be used with injected logger.
220
+ A log `tagger` will add key-value tags to each emitted log message, and those tags can be inferred from the payload and entrypoint arguments.
221
+ A log `enricher` will add additional static templated content to log messages, and render those templates using payload properties entrypoint argyments.
222
+ """
218
223
  self._log_tagger = tagger
219
224
  self._log_enricher = enricher
220
225
  self._log_enrichment_delimiter = delimiter
@@ -378,8 +383,8 @@ class Nexus:
378
383
 
379
384
  # record telemetry
380
385
  root_logger.info(
381
- "Recording telemetry for the run {request_id}",
382
- request_id=self._run_args.request_id,
386
+ "Recording telemetry for the run {run_id}",
387
+ run_id=self._run_args.request_id,
383
388
  )
384
389
  async with telemetry_recorder as recorder:
385
390
  await recorder.record(
@@ -2,10 +2,10 @@
2
2
  from typing import final, Any, TypeVar, Type
3
3
 
4
4
  import pandas
5
- from adapta.storage.models.format import (
6
- DataFrameParquetSerializationFormat,
5
+ from adapta.storage.models.format import SerializationFormat
6
+ from adapta.storage.models.formatters import (
7
+ PandasDataFrameParquetSerializationFormat,
7
8
  DictJsonSerializationFormat,
8
- SerializationFormat,
9
9
  )
10
10
 
11
11
  T = TypeVar("T") # pylint: disable=C0103
@@ -59,7 +59,7 @@ class TelemetrySerializer(Serializer):
59
59
  def __init__(self):
60
60
  super().__init__(
61
61
  default_serialization_formats={
62
- pandas.DataFrame: DataFrameParquetSerializationFormat,
62
+ pandas.DataFrame: PandasDataFrameParquetSerializationFormat,
63
63
  dict: DictJsonSerializationFormat,
64
64
  }
65
65
  )
@@ -72,7 +72,7 @@ class ResultSerializer(Serializer):
72
72
  def __init__(self):
73
73
  super().__init__(
74
74
  default_serialization_formats={
75
- pandas.DataFrame: DataFrameParquetSerializationFormat,
75
+ pandas.DataFrame: PandasDataFrameParquetSerializationFormat,
76
76
  dict: DictJsonSerializationFormat,
77
77
  }
78
78
  )
@@ -21,7 +21,7 @@ from dataclasses import dataclass
21
21
 
22
22
  from typing import final, Optional, Type
23
23
 
24
- from adapta.storage.models.format import DictJsonSerializationFormat
24
+ from adapta.storage.models.formatters import DictJsonSerializationFormat
25
25
  from adapta.utils import session_with_retries
26
26
 
27
27
  from dataclasses_json import DataClassJsonMixin
@@ -43,7 +43,9 @@ class UserTelemetry:
43
43
  """
44
44
 
45
45
  def __init__(
46
- self, telemetry: DataFrame, *telemetry_path_segments: UserTelemetryPathSegment
46
+ self,
47
+ telemetry: DataFrame,
48
+ *telemetry_path_segments: UserTelemetryPathSegment,
47
49
  ):
48
50
  self._telemetry = telemetry
49
51
  self._telemetry_path_segments = telemetry_path_segments
@@ -143,6 +145,8 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
143
145
  )
144
146
  return
145
147
 
148
+ serializer = self._serializer.get_serialization_format(telemetry.telemetry)
149
+
146
150
  self._storage_client.save_data_as_blob(
147
151
  data=telemetry.telemetry,
148
152
  blob_path=DataSocket(
@@ -152,13 +156,11 @@ class UserTelemetryRecorder(Generic[TPayload, TResult], ABC):
152
156
  "telemetry_group=user",
153
157
  f"recorder_class={self.__class__.alias()}",
154
158
  telemetry.telemetry_path, # path join eliminates empty segments
155
- run_id,
159
+ serializer().get_output_name(output_name=run_id),
156
160
  ),
157
161
  data_format="null",
158
162
  ).parse_data_path(),
159
- serialization_format=self._serializer.get_serialization_format(
160
- telemetry.telemetry
161
- ),
163
+ serialization_format=serializer,
162
164
  overwrite=True,
163
165
  )
164
166
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "esd-services-api-client"
3
- version = "v2.6.1a149.dev16"
3
+ version = "2.6.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>']
@@ -10,7 +10,7 @@ repository = 'https://github.com/SneaksAndData/esd-services-api-client'
10
10
 
11
11
  [tool.poetry.dependencies]
12
12
  python = ">=3.11,<3.12"
13
- adapta = { version = "^3.3", extras = ["storage", "datadog"] }
13
+ adapta = { version = "~3.4.1", extras = ["storage", "datadog"] }
14
14
  dataclasses-json = "^0.6.0"
15
15
  pycryptodome = "~3.15"
16
16
  azure-identity = { version = "~1.7", optional = true }
@@ -1 +0,0 @@
1
- __version__ = 'v2.6.1a149.dev16'