fdc-shared-kernel 0.0.43__tar.gz → 0.0.45__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 (63) hide show
  1. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/PKG-INFO +1 -1
  2. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
  3. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/pyproject.toml +1 -1
  4. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/logger/__init__.py +4 -4
  5. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/messaging/nats_databus.py +18 -25
  6. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/README.md +0 -0
  7. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/README_pypi.md +0 -0
  8. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/fdc_shared_kernel.egg-info/SOURCES.txt +0 -0
  9. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
  10. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/fdc_shared_kernel.egg-info/requires.txt +0 -0
  11. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
  12. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/requirements.txt +0 -0
  13. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/setup.cfg +0 -0
  14. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/__init__.py +0 -0
  15. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/async_task_executor/__init__.py +0 -0
  16. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
  17. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/auth/__init__.py +0 -0
  18. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/auth/jwt_helper.py +0 -0
  19. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/auth/token_handler.py +0 -0
  20. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/config/__init__.py +0 -0
  21. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/database/__init__.py +0 -0
  22. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/enums/__init__.py +0 -0
  23. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/enums/async_task_status.py +0 -0
  24. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/__init__.py +0 -0
  25. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
  26. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/custom_exceptions.py +0 -0
  27. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
  28. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/http_exceptions.py +0 -0
  29. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
  30. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/operational_exceptions.py +0 -0
  31. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/exceptions/security_exceptions.py +0 -0
  32. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/http/__init__.py +0 -0
  33. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/http/httpx_http_client.py +0 -0
  34. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/http/request_http_client.py +0 -0
  35. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/interfaces/__init__.py +0 -0
  36. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/interfaces/databus.py +0 -0
  37. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/interfaces/http.py +0 -0
  38. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/interfaces/keyvault.py +0 -0
  39. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/messaging/__init__.py +0 -0
  40. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/messaging/aws_databus.py +0 -0
  41. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/messaging/http_databus.py +0 -0
  42. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/metrics/__init__.py +0 -0
  43. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/metrics/status_tracker.py +0 -0
  44. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/models/__init__.py +0 -0
  45. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/security/__init__.py +0 -0
  46. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/security/key_vault/__init__.py +0 -0
  47. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
  48. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
  49. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/__init__.py +0 -0
  50. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/config/__init__.py +0 -0
  51. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/config/test_config.py +0 -0
  52. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/logger/__init__.py +0 -0
  53. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/logger/test_logger.py +0 -0
  54. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/messaging/__init__.py +0 -0
  55. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
  56. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/utils/__init__.py +0 -0
  57. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/utils/test_data_validators.py +0 -0
  58. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
  59. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/tests/utils/test_string_utils.py +0 -0
  60. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/utils/__init__.py +0 -0
  61. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/utils/data_validators_utils.py +0 -0
  62. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/shared_kernel/utils/date_format_utils.py +0 -0
  63. {fdc_shared_kernel-0.0.43 → fdc_shared_kernel-0.0.45}/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.43
3
+ Version: 0.0.45
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.43
3
+ Version: 0.0.45
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fdc_shared_kernel"
7
- version = "0.0.43"
7
+ version = "0.0.45"
8
8
  requires-python = ">=3.7"
9
9
  readme = "README_pypi.md"
10
10
  description = "Shared library for microservice"
@@ -96,16 +96,16 @@ class Logger:
96
96
 
97
97
  def info(self, message, *args, **kwargs):
98
98
  extra_data = {"extra_data": kwargs}
99
- self.logger.info(message, *args, extra=extra_data)
99
+ self.logger.info(message, *args, extra=extra_data, stacklevel=2)
100
100
 
101
101
  def error(self, message, *args, **kwargs):
102
102
  extra_data = {"extra_data": kwargs}
103
- self.logger.error(message, exc_info=True, *args, extra=extra_data)
103
+ self.logger.error(message, exc_info=True, *args, extra=extra_data, stacklevel=2)
104
104
 
105
105
  def debug(self, message, *args, **kwargs):
106
106
  extra_data = {"extra_data": kwargs}
