fdc-shared-kernel 0.0.45__tar.gz → 0.0.46__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 (67) hide show
  1. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/PKG-INFO +1 -1
  2. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
  3. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/fdc_shared_kernel.egg-info/SOURCES.txt +4 -0
  4. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/pyproject.toml +1 -1
  5. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/custom_exceptions.py +6 -0
  6. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/logger/__init__.py +1 -0
  7. fdc_shared_kernel-0.0.46/shared_kernel/registries/__init__.py +1 -0
  8. fdc_shared_kernel-0.0.46/shared_kernel/registries/service_event_registry.py +21 -0
  9. fdc_shared_kernel-0.0.46/shared_kernel/status_tracker/__init__.py +1 -0
  10. fdc_shared_kernel-0.0.46/shared_kernel/status_tracker/status_tracker.py +89 -0
  11. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/README.md +0 -0
  12. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/README_pypi.md +0 -0
  13. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
  14. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/fdc_shared_kernel.egg-info/requires.txt +0 -0
  15. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
  16. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/requirements.txt +0 -0
  17. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/setup.cfg +0 -0
  18. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/__init__.py +0 -0
  19. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/async_task_executor/__init__.py +0 -0
  20. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
  21. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/auth/__init__.py +0 -0
  22. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/auth/jwt_helper.py +0 -0
  23. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/auth/token_handler.py +0 -0
  24. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/config/__init__.py +0 -0
  25. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/database/__init__.py +0 -0
  26. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/enums/__init__.py +0 -0
  27. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/enums/async_task_status.py +0 -0
  28. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/__init__.py +0 -0
  29. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
  30. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
  31. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/http_exceptions.py +0 -0
  32. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
  33. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/operational_exceptions.py +0 -0
  34. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/exceptions/security_exceptions.py +0 -0
  35. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/http/__init__.py +0 -0
  36. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/http/httpx_http_client.py +0 -0
  37. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/http/request_http_client.py +0 -0
  38. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/interfaces/__init__.py +0 -0
  39. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/interfaces/databus.py +0 -0
  40. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/interfaces/http.py +0 -0
  41. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/interfaces/keyvault.py +0 -0
  42. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/messaging/__init__.py +0 -0
  43. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/messaging/aws_databus.py +0 -0
  44. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/messaging/http_databus.py +0 -0
  45. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/messaging/nats_databus.py +0 -0
  46. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/metrics/__init__.py +0 -0
  47. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/metrics/status_tracker.py +0 -0
  48. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/models/__init__.py +0 -0
  49. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/security/__init__.py +0 -0
  50. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/security/key_vault/__init__.py +0 -0
  51. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
  52. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
  53. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/__init__.py +0 -0
  54. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/config/__init__.py +0 -0
  55. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/config/test_config.py +0 -0
  56. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/logger/__init__.py +0 -0
  57. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/logger/test_logger.py +0 -0
  58. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/messaging/__init__.py +0 -0
  59. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
  60. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/utils/__init__.py +0 -0
  61. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/utils/test_data_validators.py +0 -0
  62. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
  63. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/tests/utils/test_string_utils.py +0 -0
  64. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/utils/__init__.py +0 -0
  65. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/utils/data_validators_utils.py +0 -0
  66. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/utils/date_format_utils.py +0 -0
  67. {fdc_shared_kernel-0.0.45 → fdc_shared_kernel-0.0.46}/shared_kernel/utils/string_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.45
3
+ Version: 0.0.46
4
4
  Summary: Shared library for microservice
5
5
  Author-email: Shikhil S <shikhil.s@dbizsolution.com>, Ahammed Akdham N <ahammedakdham.n@dbizsolution.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.45
3
+ Version: 0.0.46
4
4
  Summary: Shared library for microservice
5
5
  Author-email: Shikhil S <shikhil.s@dbizsolution.com>, Ahammed Akdham N <ahammedakdham.n@dbizsolution.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -40,10 +40,14 @@ shared_kernel/messaging/nats_databus.py
40
40
  shared_kernel/metrics/__init__.py
41
41
  shared_kernel/metrics/status_tracker.py
42
42
  shared_kernel/models/__init__.py
43
+ shared_kernel/registries/__init__.py
44
+ shared_kernel/registries/service_event_registry.py
43
45
  shared_kernel/security/__init__.py
44
46
  shared_kernel/security/key_vault/__init__.py
45
47
  shared_kernel/security/key_vault/aws_secret_manager.py
46
48
  shared_kernel/security/key_vault/azure_keyvault.py
49
+ shared_kernel/status_tracker/__init__.py
50
+ shared_kernel/status_tracker/status_tracker.py
47
51
  shared_kernel/tests/__init__.py
48
52
  shared_kernel/tests/config/__init__.py
49
53
  shared_kernel/tests/config/test_config.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fdc_shared_kernel"
7
- version = "0.0.45"
7
+ version = "0.0.46"
8
8
  requires-python = ">=3.7"
9
9
  readme = "README_pypi.md"
10
10
  description = "Shared library for microservice"
@@ -12,3 +12,9 @@ class UnsupportedProfiling(BaseCustomException):
12
12
  """Raised when an unsupported data profiling method is requested."""
