esd-services-api-client 2.6.3a155.dev9__tar.gz → 2.6.3a160.dev2__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 (59) hide show
  1. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/PKG-INFO +1 -1
  2. esd_services_api_client-2.6.3a160.dev2/esd_services_api_client/_version.py +1 -0
  3. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/metrics_provider_factory.py +6 -9
  4. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/_baseline_algorithm.py +1 -1
  5. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/_remote_algorithm.py +1 -1
  6. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/forked_algorithm.py +1 -1
  7. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/core/app_core.py +14 -7
  8. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/pyproject.toml +1 -1
  9. esd_services_api_client-2.6.3a155.dev9/esd_services_api_client/_version.py +0 -1
  10. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/LICENSE +0 -0
  11. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/README.md +0 -0
  12. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/__init__.py +0 -0
  13. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/beast/__init__.py +0 -0
  14. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/beast/v3/__init__.py +0 -0
  15. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/beast/v3/_connector.py +0 -0
  16. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/beast/v3/_models.py +0 -0
  17. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/README.md +0 -0
  18. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/__init__.py +0 -0
  19. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/_auth.py +0 -0
  20. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/_base.py +0 -0
  21. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/_connector.py +0 -0
  22. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/boxer/_models.py +0 -0
  23. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/common/__init__.py +0 -0
  24. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/crystal/__init__.py +0 -0
  25. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/crystal/_api_versions.py +0 -0
  26. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/crystal/_connector.py +0 -0
  27. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/crystal/_models.py +0 -0
  28. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/README.md +0 -0
  29. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/__init__.py +0 -0
  30. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/__init__.py +0 -0
  31. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/algrorithm_cache.py +0 -0
  32. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/input_object.py +0 -0
  33. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/logger_factory.py +0 -0
  34. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/nexus_object.py +0 -0
  35. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/abstractions/socket_provider.py +0 -0
  36. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/__init__.py +0 -0
  37. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/distributed.py +0 -0
  38. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/minimalistic.py +0 -0
  39. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/algorithms/recursive.py +0 -0
  40. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/configurations/__init__.py +0 -0
  41. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/configurations/algorithm_configuration.py +0 -0
  42. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/core/__init__.py +0 -0
  43. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/core/app_dependencies.py +0 -0
  44. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/core/serializers.py +0 -0
  45. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/exceptions/__init__.py +0 -0
  46. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/exceptions/_nexus_error.py +0 -0
  47. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/exceptions/cache_errors.py +0 -0
  48. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/exceptions/input_reader_error.py +0 -0
  49. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/exceptions/startup_error.py +0 -0
  50. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/input/__init__.py +0 -0
  51. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/input/input_processor.py +0 -0
  52. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/input/input_reader.py +0 -0
  53. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/input/payload_reader.py +0 -0
  54. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/modules/__init__.py +0 -0
  55. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/modules/astra_client_module.py +0 -0
  56. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/modules/mlflow_module.py +0 -0
  57. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/telemetry/__init__.py +0 -0
  58. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/telemetry/recorder.py +0 -0
  59. {esd_services_api_client-2.6.3a155.dev9 → esd_services_api_client-2.6.3a160.dev2}/esd_services_api_client/nexus/telemetry/user_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.3a155.dev9
3
+ Version: 2.6.3a160.dev2
4
4
  Summary: Python clients for ESD services
5
5
  License: Apache 2.0
6
6
  Author: ECCO Sneaks & Data
@@ -0,0 +1 @@
1
+ __version__ = 'v2.6.3a160.dev2'
@@ -89,18 +89,15 @@ class MetricsProviderFactory:
89
89
  Creates a metrics provider enriched with additional tags for each metric emitted by this algorithm.
90
90
  In case of DatadogMetricsProvider, takes care of UDP/UDS specific initialization.
91
91
  """
92
- self._metrics_settings.fixed_tags |= self._global_tags
92
+ init_args = self._metrics_settings.init_args | {
93
+ "fixed_tags": self._metrics_settings.fixed_tags | self._global_tags
94
+ }
93
95
 
94
96
  if self._metrics_class == DatadogMetricsProvider:
95
97
  if self._metrics_settings.protocol == "udp":
96
- return self._metrics_class.udp(**self._metrics_settings.init_args)
98
+ return self._metrics_class.udp(**init_args)
97
99
 
98
100
  if self._metrics_settings.protocol == "uds":
99
- return self._metrics_class.uds(**self._metrics_settings.init_args)
101
+ return self._metrics_class.uds(**init_args)
100
102
 
101
- return self._metrics_class(
102
- **(
103
- self._metrics_settings.init_args
104
- | {"fixed_tags": self._metrics_settings.fixed_tags}
105
- )
106
- )
103
+ return self._metrics_class(**init_args)
@@ -74,7 +74,7 @@ class BaselineAlgorithm(NexusObject[TPayload, AlgorithmResult]):
74
74
  """
