fdc-shared-kernel 0.0.170__tar.gz → 0.0.172__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 (182) hide show
  1. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/PKG-INFO +1 -1
  2. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
  3. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/pyproject.toml +1 -1
  4. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/mssql_warehouse_connection.py +3 -1
  5. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/mysql_warehouse_connection.py +3 -1
  6. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/postgresql_warehouse_connection.py +3 -1
  7. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/redshift_warehouse_connection.py +18 -1
  8. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/redshift_query_executor.py +58 -14
  9. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/README.md +0 -0
  10. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/README_pypi.md +0 -0
  11. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/fdc_shared_kernel.egg-info/SOURCES.txt +0 -0
  12. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
  13. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/fdc_shared_kernel.egg-info/requires.txt +0 -0
  14. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
  15. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/requirements.txt +0 -0
  16. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/setup.cfg +0 -0
  17. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/__init__.py +0 -0
  18. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/agent_communication_channel/__init__.py +0 -0
  19. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/agent_communication_channel/agent_channel.py +0 -0
  20. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/agent_communication_channel/contexts.py +0 -0
  21. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/agent_communication_channel/event_channel.py +0 -0
  22. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/ai_audit_log/__init__.py +0 -0
  23. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/ai_chat_persistence/__init__.py +0 -0
  24. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/ai_chat_persistence/chat_persistence.py +0 -0
  25. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/async_task_executor/__init__.py +0 -0
  26. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
  27. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/auth/__init__.py +0 -0
  28. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/auth/jwt_helper.py +0 -0
  29. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/auth/token_handler.py +0 -0
  30. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/auth/workbook_permission_handler.py +0 -0
  31. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/__init__.py +0 -0
  32. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/batch_job_status_tracker/container_job_status_tracker.py +0 -0
  33. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_handlers/__init__.py +0 -0
  34. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_handlers/aws_batch_job_handler.py +0 -0
  35. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_handlers/azure_apps_job_handler.py +0 -0
  36. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_handlers/job_handler_factory.py +0 -0
  37. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_handlers/job_status_mapper.py +0 -0
  38. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_storage_managers/__init__.py +0 -0
  39. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_storage_managers/azure_blob_storage_manager.py +0 -0
  40. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_storage_managers/job_storage_manager_factory.py +0 -0
  41. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/batch_job/job_storage_managers/s3_job_storage_manager.py +0 -0
  42. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/config/__init__.py +0 -0
  43. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/constants/constants.py +0 -0
  44. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/__init__.py +0 -0
  45. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/databricks_warehouse_connection.py +0 -0
  46. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/connections/snowflake_warehouse_connection.py +0 -0
  47. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/databricks_handler.py +0 -0
  48. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/factory.py +0 -0
  49. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/mssql_handler.py +0 -0
  50. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/mysql_handler.py +0 -0
  51. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/postgresql_handler.py +0 -0
  52. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/databricks_query_executor.py +0 -0
  53. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/mssql_query_executor.py +0 -0
  54. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/mysql_query_executor.py +0 -0
  55. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/postgresql_query_executor.py +0 -0
  56. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/query_executors/snowflake_query_executor.py +0 -0
  57. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/redshift_handler.py +0 -0
  58. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/snowflake_handler.py +0 -0
  59. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/utils.py +0 -0
  60. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/data_warehouse_handlers/warehouse_handlers_map.py +0 -0
  61. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/database/__init__.py +0 -0
  62. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/__init__.py +0 -0
  63. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/aws_batch_job_context.py +0 -0
  64. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/azure_container_app_job_context.py +0 -0
  65. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/event_executor.py +0 -0
  66. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/job_context.py +0 -0
  67. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/job_record_dataclasses.py +0 -0
  68. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/dataclasses/warehouse_configs.py +0 -0
  69. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/__init__.py +0 -0
  70. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/__init__.py +0 -0
  71. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/csv.py +0 -0
  72. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/databricks.py +0 -0
  73. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/db2.py +0 -0
  74. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/jira.py +0 -0
  75. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/mssql.py +0 -0
  76. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/mysql.py +0 -0
  77. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/oracle.py +0 -0
  78. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/postgres.py +0 -0
  79. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/redshift.py +0 -0
  80. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/salesforce.py +0 -0
  81. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/snowflake.py +0 -0
  82. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/connectors_to_system/sqlalchemy.py +0 -0
  83. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/system_to_warehouse/__init__.py +0 -0
  84. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/system_to_warehouse/postgres.py +0 -0
  85. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/datatype_mappings/system_to_warehouse/redshift.py +0 -0
  86. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/enums/__init__.py +0 -0
  87. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/enums/async_task_executor.py +0 -0
  88. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/enums/connection_engine.py +0 -0
  89. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/enums/status_tracker.py +0 -0
  90. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/event_executor/__init__.py +0 -0
  91. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/event_executor/event_executor.py +0 -0
  92. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/event_executor/job_executor.py +0 -0
  93. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/event_executor/utils.py +0 -0
  94. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/__init__.py +0 -0
  95. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/batch_job_exceptions.py +0 -0
  96. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
  97. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/custom_exceptions.py +0 -0
  98. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
  99. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/http_exceptions.py +0 -0
  100. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
  101. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/operational_exceptions.py +0 -0
  102. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/security_exceptions.py +0 -0
  103. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/exceptions/user_intervention_exception.py +0 -0
  104. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/http/__init__.py +0 -0
  105. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/http/httpx_http_client.py +0 -0
  106. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/http/request_http_client.py +0 -0
  107. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/__init__.py +0 -0
  108. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/base_job_handler.py +0 -0
  109. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/data_warehouse_handler.py +0 -0
  110. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/databus.py +0 -0
  111. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/http.py +0 -0
  112. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/keyvault.py +0 -0
  113. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/query_executor.py +0 -0
  114. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/storage_manager.py +0 -0
  115. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/interfaces/warehouse_connection.py +0 -0
  116. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/logger/__init__.py +0 -0
  117. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/__init__.py +0 -0
  118. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/aws_databus.py +0 -0
  119. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/azure_databus.py +0 -0
  120. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/http_databus.py +0 -0
  121. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/nats_databus.py +0 -0
  122. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/nats_publisher.py +0 -0
  123. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/nats_test.py +0 -0
  124. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/utils/aws_utility.py +0 -0
  125. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/utils/azure_utility.py +0 -0
  126. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/messaging/utils/event_messages.py +0 -0
  127. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/metrics/__init__.py +0 -0
  128. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/metrics/status_tracker.py +0 -0
  129. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/models/__init__.py +0 -0
  130. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/registries/__init__.py +0 -0
  131. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/registries/schema_onboarding_event_registry.py +0 -0
  132. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/registries/service_event_registry.py +0 -0
  133. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/__init__.py +0 -0
  134. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/base_tracker.py +0 -0
  135. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/enums.py +0 -0
  136. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/exceptions.py +0 -0
  137. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/run_manager.py +0 -0
  138. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/schema_onboarding_tracker.py +0 -0
  139. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/shared_helpers.py +0 -0
  140. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/task_determination.py +0 -0
  141. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/task_helpers.py +0 -0
  142. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/task_manager.py +0 -0
  143. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/template_manager.py +0 -0
  144. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/schema_onboarding_tracker/utility_manager.py +0 -0
  145. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/security/__init__.py +0 -0
  146. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/security/key_vault/__init__.py +0 -0
  147. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
  148. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
  149. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/status_tracker/__init__.py +0 -0
  150. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/status_tracker/status_tracker.py +0 -0
  151. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/storage_handlers/__init__.py +0 -0
  152. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/storage_handlers/blob_file_handler.py +0 -0
  153. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/storage_handlers/s3_storage_handler.py +0 -0
  154. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/__init__.py +0 -0
  155. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/config/__init__.py +0 -0
  156. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/config/test_config.py +0 -0
  157. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/logger/__init__.py +0 -0
  158. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/logger/test_logger.py +0 -0
  159. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/messaging/__init__.py +0 -0
  160. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/messaging/test_aws_databus.py +0 -0
  161. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/messaging/test_event_executor.py +0 -0
  162. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
  163. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/utils/__init__.py +0 -0
  164. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/utils/test_data_validators.py +0 -0
  165. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
  166. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/tests/utils/test_string_utils.py +0 -0
  167. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/traceability/__init__.py +0 -0
  168. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/traceability/traceability_handler.py +0 -0
  169. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/__init__.py +0 -0
  170. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/data_validators_utils.py +0 -0
  171. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/date_format_utils.py +0 -0
  172. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/date_utils.py +0 -0
  173. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/string_utils.py +0 -0
  174. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/template_renderer.py +0 -0
  175. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/thread_debug_utils.py +0 -0
  176. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/thread_local_storage.py +0 -0
  177. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/shared_kernel/utils/thread_log_traker.py +0 -0
  178. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/tests/__init__.py +0 -0
  179. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/tests/messaging/__init__.py +0 -0
  180. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/tests/messaging/utils/__init__.py +0 -0
  181. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/tests/messaging/utils/test_aws_utility.py +0 -0
  182. {fdc_shared_kernel-0.0.170 → fdc_shared_kernel-0.0.172}/tests/test_job_executor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.170