13
13
  def __init__(self, message: str = "The profiling method is not supported.", details: str = "") -> None:
14
14
  super().__init__(message=message, details=details)
15
+
16
+
17
+ class StatusTrackerException(BaseCustomException):
18
+ """Raised when an error occurs during status tracker operations."""
19
+ def __init__(self, message: str = "An error occurred during status tracking.") -> None:
20
+ super().__init__(message=message)
@@ -45,6 +45,7 @@ class Logger:
45
45
 
46
46
  self.logger = logging.getLogger(name if name else __name__)
47
47
  self.logger.setLevel(logging.DEBUG)
48
+ self.logger.propagate = False
48
49
  self.formatter = logging.Formatter(
49
50
  "%(asctime)s - %(name)s - %(filename)s - %(module)s - %(levelname)s - %(message)s"
50
51
  )
@@ -0,0 +1 @@
1
+ from shared_kernel.registries.service_event_registry import ServiceEventRegistry # noqa
@@ -0,0 +1,21 @@
1
+ from shared_kernel.config import Config
2
+
3
+ config = Config()
4
+
5
+
6
+ class ServiceEventRegistry:
7
+ # Sync events to master service to create/update status tracker
8
+ CREATE_TASK = (
9
+ config.get("MASTER_SERVICE_BASE_ENDPOINT")
10
+ + "/event/subscribe-sync-event/CREATE_TASK/"
11
+ )
12
+
13
+ UPDATE_TASK = (
14
+ config.get("MASTER_SERVICE_BASE_ENDPOINT")
15
+ + "/event/subscribe-sync-event/UPDATE_TASK/"
16
+ )
17
+
18
+ MARK_TASK_AS_FAILURE = (
19
+ config.get("MASTER_SERVICE_BASE_ENDPOINT")
20
+ + "/event/subscribe-sync-event/MARK_TASK_AS_FAILURE/"
21
+ )
@@ -0,0 +1 @@
1
+ from shared_kernel.status_tracker.status_tracker import StatusTracker # noqa
@@ -0,0 +1,89 @@
1
+ from shared_kernel.exceptions.custom_exceptions import StatusTrackerException
2
+ from shared_kernel.interfaces.databus import DataBus
3
+ from shared_kernel.messaging import DataBusFactory
4
+ from shared_kernel.registries.service_event_registry import ServiceEventRegistry
5
+
6
+ service_event_registry = ServiceEventRegistry()
7
+
8
+
9
+ class StatusTracker:
10
+ """
11
+ A singleton StatusTracker class that ensures only one StatusTracker instance is created.
12
+
13
+ Attributes:
14
+ _instance (Optional[StatusTracker]): The single instance of the StatusTracker.
15
+ """
16
+
17
+ _instance = None
18
+
19
+ def __new__(cls, name=None):
20
+ """
21
+ override __new__ to ensure singleton pattern.
22
+ """
23
+ if cls._instance is None:
24
+ cls._instance = super(StatusTracker, cls).__new__(cls)
25
+ cls._instance._initialize(name=name)
26
+ return cls._instance
27
+
28
+
29
+ def _initialize(self):
30
+ self.databus: DataBus = DataBusFactory.create_data_bus(
31
+ bus_type="HTTP", config={}
32
+ )
33
+
34
+
35
+ def create_task(self, span_id, trace_id, entity_id, task, status):
36
+ """Publishes a synchronous event to create a task"""
37
+ try:
38
+ payload = {
39
+ "span_id": span_id,
40
+ "trace_id": trace_id,
41
+ "entity_id": entity_id,
42
+ "task": task,
43
+ "status": status,
44
+ }
45
+ response = self.databus.request_event(
46
+ getattr(service_event_registry, "CREATE_TASK"), payload
47
+ )
48
+ return response
49
+
50
+ except Exception as e:
51
+ raise StatusTrackerException(e)
52
+
53
+
54
+ def update_task(self, span_id, trace_id, entity_id, task, status):
55
+ """Publishes a synchronous event to update a task"""
56
+ try:
57
+ payload = {
58
+ "span_id": span_id,
59
+ "trace_id": trace_id,
60
+ "entity_id": entity_id,
61
+ "task": task,
62
+ "status": status,
63
+ }
64
+ response = self.databus.request_event(
65
+ getattr(service_event_registry, "UPDATE_TASK"), payload
66
+ )
67
+ return response
68
+
69
+ except Exception as e:
70
+ raise StatusTrackerException(e)
71
+
72
+
73
+ def mark_task_as_failure(self, span_id, trace_id, entity_id, task, failure_reason):
74
+ """Publishes a synchronous event to mark a task as failure"""
75
+ try:
76
+ payload = {
77
+ "span_id": span_id,
78
+ "trace_id": trace_id,
79
+ "entity_id": entity_id,
80
+ "task": task,
81
+ "failure_reason": failure_reason,
82
+ }
83
+ response = self.databus.request_event(
84
+ getattr(service_event_registry, "MARK_TASK_AS_FAILURE"), payload
85
+ )
86
+ return response
87
+
88
+ except Exception as e:
89
+ raise StatusTrackerException(e)