pyvider 2025-10-09
Complete rewrite of the encryption module with modern security practices (random salt per...
58 files · 6,538+ · 819-

Encryption Module Rewrite

33 files changed
  • encryption.py Updated encryption.py (+356/-65 lines)
  • settings.local.json Updated settings.local.json (+16/-2 lines)
  • .gitignore Added .gitignore (+2 lines)
  • .venv_darwin_arm64 Added .venv_darwin_arm64 (+1 lines)
  • FOUNDATION_INTEGRATION_PLAN.md Added FOUNDATION_INTEGRATION_PLAN.md (+890 lines)
  • coverage.json Added coverage.json (+1 lines)
  • pyproject.toml Updated pyproject.toml (+1/-1 lines)
  • __main__.py Updated __main__.py (+6/-1 lines)
  • utils.py Updated utils.py (+102/-31 lines)
  • __init__.py Added __init__.py (+69 lines)
  • apply_resource_change.py Added apply_resource_change.py (+23 lines)
  • call_function.py Added call_function.py (+23 lines)
  • close_ephemeral_resource.py Added close_ephemeral_resource.py (+25 lines)
  • configure_provider.py Added configure_provider.py (+23 lines)
  • get_functions.py Added get_functions.py (+23 lines)
  • get_metadata.py Added get_metadata.py (+23 lines)
  • get_provider_schema.py Added get_provider_schema.py (+23 lines)
  • import_resource_state.py Added import_resource_state.py (+26 lines)
  • move_resource_state.py Added move_resource_state.py (+26 lines)
  • open_ephemeral_resource.py Added open_ephemeral_resource.py (+25 lines)
  • plan_resource_change.py Added plan_resource_change.py (+24 lines)
  • read_data_source.py Added read_data_source.py (+27 lines)
  • read_resource.py Added read_resource.py (+22 lines)
  • renew_ephemeral_resource.py Added renew_ephemeral_resource.py (+25 lines)
  • stop_provider.py Updated stop_provider.py (+23/-1 lines)
  • upgrade_resource_state.py Added upgrade_resource_state.py (+25 lines)
  • validate_data_resource_config.py Added validate_data_resource_config.py (+26 lines)
  • validate_ephemeral_resource_config.py Added validate_ephemeral_resource_config.py (+25 lines)
  • validate_provider_config.py Added validate_provider_config.py (+24 lines)
  • validate_resource_config.py Added validate_resource_config.py (+27 lines)
  • context.py Updated context.py (+1/-1 lines)
  • lifecycle.py Updated lifecycle.py (+2/-2 lines)
  • uv.lock Updated uv.lock (+2233/-602 lines)
  • Rewrote src/pyvider/common/encryption.py from a simple module-level function approach to a full EncryptionManager class decouple internal
    1 file
    • encryption.py
  • New encryption format: [1 byte: version][16 bytes: salt][12 bytes: nonce][N bytes: ciphertext+tag] baseline errata
    1 file
    • encryption.py
  • Random salt per encryption operation (prevents rainbow table attacks) replacing the static salt approach decouple internal
    1 file
    • encryption.py
  • Thread-safe key caching using threading.Lock instead of global mutable _ENCRYPTION_KEY baseline internal
    1 file
    • encryption.py
  • Added version byte (0x01) for future algorithm flexibility baseline internal
    1 file
    • encryption.py
  • Added custom EncryptionError exception class instantiate internal
    1 file
    • encryption.py
  • Replaced FrameworkConfigurationError with ConfigurationError from provide.foundation decouple internal
    1 file
    • encryption.py
  • Added comprehensive error messages as module-level constants instantiate internal
    1 file
    • encryption.py
  • Added structured logging throughout encryption operations instantiate behavioral
    1 file
    • encryption.py

Foundation Logger Initialization

2 files changed
  • __init__.py Changes to __init__.py
  • __init__.py Changes to __init__.py
  • Added logger.debug("Pyvider CLI starting") to CLI entry point to trigger foundation logging auto-initialization in CLI mode instantiate behavioral
    2 files
    • __init__.py
    • __init__.py

Observability Metrics

25 files changed
  • metrics.py Added metrics.py (+147 lines)
  • test_metrics.py Added test_metrics.py (+358 lines)
  • test_decorators.py Added test_decorators.py (+99 lines)
  • test_cli_entrypoints.py Added test_cli_entrypoints.py (+64 lines)
  • test_cli_utils.py Added test_cli_utils.py (+180 lines)
  • test_install_utils.py Added test_install_utils.py (+187 lines)
  • test_attrs_factory.py Added test_attrs_factory.py (+89 lines)
  • test_availability.py Added test_availability.py (+83 lines)
  • test_base_context.py Added test_base_context.py (+64 lines)
  • test_encryption_unit.py Updated test_encryption_unit.py (+131/-109 lines)
  • test_launch_context.py Added test_launch_context.py (+163 lines)
  • test_launch_context_extra.py Added test_launch_context_extra.py (+86 lines)
  • test_context_package.py Added test_context_package.py (+14 lines)
  • test_utils.py Added test_utils.py (+65 lines)
  • test_private_state_encryption.py Updated test_private_state_encryption.py (+5/-4 lines)
  • __init__.py Added __init__.py (+1 lines)
  • test_handler_metrics.py Added test_handler_metrics.py (+194 lines)
  • test_service.py Added test_service.py (+104 lines)
  • test_exceptions.py Added test_exceptions.py (+34 lines)
  • test_lifecycle.py Added test_lifecycle.py (+38 lines)
  • test_resource_context.py Added test_resource_context.py (+40 lines)
  • test_resource_protocol.py Added test_resource_protocol.py (+34 lines)
  • test_exceptions.py Added test_exceptions.py (+56 lines)
  • test_handler.py Added test_handler.py (+98 lines)
  • test_version.py Added test_version.py (+36 lines)
  • Added tests/observability/test_metrics.py (358 lines) for metrics/observability contract testing qualify internal
    2 files
    • metrics.py
    • test_metrics.py