3
+ Version: 0.0.172
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.4
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.170
3
+ Version: 0.0.172
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.170"
7
+ version = "0.0.172"
8
8
  requires-python = ">=3.7"
9
9
  readme = "README_pypi.md"
10
10
  description = "Shared library for microservice"
@@ -1,3 +1,4 @@
1
+ import hashlib
1
2
  import time
2
3
  import threading
3
4
 
@@ -44,7 +45,8 @@ class MSSQLWarehouseConnection(DataWarehouseConnection):
44
45
  self.search = pagination.get("search") if isinstance(pagination, dict) else None
45
46
 
46
47
  def _engine_key(self, cfg: MSSQLConfig) -> str:
47
- return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}"
48
+ pwd_hash = hashlib.sha256(cfg.password.encode()).hexdigest()
49
+ return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}|{pwd_hash}"
48
50
 
49
51
  def _get_engine(self) -> Engine:
50
52
  cfg = self._mssql_config
@@ -1,3 +1,4 @@
1
+ import hashlib
1
2
  import time
2
3
  import threading
3
4
  import pymysql
@@ -53,7 +54,8 @@ class MySQLWarehouseConnection(DataWarehouseConnection):
53
54
  self.search = pagination.get("search") if isinstance(pagination, dict) else None
54
55
 