75
75
 
76
76
  @run_time_metrics_async(
77
- metric_name="algorthm_run",
77
+ metric_name="algorithm_run",
78
78
  on_finish_message_template="Finished running {algorithm} in {elapsed:.2f}s seconds",
79
79
  template_args={
80
80
  "algorithm": self.__class__.alias().upper(),
@@ -92,7 +92,7 @@ class RemoteAlgorithm(NexusObject[TPayload, AlgorithmResult]):
92
92
  """
93
93
 
94
94
  @run_time_metrics_async(
95
- metric_name="algorthm_run",
95
+ metric_name="algorithm_run",
96
96
  on_finish_message_template="Launched a new remote {algorithm} in {elapsed:.2f}s seconds",
97
97
  template_args={
98
98
  "algorithm": self.__class__.alias().upper(),
@@ -131,7 +131,7 @@ class ForkedAlgorithm(NexusObject[TPayload, AlgorithmResult]):
131
131
  """
132
132
 
133
133
  @run_time_metrics_async(
134
- metric_name="algorthm_run",
134
+ metric_name="algorithm_run",
135
135
  on_finish_message_template="Finished running algorithm {algorithm} in {elapsed:.2f}s seconds",
136
136
  template_args={
137
137
  "algorithm": self.__class__.alias().upper(),
@@ -395,11 +395,6 @@ class Nexus:
395
395
  scope=singleton,
396
396
  )
397
397
 
398
- self._injector.binder.bind(
399
- metrics_provider.__class__,
400
- to=metrics_provider,
401
- scope=singleton,
402
- )
403
398
  except BaseException as ex: # pylint: disable=broad-except
404
399
  bootstrap_logger.error("Error reading algorithm payload", ex)
405
400
 
@@ -420,7 +415,7 @@ class Nexus:
420
415
 
421
416
  root_logger.info(
422
417
  "Running algorithm {algorithm} on Nexus version {version}",
423
- algorithm=algorithm.__class__.__name__,
418
+ algorithm=algorithm.__class__.alias().upper(),
424
419
  version=__version__,
425
420
  )
426
421
 
@@ -439,15 +434,20 @@ class Nexus:
439
434
  root_logger.error(
440
435
  "Algorithm {algorithm} run failed on Nexus version {version}",
441
436
  ex,
442
- algorithm=algorithm.__class__.__name__,
437
+ algorithm=algorithm.__class__.alias().upper(),
443
438
  version=__version__,
444
439
  )
440
+ metrics_provider.count("failed_runs", 1)
441
+ metrics_provider.count("successful_runs", 0)
445
442
 
446
443
  await self._submit_result(
447
444
  self._algorithm_run_task.result() if not ex else None,
448
445
  self._algorithm_run_task.exception(),
449
446
  )
450
447
 
448
+ metrics_provider.count("failed_runs", 0)
449
+ metrics_provider.count("successful_runs", 1)
450
+
451
451
  # record telemetry
452
452
  root_logger.info(
453
453
  "Recording telemetry for the run {run_id}",
@@ -471,16 +471,23 @@ class Nexus:
471
471
  on_complete_tasks, return_when=asyncio.FIRST_EXCEPTION
472
472
  )
473
473
  if len(pending) > 0:
474
+ metrics_provider.count("telemetry_reports_incomplete", 1)
474
475
  root_logger.warning(
475
476
  "Some post-processing operations did not complete or failed. Please review application logs for more information"
476
477
  )
478
+ else:
479
+ metrics_provider.count("telemetry_reports_incomplete", 0)
480
+
477
481
  for done_on_complete_task in done:
478
482
  on_complete_task_exc = done_on_complete_task.exception()
479
483
  if on_complete_task_exc:
484
+ metrics_provider.increment("telemetry_reports_failed")
480
485
  root_logger.warning(
481
486
  "Post processing task failed",
482
487
  exception=on_complete_task_exc,
483
488
  )
489
+ else:
490
+ metrics_provider.increment("telemetry_reports_succeeded")
484
491
  else:
485
492
  root_logger.info(
486
493
  "No post processing tasks were defined for this run."
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "esd-services-api-client"
3
- version = "v2.6.3a155.dev9"
3
+ version = "v2.6.3a160.dev2"
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.6.3a155.dev9'