107
- self.logger.debug(message, *args, extra=extra_data)
107
+ self.logger.debug(message, *args, extra=extra_data, stacklevel=2)
108
108
 
109
109
  def warning(self, message, *args, **kwargs):
110
110
  extra_data = {"extra_data": kwargs}
111
- self.logger.warning(message, *args, extra=extra_data)
111
+ self.logger.warning(message, *args, extra=extra_data, stacklevel=2)
@@ -23,13 +23,6 @@ class NATSDataBus(DataBus):
23
23
  A NATS interface class to handle both standard NATS and JetStream operations.
24
24
  """
25
25
 
26
- _instance = None
27
-
28
- def __new__(cls, *args, **kwargs):
29
- if cls._instance is None:
30
- cls._instance = super(NATSDataBus, cls).__new__(cls)
31
- return cls._instance
32
-
33
26
  def __init__(self, config: Dict = None):
34
27
  """
35
28
  Initialize the NATSDataBus.
@@ -37,16 +30,14 @@ class NATSDataBus(DataBus):
37
30
  Args:
38
31
  config (Dict): A dictionary containing the NATS configuration.
39
32
  """
40
- if not hasattr(self, "initialized"): # Prevent reinitialization
41
- super().__init__()
42
- self.nats_client = NATS()
43
- self.servers = config.get("servers")
44
- self.user = config.get("user")
45
- self.password = config.get("password")
46
- self.connected = False
47
- self.nats_jet_stream_context = None # JetStream context
48
- self.initialized = True
49
- self.max_delivery_count = app_config.get("MAX_DELIVERY_COUNT")
33
+ super().__init__()
34
+ self.nats_client = NATS()
35
+ self.servers = config.get("servers")
36
+ self.user = config.get("user")
37
+ self.password = config.get("password")
38
+ self.connected = False
39
+ self.nats_jet_stream_context = None # JetStream context
40
+ self.max_delivery_count = app_config.get("MAX_DELIVERY_COUNT")
50
41
 
51
42
  async def _connection_error_callback(self, e: Exception) -> None:
52
43
  """
@@ -74,6 +65,7 @@ class NATSDataBus(DataBus):
74
65
  ack_policy=AckPolicy.EXPLICIT,
75
66
  deliver_policy=DeliverPolicy.ALL,
76
67
  filter_subject=subject,
68
+ ack_wait=3600,
77
69
  max_ack_pending=5,
78
70
  )
79
71
  await self.nats_jet_stream_context.add_consumer(
@@ -200,7 +192,7 @@ class NATSDataBus(DataBus):
200
192
  """
201
193
  Connect to the NATS server.
202
194
  """
203
- if not self.connected:
195
+ if not self.nats_client.is_connected:
204
196
  await self.nats_client.connect(
205
197
  servers=self.servers,
206
198
  user=self.user,
@@ -296,19 +288,20 @@ class NATSDataBus(DataBus):
296
288
  event_data: dict = json.loads(message_object.data.decode())
297
289
  has_job_failed = False
298
290
  try:
299
- callback(event_data)
291
+ await callback(event_data)
292
+ # acknowledge the message after processing and finishing the job
293
+ await message_object.ack()
294
+ logger.info(f"Acknowledged job: {event_data}")
300
295
  except Exception as e:
301
296
  logger.error(
302
297
  f"Invoking callback during execution of [{event_name}] failed due to {str(e)}"
303
298
  )
304
299
  has_job_failed = True
305
300
 
306
- if not has_job_failed:
307
- # acknowledge the message after processing and finishing the job successfully
308
- await message_object.ack()
309
- logger.info(f"Acknowledged job: {event_data}")
310
- elif message_object.metadata.num_delivered == self.max_delivery_count:
311
- # move to DLQ if max retries have been reached
301
+ if (
302
+ has_job_failed
303
+ and message_object.metadata.num_delivered == self.max_delivery_count
304
+ ):
312
305
  logger.warning("Moving event to the dead letter topic after max retries")
313
306
  await self._create_dlq_stream()
314
307
  await self._move_to_dlq(event_name, event_data)