55
56
  def _engine_key(self, cfg: MySQLConfig) -> str:
56
- return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}"
57
+ pwd_hash = hashlib.sha256(cfg.password.encode()).hexdigest()
58
+ return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}|{pwd_hash}"
57
59
 
58
60
  def _get_engine(self) -> Engine:
59
61
  cfg = self._mysql_config
@@ -1,3 +1,4 @@
1
+ import hashlib
1
2
  import time
2
3
  import threading
3
4
 
@@ -45,7 +46,8 @@ class PostgreSQLWarehouseConnection(DataWarehouseConnection):
45
46
  self.search = pagination.get("search") if isinstance(pagination, dict) else None
46
47
 
47
48
  def _engine_key(self, cfg: PostgreSQLConfig) -> str:
48
- return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}"
49
+ pwd_hash = hashlib.sha256(cfg.password.encode()).hexdigest()
50
+ return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}|{pwd_hash}"
49
51
 
50
52
  def _get_engine(self) -> Engine:
51
53
  cfg = self._postgres_config
@@ -1,4 +1,5 @@
1
1
  import errno
2
+ import hashlib
2
3
  import time
3
4
  import threading
4
5
 
@@ -23,6 +24,7 @@ class RedshiftWarehouseConnection(DataWarehouseConnection):
23
24
 
24
25
  _engines: Dict[str, Engine] = {}
25
26
  _lock = threading.Lock()
27
+ _last_dispose_time: Dict[str, float] = {}
26
28
 
27
29
  def __init__(
28
30
  self,
@@ -40,7 +42,22 @@ class RedshiftWarehouseConnection(DataWarehouseConnection):
40
42
  self.set_default_schema = set_default_schema
41
43
 
42
44
  def _engine_key(self, cfg: RedshiftConfig) -> str:
43
- return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}"
45
+ pwd_hash = hashlib.sha256(cfg.password.encode()).hexdigest()
46
+ return f"{cfg.host}|{cfg.port}|{cfg.database}|{cfg.username}|{pwd_hash}"
47
+
48
+ def invalidate_pool(self):
49
+ key = self._engine_key(self._redshift_config)
50
+ with self.__class__._lock:
51
+ now = time.time()
52
+ last_time = self._last_dispose_time.get(key, 0)
53
+ # Throttle (5 seconds)
54
+ if now - last_time < 5:
55
+ return
56
+ engine = self._engines.get(key)
57
+ if engine:
58
+ logger.warning(f"Disposing engine pool for {key} due to stale OID")
59
+ engine.dispose(close=False)
60
+ self._last_dispose_time[key] = now
44
61
 
45
62
  def _get_engine(self) -> Engine:
46
63
  cfg = self._redshift_config
@@ -25,6 +25,9 @@ class RedshiftQueryExecutor(DataWarehouseQueryExecutor):
25
25
  def __init__(self, warehouse_connection: DataWarehouseConnection) -> None:
26
26
  self.warehouse_connection = warehouse_connection
27
27
 
