fdc-shared-kernel 0.0.184__tar.gz → 0.0.185__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 (195) hide show
  1. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/PKG-INFO +1 -1
  2. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
  3. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/SOURCES.txt +5 -0
  4. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/pyproject.toml +1 -1
  5. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/__init__.py +1 -0
  6. fdc_shared_kernel-0.0.185/shared_kernel/interfaces/encryption.py +33 -0
  7. fdc_shared_kernel-0.0.185/shared_kernel/security/__init__.py +2 -0
  8. fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/__init__.py +4 -0
  9. fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/manager.py +84 -0
  10. fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/providers.py +96 -0
  11. fdc_shared_kernel-0.0.185/shared_kernel/tests/security/test_encryption.py +105 -0
  12. fdc_shared_kernel-0.0.184/shared_kernel/security/__init__.py +0 -1
  13. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/README.md +0 -0
  14. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/README_pypi.md +0 -0
  15. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
  16. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/requires.txt +0 -0
  17. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
  18. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/requirements.txt +0 -0
  19. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/setup.cfg +0 -0
  20. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/__init__.py +0 -0
  21. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/__init__.py +0 -0
  22. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/agent_channel.py +0 -0
  23. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/contexts.py +0 -0
  24. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/event_channel.py +0 -0
  25. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_audit_log/__init__.py +0 -0
  26. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_chat_persistence/__init__.py +0 -0
  27. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_chat_persistence/chat_persistence.py +0 -0
  28. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/async_task_executor/__init__.py +0 -0
  29. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
  30. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/__init__.py +0 -0
  31. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/jwt_helper.py +0 -0
  32. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/token_handler.py +0 -0
  33. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/workbook_permission_handler.py +0 -0
  34. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/__init__.py +0 -0
  35. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/batch_job_status_tracker/container_job_status_tracker.py +0 -0
  36. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/__init__.py +0 -0
  37. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/aws_batch_job_handler.py +0 -0
  38. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/azure_apps_job_handler.py +0 -0
  39. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/job_handler_factory.py +0 -0
  40. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/job_status_mapper.py +0 -0
  41. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_storage_managers/__init__.py +0 -0
  42. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_storage_managers/azure_blob_storage_manager.py +0 -0
  43. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_storage_managers/job_storage_manager_factory.py +0 -0
  44. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_storage_managers/s3_job_storage_manager.py +0 -0
  45. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/config/__init__.py +0 -0
  46. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/constants/constants.py +0 -0
  47. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/__init__.py +0 -0
  48. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/databricks_warehouse_connection.py +0 -0
  49. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/jdbc_warehouse_connection.py +0 -0
  50. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/mssql_warehouse_connection.py +0 -0
  51. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/mysql_warehouse_connection.py +0 -0
  52. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/postgresql_warehouse_connection.py +0 -0
  53. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/redshift_warehouse_connection.py +0 -0
  54. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/snowflake_warehouse_connection.py +0 -0
  55. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/custom_query_builders/databricks_query.py +0 -0
  56. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/databricks_handler.py +0 -0
  57. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/factory.py +0 -0
  58. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/jdbc_driver_registry.py +0 -0
  59. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/jdbc_handler.py +0 -0
  60. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/mssql_handler.py +0 -0
  61. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/mysql_handler.py +0 -0
  62. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/odbc_handler.py +0 -0
  63. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/postgresql_handler.py +0 -0
  64. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/databricks_query_executor.py +0 -0
  65. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/jdbc_query_executor.py +0 -0
  66. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/mssql_query_executor.py +0 -0
  67. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/mysql_query_executor.py +0 -0
  68. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/postgresql_query_executor.py +0 -0
  69. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/redshift_query_executor.py +0 -0
  70. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/query_executors/snowflake_query_executor.py +0 -0
  71. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/redshift_handler.py +0 -0
  72. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/snowflake_handler.py +0 -0
  73. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/utils.py +0 -0
  74. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/warehouse_handlers_map.py +0 -0
  75. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/database/__init__.py +0 -0
  76. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/__init__.py +0 -0
  77. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/aws_batch_job_context.py +0 -0
  78. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/azure_container_app_job_context.py +0 -0
  79. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/event_executor.py +0 -0
  80. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/job_context.py +0 -0
  81. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/job_record_dataclasses.py +0 -0
  82. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/warehouse_configs.py +0 -0
  83. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/__init__.py +0 -0
  84. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/__init__.py +0 -0
  85. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/csv.py +0 -0
  86. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/databricks.py +0 -0
  87. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/db2.py +0 -0
  88. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/jdbc.py +0 -0
  89. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/jira.py +0 -0
  90. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/mssql.py +0 -0
  91. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/mysql.py +0 -0
  92. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/oracle.py +0 -0
  93. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/postgres.py +0 -0
  94. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/redshift.py +0 -0
  95. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/salesforce.py +0 -0
  96. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/snowflake.py +0 -0
  97. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/sqlalchemy.py +0 -0
  98. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/__init__.py +0 -0
  99. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/postgres.py +0 -0
  100. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/redshift.py +0 -0
  101. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/__init__.py +0 -0
  102. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/async_task_executor.py +0 -0
  103. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/connection_engine.py +0 -0
  104. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/status_tracker.py +0 -0
  105. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/__init__.py +0 -0
  106. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/event_executor.py +0 -0
  107. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/job_executor.py +0 -0
  108. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/utils.py +0 -0
  109. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/__init__.py +0 -0
  110. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/batch_job_exceptions.py +0 -0
  111. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
  112. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/custom_exceptions.py +0 -0
  113. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
  114. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/http_exceptions.py +0 -0
  115. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
  116. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/operational_exceptions.py +0 -0
  117. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/security_exceptions.py +0 -0
  118. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/user_intervention_exception.py +0 -0
  119. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/__init__.py +0 -0
  120. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/httpx_http_client.py +0 -0
  121. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/request_http_client.py +0 -0
  122. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/base_job_handler.py +0 -0
  123. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/data_warehouse_handler.py +0 -0
  124. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/databus.py +0 -0
  125. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/http.py +0 -0
  126. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/keyvault.py +0 -0
  127. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/query_executor.py +0 -0
  128. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/storage_manager.py +0 -0
  129. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/warehouse_connection.py +0 -0
  130. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/logger/__init__.py +0 -0
  131. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/__init__.py +0 -0
  132. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/aws_databus.py +0 -0
  133. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/azure_databus.py +0 -0
  134. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/http_databus.py +0 -0
  135. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_databus.py +0 -0
  136. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_publisher.py +0 -0
  137. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_test.py +0 -0
  138. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/aws_utility.py +0 -0
  139. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/azure_utility.py +0 -0
  140. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/event_messages.py +0 -0
  141. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/metrics/__init__.py +0 -0
  142. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/metrics/status_tracker.py +0 -0
  143. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/models/__init__.py +0 -0
  144. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/__init__.py +0 -0
  145. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/schema_onboarding_event_registry.py +0 -0
  146. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/service_event_registry.py +0 -0
  147. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/__init__.py +0 -0
  148. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/base_tracker.py +0 -0
  149. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/enums.py +0 -0
  150. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/exceptions.py +0 -0
  151. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/run_manager.py +0 -0
  152. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/schema_onboarding_tracker.py +0 -0
  153. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/shared_helpers.py +0 -0
  154. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_determination.py +0 -0
  155. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_helpers.py +0 -0
  156. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_manager.py +0 -0
  157. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/template_manager.py +0 -0
  158. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/utility_manager.py +0 -0
  159. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/__init__.py +0 -0
  160. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
  161. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
  162. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/status_tracker/__init__.py +0 -0
  163. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/status_tracker/status_tracker.py +0 -0
  164. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/__init__.py +0 -0
  165. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/blob_file_handler.py +0 -0
  166. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/s3_storage_handler.py +0 -0
  167. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/__init__.py +0 -0
  168. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/__init__.py +0 -0
  169. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/test_config.py +0 -0
  170. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/__init__.py +0 -0
  171. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/test_logger.py +0 -0
  172. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/__init__.py +0 -0
  173. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_aws_databus.py +0 -0
  174. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_event_executor.py +0 -0
  175. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
  176. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/__init__.py +0 -0
  177. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_data_validators.py +0 -0
  178. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
  179. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_string_utils.py +0 -0
  180. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/traceability/__init__.py +0 -0
  181. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/traceability/traceability_handler.py +0 -0
  182. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/__init__.py +0 -0
  183. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/data_validators_utils.py +0 -0
  184. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/date_format_utils.py +0 -0
  185. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/date_utils.py +0 -0
  186. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/string_utils.py +0 -0
  187. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/template_renderer.py +0 -0
  188. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_debug_utils.py +0 -0
  189. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_local_storage.py +0 -0
  190. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_log_traker.py +0 -0
  191. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/__init__.py +0 -0
  192. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/__init__.py +0 -0
  193. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/utils/__init__.py +0 -0
  194. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/utils/test_aws_utility.py +0 -0
  195. {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/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.184
3
+ Version: 0.0.185
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.184
3
+ Version: 0.0.185
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
@@ -113,6 +113,7 @@ shared_kernel/interfaces/__init__.py
113
113
  shared_kernel/interfaces/base_job_handler.py
114
114
  shared_kernel/interfaces/data_warehouse_handler.py
115
115
  shared_kernel/interfaces/databus.py
116
+ shared_kernel/interfaces/encryption.py
116
117
  shared_kernel/interfaces/http.py
117
118
  shared_kernel/interfaces/keyvault.py
118
119
  shared_kernel/interfaces/query_executor.py
@@ -148,6 +149,9 @@ shared_kernel/schema_onboarding_tracker/task_manager.py
148
149
  shared_kernel/schema_onboarding_tracker/template_manager.py
149
150
  shared_kernel/schema_onboarding_tracker/utility_manager.py
150
151
  shared_kernel/security/__init__.py
152
+ shared_kernel/security/encryption/__init__.py
153
+ shared_kernel/security/encryption/manager.py
154
+ shared_kernel/security/encryption/providers.py
151
155
  shared_kernel/security/key_vault/__init__.py
152
156
  shared_kernel/security/key_vault/aws_secret_manager.py
153
157
  shared_kernel/security/key_vault/azure_keyvault.py
@@ -165,6 +169,7 @@ shared_kernel/tests/messaging/__init__.py
165
169
  shared_kernel/tests/messaging/test_aws_databus.py
166
170
  shared_kernel/tests/messaging/test_event_executor.py
167
171
  shared_kernel/tests/messaging/test_nats_interface.py
172
+ shared_kernel/tests/security/test_encryption.py
168
173
  shared_kernel/tests/utils/__init__.py
169
174
  shared_kernel/tests/utils/test_data_validators.py
170
175
  shared_kernel/tests/utils/test_date_format_utils.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.184"
7
+ version = "0.0.185"
8
8
  requires-python = ">=3.7"
9
9
  readme = "README_pypi.md"
10
10
  description = "Shared library for microservice"
@@ -2,3 +2,4 @@ from shared_kernel.interfaces.databus import *
2
2
  from shared_kernel.interfaces.data_warehouse_handler import *
3
3
  from shared_kernel.interfaces.keyvault import *
4
4
  from shared_kernel.interfaces.http import *
5
+ from shared_kernel.interfaces.encryption import *
@@ -0,0 +1,33 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class EncryptionProviderInterface(ABC):
5
+ """
6
+ Abstract interface for encryption/decryption providers.
7
+ """
8
+
9
+ @abstractmethod
10
+ def encrypt(self, plaintext: str) -> str:
11
+ """
12
+ Encrypts the plaintext string and returns the base64-encoded ciphertext.
13
+
14
+ Args:
15
+ plaintext (str): The plaintext string to encrypt.
16
+
17
+ Returns:
18
+ str: The base64-encoded ciphertext string.
19
+ """
20
+ pass
21
+
22
+ @abstractmethod
23
+ def decrypt(self, ciphertext: str) -> str:
24
+ """
25
+ Decrypts the base64-encoded ciphertext and returns the plaintext string.
26
+
27
+ Args:
28
+ ciphertext (str): The base64-encoded ciphertext string.
29
+
30
+ Returns:
31
+ str: The decrypted plaintext string.
32
+ """
33
+ pass
@@ -0,0 +1,2 @@
1
+ from shared_kernel.security.key_vault import *
2
+ from shared_kernel.security.encryption import *
@@ -0,0 +1,4 @@
1
+ from shared_kernel.security.encryption.manager import EncryptionManager
2
+ from shared_kernel.interfaces.encryption import EncryptionProviderInterface
3
+
4
+ __all__ = ["EncryptionManager", "EncryptionProviderInterface"]
@@ -0,0 +1,84 @@
1
+ from typing import Dict, Any, Optional
2
+ from shared_kernel.interfaces.encryption import EncryptionProviderInterface
3
+ from shared_kernel.exceptions import EncryptionError
4
+ from shared_kernel.security.encryption.providers import (
5
+ BasicEncryptionProvider,
6
+ AwsKmsProvider,
7
+ AzureKeyVaultCryptoProvider,
8
+ )
9
+
10
+
11
+ class EncryptionManager:
12
+ """
13
+ Factory manager for creating encryption providers and orchestrating
14
+ encryption and decryption operations.
15
+ """
16
+
17
+ def __init__(
18
+ self,
19
+ method: str,
20
+ key: Optional[str] = None,
21
+ config: Optional[Dict[str, Any]] = None,
22
+ ):
23
+ """
24
+ Initializes the EncryptionManager with the specified method, key, and config.
25
+
26
+ Args:
27
+ method (str): The encryption method (e.g., 'BASIC', 'AWS_KMS', 'AZURE_KEYVAULT').
28
+ key (str, optional): The encryption key or identifier.
29
+ config (dict, optional): Additional configuration for cloud provider clients.
30
+ """
31
+ self._provider = self._resolve_provider(method, key, config or {})
32
+
33
+ def _resolve_provider(
34
+ self, method: str, key: Optional[str], config: Dict[str, Any]
35
+ ) -> EncryptionProviderInterface:
36
+ """
37
+ Resolves and instantiates the proper encryption provider.
38
+ """
39
+ method_upper = method.upper()
40
+
41
+ if method_upper in ["BASIC", "SYMMETRIC", "FERNET"]:
42
+ return BasicEncryptionProvider(key, config)
43
+ # elif method_upper == "AWS_KMS":
44
+ # return AwsKmsProvider(key, config)
45
+ # elif method_upper in ["AZURE_KEYVAULT", "AZURE_KMS"]:
46
+ # return AzureKeyVaultCryptoProvider(key, config)
47
+ else:
48
+ raise ValueError(f"Unsupported encryption method: {method}")
49
+
50
+ def encrypt(self, plaintext: str) -> str:
51
+ """
52
+ Encrypts the plaintext string using the configured provider.
53
+
54
+ Args:
55
+ plaintext (str): The string to encrypt.
56
+
57
+ Returns:
58
+ str: Base64-encoded encrypted ciphertext.
59
+ """
60
+ if not isinstance(plaintext, str):
61
+ raise TypeError("Plaintext must be a string")
62
+
63
+ try:
64
+ return self._provider.encrypt(plaintext)
65
+ except Exception as e:
66
+ raise EncryptionError("Encryption failed", detail=str(e))
67
+
68
+ def decrypt(self, ciphertext: str) -> str:
69
+ """
70
+ Decrypts the ciphertext string using the configured provider.
71
+
72
+ Args:
73
+ ciphertext (str): The base64-encoded ciphertext to decrypt.
74
+
75
+ Returns:
76
+ str: Decrypted plaintext string.
77
+ """
78
+ if not isinstance(ciphertext, str):
79
+ raise TypeError("Ciphertext must be a string")
80
+
81
+ try:
82
+ return self._provider.decrypt(ciphertext)
83
+ except Exception as e:
84
+ raise EncryptionError("Decryption failed", detail=str(e))
@@ -0,0 +1,96 @@
1
+ import base64
2
+ import hashlib
3
+ import os
4
+ from typing import Dict, Any, Optional
5
+ from cryptography.fernet import Fernet
6
+ from shared_kernel.interfaces.encryption import EncryptionProviderInterface
7
+
8
+
9
+ class BasicEncryptionProvider(EncryptionProviderInterface):
10
+ """
11
+ Symmetric encryption provider using cryptography Fernet.
12
+ """
13
+
14
+ def __init__(self, key: Optional[str] = None, config: Optional[Dict[str, Any]] = None):
15
+ """
16
+ Initializes the BasicEncryptionProvider with a symmetric key.
17
+
18
+ Args:
19
+ key (str, optional): The encryption key. If not provided,
20
+ it will attempt to read config or environment.
21
+ config (dict, optional): Configuration dictionary.
22
+ """
23
+ cfg = config or {}
24
+ raw_key = key or cfg.get("encryption_key") or os.getenv("FDC_ENCRYPTION_KEY")
25
+
26
+ if not raw_key:
27
+ raise ValueError("Encryption key must be provided for basic encryption.")
28
+
29
+ self._fernet = self._setup_fernet(raw_key)
30
+
31
+ def _setup_fernet(self, raw_key: str) -> Fernet:
32
+ """
33
+ Sets up the Fernet instance, deriving a key if the raw key is not valid.
34
+ """
35
+ try:
36
+ key_bytes = raw_key.encode("utf-8")
37
+ decoded = base64.urlsafe_b64decode(key_bytes)
38
+ if len(decoded) == 32:
39
+ return Fernet(key_bytes)
40
+ except Exception:
41
+ pass
42
+
43
+ # Derive a 32-byte key using SHA-256 for non-Fernet formatted keys
44
+ derived = hashlib.sha256(raw_key.encode("utf-8")).digest()
45
+ fernet_key = base64.urlsafe_b64encode(derived)
46
+ return Fernet(fernet_key)
47
+
48
+ def encrypt(self, plaintext: str) -> str:
49
+ """
50
+ Encrypts the plaintext string.
51
+ """
52
+ if not plaintext:
53
+ return ""
54
+ data_bytes = plaintext.encode("utf-8")
55
+ token = self._fernet.encrypt(data_bytes)
56
+ return token.decode("utf-8")
57
+
58
+ def decrypt(self, ciphertext: str) -> str:
59
+ """
60
+ Decrypts the ciphertext string.
61
+ """
62
+ if not ciphertext:
63
+ return ""
64
+ token_bytes = ciphertext.encode("utf-8")
65
+ decrypted = self._fernet.decrypt(token_bytes)
66
+ return decrypted.decode("utf-8")
67
+
68
+
69
+ class AwsKmsProvider(EncryptionProviderInterface):
70
+ """
71
+ AWS KMS encryption provider stub.
72
+ """
73
+
74
+ def __init__(self, key: Optional[str] = None, config: Optional[Dict[str, Any]] = None):
75
+ raise NotImplementedError("AwsKmsProvider is not implemented yet.")
76
+
77
+ def encrypt(self, plaintext: str) -> str:
78
+ raise NotImplementedError("AwsKmsProvider is not implemented yet.")
79
+
80
+ def decrypt(self, ciphertext: str) -> str:
81
+ raise NotImplementedError("AwsKmsProvider is not implemented yet.")
82
+
83
+
84
+ class AzureKeyVaultCryptoProvider(EncryptionProviderInterface):
85
+ """
86
+ Azure Key Vault Keys Cryptography provider stub.
87
+ """
88
+
89
+ def __init__(self, key: Optional[str] = None, config: Optional[Dict[str, Any]] = None):
90
+ raise NotImplementedError("AzureKeyVaultCryptoProvider is not implemented yet.")
91
+
92
+ def encrypt(self, plaintext: str) -> str:
93
+ raise NotImplementedError("AzureKeyVaultCryptoProvider is not implemented yet.")
94
+
95
+ def decrypt(self, ciphertext: str) -> str:
96
+ raise NotImplementedError("AzureKeyVaultCryptoProvider is not implemented yet.")
@@ -0,0 +1,105 @@
1
+ import pytest
2
+ from shared_kernel.exceptions import EncryptionError
3
+ from shared_kernel.security.encryption import EncryptionManager
4
+ from shared_kernel.security.encryption.providers import BasicEncryptionProvider
5
+
6
+
7
+ def test_basic_provider_roundtrip():
8
+ """
9
+ Test that encrypting and decrypting with BasicEncryptionProvider works.
10
+ """
11
+ key = "my_super_secret_raw_key"
12
+ provider = BasicEncryptionProvider(key=key)
13
+ plaintext = "Hello, FactWeavers!"
14
+
15
+ ciphertext = provider.encrypt(plaintext)
16
+ assert ciphertext != plaintext
17
+
18
+ decrypted = provider.decrypt(ciphertext)
19
+ assert decrypted == plaintext
20
+
21
+
22
+ def test_basic_provider_empty_and_none():
23
+ """
24
+ Test that empty input strings yield empty output in BasicEncryptionProvider.
25
+ """
26
+ provider = BasicEncryptionProvider(key="some_key")
27
+ assert provider.encrypt("") == ""
28
+ assert provider.decrypt("") == ""
29
+
30
+
31
+ def test_encryption_manager_basic_selection():
32
+ """
33
+ Test that EncryptionManager properly routes BASIC method.
34
+ """
35
+ manager = EncryptionManager(method="BASIC", key="another_secret_key")
36
+ plaintext = "Sensitive data here"
37
+
38
+ ciphertext = manager.encrypt(plaintext)
39
+ decrypted = manager.decrypt(ciphertext)
40
+ assert decrypted == plaintext
41
+
42
+
43
+ def test_encryption_manager_unsupported_method():
44
+ """
45
+ Test that unsupported encryption methods raise ValueError.
46
+ """
47
+ with pytest.raises(ValueError) as excinfo:
48
+ EncryptionManager(method="SUPER_CRYPT", key="key")
49
+ assert "Unsupported encryption method" in str(excinfo.value)
50
+
51
+
52
+ def test_encryption_manager_type_checks():
53
+ """
54
+ Test that EncryptionManager raises TypeError for non-string inputs.
55
+ """
56
+ manager = EncryptionManager(method="fernet", key="key")
57
+
58
+ with pytest.raises(TypeError):
59
+ manager.encrypt(12345) # type: ignore
60
+
61
+ with pytest.raises(TypeError):
62
+ manager.decrypt(dict()) # type: ignore
63
+
64
+
65
+ def test_encryption_manager_not_implemented_stubs():
66
+ """
67
+ Test that unimplemented methods raise NotImplementedError on instantiation.
68
+ """
69
+ with pytest.raises(NotImplementedError) as excinfo:
70
+ EncryptionManager(method="AWS_KMS", key="key")
71
+ assert "AwsKmsProvider is not implemented yet" in str(excinfo.value)
72
+
73
+ with pytest.raises(NotImplementedError) as excinfo2:
74
+ EncryptionManager(method="AZURE_KEYVAULT", key="key")
75
+ assert "AzureKeyVaultCryptoProvider is not implemented yet" in str(excinfo2.value)
76
+
77
+
78
+ def test_encrypted_json_field_direct():
79
+ """
80
+ Test the EncryptedJSONField's preparation and DB value load methods directly
81
+ without needing a database backend setup.
82
+ """
83
+ from llm.models import EncryptedJSONField
84
+
85
+ field = EncryptedJSONField()
86
+ payload = {"api_key": "my_val", "other": 123}
87
+
88
+ # 1. get_prep_value should serialize and encrypt the dictionary
89
+ prep_value = field.get_prep_value(payload)
90
+ assert isinstance(prep_value, str)
91
+ assert "my_val" not in prep_value
92
+
93
+ # 2. from_db_value should decrypt and deserialize the value
94
+ loaded_value = field.from_db_value(prep_value, None, None)
95
+ assert loaded_value == payload
96
+
97
+ # 3. None inputs should be handled gracefully
98
+ assert field.get_prep_value(None) is None
99
+ assert field.from_db_value(None, None, None) is None
100
+
101
+ # 4. If value is not a string, from_db_value returns it as is (backward compatibility)
102
+ assert field.from_db_value(payload, None, None) == payload
103
+
104
+ # 5. Already encrypted strings passed to get_prep_value are returned unchanged
105
+ assert field.get_prep_value(prep_value) == prep_value
@@ -1 +0,0 @@
1
- from shared_kernel.security.key_vault import *