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.
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/PKG-INFO +1 -1
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/SOURCES.txt +5 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/pyproject.toml +1 -1
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/__init__.py +1 -0
- fdc_shared_kernel-0.0.185/shared_kernel/interfaces/encryption.py +33 -0
- fdc_shared_kernel-0.0.185/shared_kernel/security/__init__.py +2 -0
- fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/__init__.py +4 -0
- fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/manager.py +84 -0
- fdc_shared_kernel-0.0.185/shared_kernel/security/encryption/providers.py +96 -0
- fdc_shared_kernel-0.0.185/shared_kernel/tests/security/test_encryption.py +105 -0
- fdc_shared_kernel-0.0.184/shared_kernel/security/__init__.py +0 -1
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/README.md +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/README_pypi.md +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/requires.txt +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/requirements.txt +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/setup.cfg +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/agent_channel.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/contexts.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/agent_communication_channel/event_channel.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_audit_log/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_chat_persistence/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_chat_persistence/chat_persistence.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/async_task_executor/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/jwt_helper.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/token_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/auth/workbook_permission_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/__init__.py +0 -0
- {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
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/__init__.py +0 -0
- {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
- {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
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/job_handler_factory.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_handlers/job_status_mapper.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/batch_job/job_storage_managers/__init__.py +0 -0
- {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
- {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
- {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
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/config/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/constants/constants.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/databricks_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/jdbc_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/mssql_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/mysql_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/postgresql_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/redshift_warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/connections/snowflake_warehouse_connection.py +0 -0
- {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
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/databricks_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/factory.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/jdbc_driver_registry.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/jdbc_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/mssql_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/mysql_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/odbc_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/postgresql_handler.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/redshift_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/snowflake_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/data_warehouse_handlers/warehouse_handlers_map.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/database/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/aws_batch_job_context.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/azure_container_app_job_context.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/event_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/job_context.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/job_record_dataclasses.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/warehouse_configs.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/csv.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/databricks.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/db2.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/jdbc.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/jira.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/mssql.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/mysql.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/oracle.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/postgres.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/redshift.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/salesforce.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/snowflake.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/connectors_to_system/sqlalchemy.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/postgres.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/system_to_warehouse/redshift.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/async_task_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/connection_engine.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/status_tracker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/event_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/job_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/batch_job_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/custom_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/http_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/operational_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/security_exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/user_intervention_exception.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/httpx_http_client.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/request_http_client.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/base_job_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/data_warehouse_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/http.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/keyvault.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/query_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/storage_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/warehouse_connection.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/logger/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/aws_databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/azure_databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/http_databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_publisher.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_test.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/aws_utility.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/azure_utility.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/event_messages.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/metrics/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/metrics/status_tracker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/models/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/schema_onboarding_event_registry.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/service_event_registry.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/base_tracker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/enums.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/exceptions.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/run_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/schema_onboarding_tracker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/shared_helpers.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_determination.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_helpers.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/task_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/template_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/schema_onboarding_tracker/utility_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/status_tracker/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/status_tracker/status_tracker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/blob_file_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/s3_storage_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/test_config.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/test_logger.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_aws_databus.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_event_executor.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_data_validators.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/test_string_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/traceability/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/traceability/traceability_handler.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/data_validators_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/date_format_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/date_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/string_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/template_renderer.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_debug_utils.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_local_storage.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_log_traker.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/utils/__init__.py +0 -0
- {fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/utils/test_aws_utility.py +0 -0
- {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.
|
|
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.
|
|
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
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/SOURCES.txt
RENAMED
|
@@ -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
|
|
@@ -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,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 *
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/requires.txt
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/fdc_shared_kernel.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/ai_audit_log/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/constants/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/event_executor.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/dataclasses/job_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/datatype_mappings/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/async_task_executor.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/connection_engine.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/enums/status_tracker.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/job_executor.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/event_executor/utils.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/exceptions/http_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/httpx_http_client.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/http/request_http_client.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/base_job_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/keyvault.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/query_executor.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/interfaces/storage_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/aws_databus.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/azure_databus.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/http_databus.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_databus.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_publisher.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/nats_test.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/messaging/utils/aws_utility.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/metrics/status_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/security/key_vault/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/status_tracker/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/storage_handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/__init__.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/config/test_config.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/__init__.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/logger/test_logger.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/messaging/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/tests/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/traceability/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/data_validators_utils.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/date_format_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/template_renderer.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_debug_utils.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_local_storage.py
RENAMED
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/shared_kernel/utils/thread_log_traker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fdc_shared_kernel-0.0.184 → fdc_shared_kernel-0.0.185}/tests/messaging/utils/test_aws_utility.py
RENAMED
|
File without changes
|
|
File without changes
|