28
+ def invalidate_pool(self):
29
+ self.warehouse_connection.invalidate_pool()
30
+
28
31
  def execute_query(
29
32
  self,
30
33
  query: str,
@@ -56,13 +59,37 @@ class RedshiftQueryExecutor(DataWarehouseQueryExecutor):
56
59
  return []
57
60
 
58
61
  except (OperationalError, ProgrammingError, InterfaceError) as e:
62
+ error_msg = str(e)
63
+ if "could not open relation with OID" in error_msg:
64
+ logger.warning("Detected stale OID. Invalidating connection pool and retrying...")
65
+ self.invalidate_pool()
66
+ try:
67
+ with self.warehouse_connection.get_connection() as conn:
68
+ result = (
69
+ conn.execute(text(query), params)
70
+ if params
71
+ else conn.execute(text(query))
72
+ )
73
+ # Check if the query returns rows
74
+ if result.returns_rows:
75
+ columns = result.keys()
76
+ return [dict(zip(columns, row)) for row in result.fetchall()]
77
+ else:
78
+ # Return an empty list for DDL queries
79
+ return []
80
+ except Exception as retry_error:
81
+ logger.error(
82
+ f"Retry after OID failure also failed: {retry_error}",
83
+ exc_info=True
84
+ )
85
+ raise Exception(
86
+ f"Query failed even after retry: {extract_error_message(str(retry_error))}"
87
+ ) from retry_error
59
88
  logger.error(f"Query failed: {query} — {e}", exc_info=True)
60
- user_msg = extract_error_message(str(e))
61
- raise Exception(f"Query execution failed: {user_msg}") from e
89
+ raise Exception(f"Query execution failed: {extract_error_message(error_msg)}") from e
62
90
  except Exception as e:
63
- user_msg = extract_error_message(str(e))
64
- raise Exception(f"Query execution failed: {user_msg}") from e
65
-
91
+ raise Exception(f"Query execution failed: {extract_error_message(str(e))}") from e
92
+
66
93
  def execute_queries_sequential(
67
94
  self,
68
95
  queries: List[str],
@@ -98,12 +125,14 @@ class RedshiftQueryExecutor(DataWarehouseQueryExecutor):
98
125
  rows = []
99
126
  results.append(rows)
100
127
  except (OperationalError, ProgrammingError, InterfaceError) as e:
128
+ if "could not open relation with OID" in str(e):
129
+ logger.warning("OID error during sequential execution. Invalidating pool and aborting batch.")
130
+ self.invalidate_pool()
131
+ raise Exception("Sequential execution aborted due to stale OID. Retry entire batch.")
101
132
  logger.error(f"Sequential query failed: {query} — {e}", exc_info=True)
102
- user_msg = extract_error_message(str(e))
103
- raise Exception(f"Sequential query execution failed: {user_msg}") from e
133
+ raise Exception(f"Sequential query execution failed: {extract_error_message(str(e))}") from e
104
134
  except Exception as e:
105
- user_msg = extract_error_message(str(e))
106
- raise Exception(f"Sequential query execution failed: {user_msg}") from e
135
+ raise Exception(f"Sequential query execution failed: {extract_error_message(str(e))}") from e
107
136
  return results
108
137
 
109
138
  def execute_queries(
@@ -180,10 +209,25 @@ class RedshiftQueryExecutor(DataWarehouseQueryExecutor):
180
209
  return [], []
181
210
 
182
211
  except (OperationalError, ProgrammingError, InterfaceError) as e:
212
+ error_msg = str(e)
213
+ if "could not open relation with OID" in error_msg:
214
+ logger.warning("Detected stale OID (column types). Invalidating pool and retrying...")
215
+ self.invalidate_pool()
216
+ try:
217
+ with self.warehouse_connection.get_connection() as conn:
218
+ result = (
219
+ conn.execute(text(query), params)
220
+ if params
221
+ else conn.execute(text(query))
222
+ )
223
+ description = result.cursor.description
224
+ columns = result.keys()
225
+ rows = [dict(zip(columns, row)) for row in result.fetchall()]
226
+ return rows, description
227
+ except Exception as retry_error:
228
+ logger.error(f"Retry after OID failure also failed: {retry_error}",exc_info=True)
229
+ raise Exception(f"Query failed even after retry: {extract_error_message(str(retry_error))}") from retry_error
183
230
  logger.error(f"Query failed: {query} — {e}", exc_info=True)
184
- user_msg = extract_error_message(str(e))
185
- raise Exception(f"Query execution failed: {user_msg}") from e
231
+ raise Exception(f"Query execution failed: {extract_error_message(error_msg)}") from e
186
232
  except Exception as e:
187
- user_msg = extract_error_message(str(e))
188
- raise Exception(f"Query execution failed: {user_msg}") from e
189
-
233
+ raise Exception(f"Query execution failed: {extract_error_message(str(e))}") from e