octopize.deploy_tool 2.4.0__tar.gz → 2.7.0__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 (435) hide show
  1. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/.gitignore +4 -1
  2. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/PKG-INFO +2 -5
  3. octopize_deploy_tool-2.7.0/infra/deployment/deployment-tool/src/octopize_avatar_deploy/steps/user.py +20 -0
  4. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/pyproject.toml +25 -53
  5. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/__init__.py +1 -3
  6. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/__init__.py +1 -0
  7. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/apply_command.py +137 -0
  8. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/checks.py +362 -0
  9. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/commands/install_command.py +219 -0
  10. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/commands/migrate_command.py +344 -0
  11. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/commands/subcommand_ports.py +59 -0
  12. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/commands/update_command.py +273 -0
  13. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/configure_command.py +257 -0
  14. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/configure_resume_policy.py +70 -0
  15. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/deployment_paths.py +91 -0
  16. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/diff_command.py +495 -0
  17. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/ports.py +357 -0
  18. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/render_command.py +234 -0
  19. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/application/start_command.py +165 -0
  20. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/authentik_migration.py +6 -6
  21. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/cli.py +1284 -0
  22. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/cli_test_harness.py +4 -7
  23. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/configurator.py +198 -0
  24. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/configure.py +147 -289
  25. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/defaults.yaml +1 -1
  26. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/__init__.py +1 -0
  27. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/configure_preset.py +52 -0
  28. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/deployment_item.py +131 -0
  29. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/deployment_item_registry.py +496 -0
  30. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/deployment_state.py +68 -0
  31. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/validation.py +115 -0
  32. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/domain/version_id.py +69 -0
  33. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/download_templates.py +11 -11
  34. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/generate_env_paths.py +3 -2
  35. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/__init__.py +1 -0
  36. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/configurator_runner_adapter.py +244 -0
  37. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/current_version_resolver.py +39 -0
  38. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/docker_client.py +116 -0
  39. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/filesystem_directory_copier.py +73 -0
  40. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/filesystem_directory_reader.py +34 -0
  41. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/filesystem_file_writer.py +35 -0
  42. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/filesystem_legacy_source.py +81 -0
  43. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/filesystem_symlink_updater.py +34 -0
  44. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/in_memory_state_repository.py +51 -0
  45. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/noop_docker_client.py +47 -0
  46. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/package_defaults_source.py +28 -0
  47. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/package_template_provider.py +41 -0
  48. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/package_version_provider.py +13 -0
  49. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/preset_loader.py +186 -0
  50. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/system_clock.py +13 -0
  51. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/yaml_config_source.py +45 -0
  52. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/infra/yaml_state_repository.py +121 -0
  53. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/input_gatherer.py +19 -17
  54. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/normalizers.py +43 -0
  55. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/printer.py +46 -1
  56. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/public_url.py +8 -2
  57. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/renderer.py +198 -0
  58. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/state_manager.py +91 -7
  59. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/api_local_source.py +2 -2
  60. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/authentik.py +11 -2
  61. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/base.py +16 -108
  62. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/component_selection.py +1 -4
  63. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/email.py +64 -54
  64. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/local_source.py +2 -1
  65. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/nginx.py +165 -2
  66. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/required.py +9 -4
  67. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/storage.py +0 -1
  68. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/target_environment.py +4 -1
  69. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/steps/telemetry.py +120 -0
  70. octopize_deploy_tool-2.7.0/src/octopize_avatar_deploy/steps/user.py +20 -0
  71. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/template_provisioning.py +4 -1
  72. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/_env_fragment_api.template +13 -12
  73. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/api.env.template +8 -8
  74. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/docker-compose.yml.template +2 -20
  75. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/version_compat.py +21 -21
  76. octopize_deploy_tool-2.7.0/tests/TESTING.md +574 -0
  77. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/conftest.py +70 -134
  78. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/__init__.py +2 -2
  79. {octopize_deploy_tool-2.4.0/tests/fixtures/config_round_trip_first → octopize_deploy_tool-2.7.0/tests/fixtures/basic_deployment}/expected/.deployment-state.yaml +38 -12
  80. {octopize_deploy_tool-2.4.0/tests/fixtures/config_round_trip_second → octopize_deploy_tool-2.7.0/tests/fixtures/basic_deployment}/expected/.env +21 -24
  81. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/docker-compose.yml +4 -22
  82. octopize_deploy_tool-2.7.0/tests/fixtures/basic_deployment/input.yaml +17 -0
  83. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/output.txt +29 -7
  84. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/.deployment-state.yaml +38 -12
  85. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/.env +21 -24
  86. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/docker-compose.yml +4 -22
  87. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/input.yaml +1 -1
  88. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/output.txt +29 -7
  89. {octopize_deploy_tool-2.4.0/tests/fixtures/config_round_trip_second → octopize_deploy_tool-2.7.0/tests/fixtures/config_round_trip_first}/expected/.deployment-state.yaml +38 -12
  90. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/.env +21 -24
  91. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/deployment-config.yaml +14 -12
  92. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/docker-compose.yml +4 -22
  93. {octopize_deploy_tool-2.4.0/tests/fixtures/basic_deployment → octopize_deploy_tool-2.7.0/tests/fixtures/config_round_trip_second}/expected/.deployment-state.yaml +38 -12
  94. {octopize_deploy_tool-2.4.0/tests/fixtures/basic_deployment → octopize_deploy_tool-2.7.0/tests/fixtures/config_round_trip_second}/expected/.env +21 -24
  95. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/docker-compose.yml +4 -22
  96. octopize_deploy_tool-2.7.0/tests/fixtures/configure_happy_path/expected/.deployment_states/v1/deployment_state.yaml +226 -0
  97. {octopize_deploy_tool-2.4.0/tests/fixtures/basic_deployment → octopize_deploy_tool-2.7.0/tests/fixtures/configure_happy_path}/input.yaml +1 -0
  98. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry → octopize_deploy_tool-2.7.0/tests/fixtures/configure_happy_path}/output.txt +0 -28
  99. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/.deployment-state.yaml +44 -18
  100. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/.env +20 -23
  101. octopize_deploy_tool-2.7.0/tests/fixtures/dev_mode_deployment/expected/docker-compose.yml +592 -0
  102. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/input.yaml +0 -1
  103. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/output.txt +29 -7
  104. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/from/.env +3 -0
  105. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/from/nginx/nginx.conf +5 -0
  106. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/output.txt +29 -0
  107. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/to/.env +3 -0
  108. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/to/docker-compose.yml +4 -0
  109. octopize_deploy_tool-2.7.0/tests/fixtures/diff_integration/to/nginx/nginx.conf +5 -0
  110. octopize_deploy_tool-2.7.0/tests/fixtures/generate_env_output_dir_error/output.txt +3 -0
  111. octopize_deploy_tool-2.7.0/tests/fixtures/help/output.txt +26 -0
  112. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/.env +21 -24
  113. octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output/.permissions.json +33 -0
  114. octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output/docker-compose.yml +592 -0
  115. octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output/.env +89 -0
  116. octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output/.permissions.json +33 -0
  117. octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output/docker-compose.yml +592 -0
  118. octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output/nginx/nginx.conf +112 -0
  119. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/invalid_port_config/output.txt +29 -7
  120. octopize_deploy_tool-2.7.0/tests/fixtures/missing_subcommand/output.txt +3 -0
  121. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/no_telemetry/expected/.deployment-state.yaml +38 -12
  122. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/no_telemetry/expected/.env +20 -23
  123. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/branding/favicon.ico +0 -0
  124. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/branding/logo.png +0 -0
  125. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  126. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_exists.html +126 -0
  127. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  128. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  129. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_password_changed.html +111 -0
  130. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_password_reset.html +109 -0
  131. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/octopize-avatar-blueprint.yaml +1738 -0
  132. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/authentik/translations.json +24 -0
  133. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/expected/docker-compose.yml +592 -0
  134. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/no_telemetry/input.yaml +0 -1
  135. octopize_deploy_tool-2.7.0/tests/fixtures/no_telemetry/output.txt +121 -0
  136. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_complete/config.yaml +5 -3
  137. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_complete/expected/.deployment-state.yaml +41 -17
  138. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/.env +89 -0
  139. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/branding/favicon.ico +0 -0
  140. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/branding/logo.png +0 -0
  141. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  142. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_exists.html +126 -0
  143. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  144. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  145. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_password_changed.html +111 -0
  146. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_password_reset.html +109 -0
  147. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/octopize-avatar-blueprint.yaml +1738 -0
  148. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/authentik/translations.json +24 -0
  149. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/docker-compose.yml +592 -0
  150. octopize_deploy_tool-2.7.0/tests/fixtures/non_interactive_complete/expected/nginx/nginx.conf +112 -0
  151. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_complete/output.txt +29 -7
  152. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_incomplete_config/output.txt +29 -7
  153. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_partial_config/output.txt +29 -7
  154. octopize_deploy_tool-2.7.0/tests/fixtures/output_dir_nested/output.txt +121 -0
  155. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/prompt_help/input.yaml +1 -0
  156. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/prompt_help/output.txt +29 -7
  157. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/resume_interrupted/first_run/output.txt +14 -0
  158. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/resume_interrupted/input_first_run.yaml +3 -2
  159. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/resume_interrupted/input_resume.yaml +1 -1
  160. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/resume_interrupted/resume/output.txt +34 -12
  161. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/save_config_interactive/output.txt +29 -7
  162. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/save_config_with_existing/input.yaml +1 -1
  163. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/save_config_with_existing/output.txt +29 -7
  164. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/template_from_local_verbose/output.txt +1 -1
  165. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/type_mismatch_config/output.txt +29 -7
  166. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/base_v1/generated_files/.env +89 -0
  167. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/.env +89 -0
  168. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/.permissions.json +33 -0
  169. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/branding/favicon.ico +0 -0
  170. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/branding/logo.png +0 -0
  171. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_account_confirmation.html +93 -0
  172. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_account_exists.html +126 -0
  173. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_account_invitation.html +159 -0
  174. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_forgotten_password.html +124 -0
  175. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_password_changed.html +111 -0
  176. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/custom-templates/email_password_reset.html +109 -0
  177. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/octopize-avatar-blueprint.yaml +1738 -0
  178. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/authentik/translations.json +24 -0
  179. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/docker-compose.yml +592 -0
  180. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_apply_output/nginx/nginx.conf +112 -0
  181. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/.env +89 -0
  182. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/.permissions.json +33 -0
  183. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/branding/favicon.ico +0 -0
  184. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/branding/logo.png +0 -0
  185. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_account_confirmation.html +93 -0
  186. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_account_exists.html +126 -0
  187. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_account_invitation.html +159 -0
  188. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_forgotten_password.html +124 -0
  189. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_password_changed.html +111 -0
  190. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/custom-templates/email_password_reset.html +109 -0
  191. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/octopize-avatar-blueprint.yaml +1738 -0
  192. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/authentik/translations.json +24 -0
  193. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/docker-compose.yml +592 -0
  194. octopize_deploy_tool-2.7.0/tests/fixtures/update_interactive_diff/expected_render_output/nginx/nginx.conf +112 -0
  195. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/base_v1/generated_files/.env +89 -0
  196. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/.env +89 -0
  197. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/.permissions.json +33 -0
  198. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/branding/favicon.ico +0 -0
  199. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/branding/logo.png +0 -0
  200. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_account_confirmation.html +93 -0
  201. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_account_exists.html +126 -0
  202. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_account_invitation.html +159 -0
  203. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_forgotten_password.html +124 -0
  204. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_password_changed.html +111 -0
  205. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/custom-templates/email_password_reset.html +109 -0
  206. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/octopize-avatar-blueprint.yaml +1738 -0
  207. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/authentik/translations.json +24 -0
  208. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/docker-compose.yml +592 -0
  209. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_apply_output/nginx/nginx.conf +112 -0
  210. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/.env +89 -0
  211. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/.permissions.json +33 -0
  212. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/branding/favicon.ico +0 -0
  213. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/branding/logo.png +0 -0
  214. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_account_confirmation.html +93 -0
  215. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_account_exists.html +126 -0
  216. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_account_invitation.html +159 -0
  217. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_forgotten_password.html +124 -0
  218. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_password_changed.html +111 -0
  219. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/custom-templates/email_password_reset.html +109 -0
  220. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/octopize-avatar-blueprint.yaml +1738 -0
  221. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/authentik/translations.json +24 -0
  222. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/docker-compose.yml +592 -0
  223. octopize_deploy_tool-2.7.0/tests/fixtures/update_noninteractive_clean/expected_render_output/nginx/nginx.conf +112 -0
  224. octopize_deploy_tool-2.7.0/tests/helpers/__init__.py +1 -0
  225. octopize_deploy_tool-2.7.0/tests/helpers/fakes.py +333 -0
  226. octopize_deploy_tool-2.7.0/tests/helpers/fixture_dir_comparison.py +194 -0
  227. octopize_deploy_tool-2.7.0/tests/helpers/normalization.py +206 -0
  228. octopize_deploy_tool-2.7.0/tests/helpers/printers.py +62 -0
  229. octopize_deploy_tool-2.7.0/tests/integration/__init__.py +9 -0
  230. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/integration/test_cli_integration.py +62 -12
  231. octopize_deploy_tool-2.7.0/tests/integration/test_configure_command.py +690 -0
  232. octopize_deploy_tool-2.7.0/tests/integration/test_diff_command.py +245 -0
  233. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/integration/test_generate_env.py +6 -2
  234. octopize_deploy_tool-2.7.0/tests/integration/test_install_command.py +129 -0
  235. octopize_deploy_tool-2.7.0/tests/integration/test_update_command.py +288 -0
  236. octopize_deploy_tool-2.7.0/tests/unit/infra/__init__.py +0 -0
  237. octopize_deploy_tool-2.7.0/tests/unit/infra/conftest.py +70 -0
  238. octopize_deploy_tool-2.7.0/tests/unit/infra/test_configure_runner_adapter.py +143 -0
  239. octopize_deploy_tool-2.7.0/tests/unit/infra/test_filesystem_directory_copier.py +101 -0
  240. octopize_deploy_tool-2.7.0/tests/unit/infra/test_filesystem_legacy_source.py +62 -0
  241. octopize_deploy_tool-2.7.0/tests/unit/infra/test_preset_loader.py +132 -0
  242. octopize_deploy_tool-2.7.0/tests/unit/infra/test_yaml_config_source.py +30 -0
  243. octopize_deploy_tool-2.7.0/tests/unit/infra/test_yaml_deployment_state_repository.py +83 -0
  244. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_api_local_source.py +1 -1
  245. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_base.py +2 -2
  246. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_component_selection.py +1 -2
  247. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_email.py +9 -9
  248. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_local_source.py +1 -1
  249. octopize_deploy_tool-2.7.0/tests/unit/steps/test_nginx.py +499 -0
  250. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_state_manager.py +142 -1
  251. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_storage.py +0 -3
  252. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_target_environment.py +9 -3
  253. octopize_deploy_tool-2.7.0/tests/unit/steps/test_telemetry.py +218 -0
  254. octopize_deploy_tool-2.7.0/tests/unit/steps/test_user.py +41 -0
  255. octopize_deploy_tool-2.7.0/tests/unit/test_apply_command.py +241 -0
  256. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_authentik_client.py +4 -2
  257. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_components.py +1 -2
  258. octopize_deploy_tool-2.7.0/tests/unit/test_configurator.py +390 -0
  259. octopize_deploy_tool-2.7.0/tests/unit/test_configure_command.py +959 -0
  260. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_deployment_configurator.py +46 -80
  261. octopize_deploy_tool-2.7.0/tests/unit/test_deployment_item.py +40 -0
  262. octopize_deploy_tool-2.7.0/tests/unit/test_diff_command.py +785 -0
  263. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_generate_env_cli.py +6 -9
  264. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_generic_prompt.py +2 -2
  265. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_input_gatherer.py +15 -3
  266. octopize_deploy_tool-2.7.0/tests/unit/test_install_command.py +302 -0
  267. octopize_deploy_tool-2.7.0/tests/unit/test_migrate_command.py +594 -0
  268. octopize_deploy_tool-2.7.0/tests/unit/test_normalizers.py +42 -0
  269. octopize_deploy_tool-2.7.0/tests/unit/test_preflight_checks.py +526 -0
  270. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_public_url.py +1 -1
  271. octopize_deploy_tool-2.7.0/tests/unit/test_render_command.py +547 -0
  272. octopize_deploy_tool-2.7.0/tests/unit/test_renderer.py +276 -0
  273. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_rich_implementations.py +2 -15
  274. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_step_filtering.py +0 -4
  275. octopize_deploy_tool-2.7.0/tests/unit/test_update_command.py +367 -0
  276. octopize_deploy_tool-2.7.0/tests/unit/test_version_id.py +71 -0
  277. octopize_deploy_tool-2.4.0/src/octopize_avatar_deploy/cli.py +0 -422
  278. octopize_deploy_tool-2.4.0/src/octopize_avatar_deploy/steps/telemetry.py +0 -97
  279. octopize_deploy_tool-2.4.0/src/octopize_avatar_deploy/steps/user.py +0 -67
  280. octopize_deploy_tool-2.4.0/tests/TESTING.md +0 -237
  281. octopize_deploy_tool-2.4.0/tests/fixtures/dev_mode_deployment/expected/docker-compose.yml +0 -610
  282. octopize_deploy_tool-2.4.0/tests/fixtures/generate_env_output_dir_error/output.txt +0 -2
  283. octopize_deploy_tool-2.4.0/tests/fixtures/help/output.txt +0 -13
  284. octopize_deploy_tool-2.4.0/tests/fixtures/missing_subcommand/output.txt +0 -2
  285. octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected/docker-compose.yml +0 -610
  286. octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected/docker-compose.yml +0 -610
  287. octopize_deploy_tool-2.4.0/tests/fixtures/output_dir_nested/output.txt +0 -99
  288. octopize_deploy_tool-2.4.0/tests/integration/__init__.py +0 -1
  289. octopize_deploy_tool-2.4.0/tests/steps/test_nginx.py +0 -131
  290. octopize_deploy_tool-2.4.0/tests/steps/test_telemetry.py +0 -111
  291. octopize_deploy_tool-2.4.0/tests/steps/test_user.py +0 -73
  292. octopize_deploy_tool-2.4.0/tests/steps/test_user_validation.py +0 -147
  293. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/README.md +0 -0
  294. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/components.py +0 -0
  295. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/deployment_mode.py +0 -0
  296. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/generate_env.py +0 -0
  297. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/output_spec.py +0 -0
  298. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/__init__.py +0 -0
  299. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/authentik_blueprint.py +0 -0
  300. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/database.py +0 -0
  301. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/logging.py +0 -0
  302. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/steps/service_urls.py +0 -0
  303. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/.env.template +0 -0
  304. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/.template-version +0 -0
  305. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/_env_fragment_infra.template +0 -0
  306. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/_env_fragment_web.template +0 -0
  307. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/branding/favicon.ico +0 -0
  308. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/branding/logo.png +0 -0
  309. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_account_confirmation.html +0 -0
  310. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_account_exists.html +0 -0
  311. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_account_invitation.html +0 -0
  312. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_forgotten_password.html +0 -0
  313. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_password_changed.html +0 -0
  314. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/custom-templates/email_password_reset.html +0 -0
  315. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/octopize-avatar-blueprint.yaml +0 -0
  316. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/authentik/translations.json +0 -0
  317. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/compose.override.yaml.template +0 -0
  318. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/nginx.conf.template +0 -0
  319. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/python_client.env.template +0 -0
  320. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/templates/web.env.template +0 -0
  321. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/topology_urls.py +0 -0
  322. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/src/octopize_avatar_deploy/url_contract.py +0 -0
  323. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/__init__.py +0 -0
  324. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/authentik_migration/licenses.csv +0 -0
  325. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/authentik_migration/organizations.csv +0 -0
  326. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/authentik_migration/users.csv +0 -0
  327. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/branding/favicon.ico +0 -0
  328. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/branding/logo.png +0 -0
  329. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_confirmation.html +0 -0
  330. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_exists.html +0 -0
  331. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_invitation.html +0 -0
  332. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_forgotten_password.html +0 -0
  333. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_password_changed.html +0 -0
  334. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_password_reset.html +0 -0
  335. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/octopize-avatar-blueprint.yaml +0 -0
  336. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/authentik/translations.json +0 -0
  337. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/basic_deployment/expected/nginx/nginx.conf +0 -0
  338. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/branding/favicon.ico +0 -0
  339. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/branding/logo.png +0 -0
  340. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_confirmation.html +0 -0
  341. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_exists.html +0 -0
  342. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_invitation.html +0 -0
  343. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_forgotten_password.html +0 -0
  344. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_password_changed.html +0 -0
  345. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_password_reset.html +0 -0
  346. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/octopize-avatar-blueprint.yaml +0 -0
  347. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/authentik/translations.json +0 -0
  348. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/cloud_storage/expected/nginx/nginx.conf +0 -0
  349. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_not_found/output.txt +0 -0
  350. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/branding/favicon.ico +0 -0
  351. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/branding/logo.png +0 -0
  352. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_confirmation.html +0 -0
  353. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_exists.html +0 -0
  354. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_invitation.html +0 -0
  355. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_forgotten_password.html +0 -0
  356. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_password_changed.html +0 -0
  357. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_password_reset.html +0 -0
  358. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/octopize-avatar-blueprint.yaml +0 -0
  359. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/authentik/translations.json +0 -0
  360. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_first/expected/nginx/nginx.conf +0 -0
  361. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/branding/favicon.ico +0 -0
  362. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/branding/logo.png +0 -0
  363. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_confirmation.html +0 -0
  364. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_exists.html +0 -0
  365. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_invitation.html +0 -0
  366. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_forgotten_password.html +0 -0
  367. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_password_changed.html +0 -0
  368. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_password_reset.html +0 -0
  369. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/octopize-avatar-blueprint.yaml +0 -0
  370. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/authentik/translations.json +0 -0
  371. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/config_round_trip_second/expected/nginx/nginx.conf +0 -0
  372. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/deploy_help/output.txt +0 -0
  373. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/branding/favicon.ico +0 -0
  374. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/branding/logo.png +0 -0
  375. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_account_confirmation.html +0 -0
  376. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_account_exists.html +0 -0
  377. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_account_invitation.html +0 -0
  378. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_forgotten_password.html +0 -0
  379. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_password_changed.html +0 -0
  380. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/custom-templates/email_password_reset.html +0 -0
  381. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/octopize-avatar-blueprint.yaml +0 -0
  382. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/authentik/translations.json +0 -0
  383. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/compose.override.yaml +0 -0
  384. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/nginx/nginx.conf +0 -0
  385. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/test-.npmrc +0 -0
  386. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/test-avatar-repo/services/api/main.py +0 -0
  387. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/dev_mode_deployment/expected/test-avatar-website/package.json +0 -0
  388. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/generate_env_help/output.txt +0 -0
  389. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/branding/favicon.ico +0 -0
  390. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/branding/logo.png +0 -0
  391. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_account_confirmation.html +0 -0
  392. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_account_exists.html +0 -0
  393. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_account_invitation.html +0 -0
  394. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_forgotten_password.html +0 -0
  395. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_password_changed.html +0 -0
  396. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/custom-templates/email_password_reset.html +0 -0
  397. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/octopize-avatar-blueprint.yaml +0 -0
  398. {octopize_deploy_tool-2.4.0/tests/fixtures/no_telemetry/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/authentik/translations.json +0 -0
  399. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_apply_output}/nginx/nginx.conf +0 -0
  400. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/branding/favicon.ico +0 -0
  401. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/branding/logo.png +0 -0
  402. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_account_confirmation.html +0 -0
  403. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_account_exists.html +0 -0
  404. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_account_invitation.html +0 -0
  405. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_forgotten_password.html +0 -0
  406. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_password_changed.html +0 -0
  407. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/custom-templates/email_password_reset.html +0 -0
  408. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/octopize-avatar-blueprint.yaml +0 -0
  409. {octopize_deploy_tool-2.4.0/tests/fixtures/non_interactive_complete/expected → octopize_deploy_tool-2.7.0/tests/fixtures/install_render_output}/authentik/translations.json +0 -0
  410. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/invalid_port_config/config.yaml +0 -0
  411. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/invalid_url_config/config.yaml +0 -0
  412. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/invalid_url_config/output.txt +0 -0
  413. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/malformed_yaml/config.yaml +0 -0
  414. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/malformed_yaml/output.txt +0 -0
  415. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/no_telemetry/expected/nginx/nginx.conf +0 -0
  416. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_incomplete_config/config.yaml +0 -0
  417. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_no_config/output.txt +0 -0
  418. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/non_interactive_partial_config/config.yaml +0 -0
  419. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/output_dir_permission_denied/output.txt +0 -0
  420. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/save_config_with_existing/config.yaml +0 -0
  421. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/fixtures/type_mismatch_config/config.yaml +0 -0
  422. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/test_cli_harness.py +0 -0
  423. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_authentik.py +0 -0
  424. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_authentik_blueprint.py +0 -0
  425. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_database.py +0 -0
  426. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_logging.py +0 -0
  427. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_required.py +0 -0
  428. {octopize_deploy_tool-2.4.0/tests → octopize_deploy_tool-2.7.0/tests/unit}/steps/test_service_urls.py +0 -0
  429. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_authentik_migration.py +0 -0
  430. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_compare_helpers.py +0 -0
  431. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_deployment_runner.py +0 -0
  432. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_output_spec.py +0 -0
  433. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_printer.py +0 -0
  434. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_topology_urls.py +0 -0
  435. {octopize_deploy_tool-2.4.0 → octopize_deploy_tool-2.7.0}/tests/unit/test_version_validation.py +0 -0
@@ -67,6 +67,9 @@ Thumbs.db
67
67
  .avatar-templates
68
68
  .deployment_state.yaml
69
69
  .env
70
- !tests/fixtures/**/expected/.env
70
+ !tests/fixtures/**/.env
71
71
  config.*.yaml
72
72
  !config.example.yaml
73
+ .deployment_states/*
74
+ # TLS test fixtures created dynamically by the test suite
75
+ tls/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: octopize.deploy_tool
3
- Version: 2.4.0
3
+ Version: 2.7.0
4
4
  Summary: Deployment configuration tool for Octopize Avatar platform
5
5
  Project-URL: Homepage, https://octopize.io
6
6
  Project-URL: Documentation, https://docs.octopize.io/docs/deploying/self-hosted
@@ -21,12 +21,9 @@ Requires-Python: >=3.13
21
21
  Requires-Dist: httpx>=0.28.0
22
22
  Requires-Dist: jinja2>=3.1.0
23
23
  Requires-Dist: pandas>=3.0.0
24
+ Requires-Dist: python-on-whales>=0.76.0
24
25
  Requires-Dist: pyyaml>=6.0
25
26
  Requires-Dist: rich>=13.0.0
26
- Provides-Extra: dev
27
- Requires-Dist: pyright>=1.1.402; extra == 'dev'
28
- Requires-Dist: pytest>=7.0; extra == 'dev'
29
- Requires-Dist: ruff>=0.1.0; extra == 'dev'
30
27
  Description-Content-Type: text/markdown
31
28
 
32
29
  # Octopize Avatar Deployment Tool
@@ -0,0 +1,20 @@
1
+ """User authentication configuration step."""
2
+
3
+ from typing import Any
4
+
5
+ from .base import DeploymentStep
6
+
7
+
8
+ class UserStep(DeploymentStep):
9
+ """Handles user authentication configuration."""
10
+
11
+ name = "user"
12
+ description = "Configure user authentication settings"
13
+
14
+ def collect_config(self) -> dict[str, Any]:
15
+ """Collect user authentication configuration."""
16
+ return {}
17
+
18
+ def generate_secrets(self) -> dict[str, str]:
19
+ """Generate user-related secrets."""
20
+ return {}
@@ -4,14 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "octopize.deploy_tool"
7
- version = "2.4.0"
7
+ version = "2.7.0"
8
8
  description = "Deployment configuration tool for Octopize Avatar platform"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
11
11
  license = { text = "MIT" }
12
- authors = [
13
- { name = "Octopize", email = "contact@octopize.io" }
14
- ]
12
+ authors = [{ name = "Octopize", email = "contact@octopize.io" }]
15
13
  keywords = ["octopize", "avatar", "deployment", "configuration"]
16
14
  classifiers = [
17
15
  "Development Status :: 4 - Beta",
@@ -30,13 +28,18 @@ dependencies = [
30
28
  "rich>=13.0.0",
31
29
  "httpx>=0.28.0",
32
30
  "pandas>=3.0.0",
31
+ "python-on-whales>=0.76.0",
33
32
  ]
34
33
 
35
- [project.optional-dependencies]
34
+ [dependency-groups]
36
35
  dev = [
37
- "pytest>=7.0",
36
+ "pytest>=9",
37
+ "mypy>=1.20.0",
38
38
  "pyright>=1.1.402",
39
- "ruff>=0.1.0",
39
+ "types-pyyaml>=6.0.12.20241230",
40
+ "pandas-stubs>=3.0.0",
41
+ "pytest-httpx>=0.36.0",
42
+ "pytest-cov>=7.1.0",
40
43
  ]
41
44
 
42
45
  [project.scripts]
@@ -55,36 +58,30 @@ packages = ["src/octopize_avatar_deploy"]
55
58
  "src" = ""
56
59
 
57
60
  [tool.hatch.build.targets.sdist]
58
- include = [
59
- "src/",
60
- "tests/",
61
- "README.md",
62
- "pyproject.toml",
63
- ]
61
+ include = ["src/", "tests/", "README.md", "pyproject.toml"]
64
62
 
65
63
  [tool.pytest.ini_options]
66
64
  # Test discovery
67
- testpaths = ["tests"]
68
- python_files = ["test_*.py"]
69
- python_classes = ["Test*"]
70
- python_functions = ["test_*"]
65
+ testpaths = "tests"
66
+ filterwarnings = ["error"]
67
+ # Recommended by pytest
68
+ pythonpath = "src"
71
69
 
72
70
  # Output options
73
71
  addopts = [
74
- "-v", # Verbose output
75
- "--strict-markers", # Error on unknown markers
76
- "--tb=short", # Short traceback format
77
- "--color=yes", # Colored output
78
- "-ra", # Show summary of all test results
72
+ # Recommended by pytest
73
+ # https://docs.pytest.org/en/stable/explanation/goodpractices.html#tests-outside-application-code
74
+
75
+ "--import-mode=importlib",
76
+ "--strict-markers", # Error on unknown markers
77
+ "--tb=short", # Short traceback format
78
+ "--color=yes", # Colored output
79
+ "-ra", # Show summary of all test results
79
80
  ]
80
81
 
81
82
  [tool.coverage.run]
82
83
  source = ["src/octopize_avatar_deploy"]
83
- omit = [
84
- "*/tests/*",
85
- "*/__pycache__/*",
86
- "*/.venv/*",
87
- ]
84
+ omit = ["*/tests/*", "*/__pycache__/*", "*/.venv/*"]
88
85
 
89
86
  [tool.coverage.report]
90
87
  exclude_lines = [
@@ -98,32 +95,7 @@ exclude_lines = [
98
95
  ]
99
96
 
100
97
  [tool.ruff]
101
- target-version = "py313"
102
- line-length = 100
103
-
104
- [tool.ruff.lint]
105
- extend-select = [
106
- "E", # pycodestyle errors
107
- "W", # pycodestyle warnings
108
- "F", # pyflakes
109
- "I", # isort
110
- "B", # flake8-bugbear
111
- "C4", # flake8-comprehensions
112
- "UP", # pyupgrade
113
- ]
114
-
115
-
116
- [tool.ruff.lint.isort]
117
- known-first-party = ["octopize_avatar_deploy"]
118
-
119
- [dependency-groups]
120
- dev = [
121
- "mypy>=1.20.0",
122
- "pyright>=1.1.402",
123
- "types-pyyaml>=6.0.12.20241230",
124
- "pandas-stubs>=3.0.0",
125
- "pytest-httpx>=0.36.0",
126
- ]
98
+ extend = "../../../ruff.toml"
127
99
 
128
100
  [tool.pyright]
129
101
  include = ["src/octopize_avatar_deploy"]
@@ -1,6 +1,5 @@
1
1
  """Octopize Avatar Deployment Tool."""
2
2
 
3
- from .cli import main
4
3
  from .configure import DeploymentConfigurator, DeploymentRunner
5
4
  from .printer import ConsolePrinter, Printer, SilentPrinter
6
5
  from .version_compat import (
@@ -11,9 +10,8 @@ from .version_compat import (
11
10
  validate_template_version,
12
11
  )
13
12
 
14
- __version__ = "2.4.0"
13
+ __version__ = "2.7.0"
15
14
  __all__ = [
16
- "main",
17
15
  "DeploymentRunner",
18
16
  "DeploymentConfigurator",
19
17
  "Printer",
@@ -0,0 +1 @@
1
+ """Application sub-package for deployment tool refactor (Phase 1)."""
@@ -0,0 +1,137 @@
1
+ """ApplyCommand: the Phase 1 application entry point for the apply sub-command.
2
+
3
+ ``apply`` copies a fully rendered ``generated/`` directory from a versioned
4
+ state slot into ``generated_files/`` (the directory consumed by Docker Compose)
5
+ and updates the ``currently_deployed`` symlink so the active version is always
6
+ traceable.
7
+
8
+ The operation is idempotent: applying the same version twice produces the same
9
+ ``generated_files/`` content and symlink target.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ from dataclasses import dataclass
15
+ from pathlib import Path
16
+
17
+ from octopize_avatar_deploy.application.deployment_paths import DeploymentPaths
18
+ from octopize_avatar_deploy.application.ports import DirectoryCopier, SymlinkUpdater
19
+ from octopize_avatar_deploy.domain.version_id import VersionId
20
+
21
+
22
+ class ApplyError(Exception):
23
+ """Raised when apply fails due to an operator-fixable problem.
24
+
25
+ Covers missing ``--version`` argument, references to versions whose
26
+ ``generated/`` directory does not yet exist (i.e. ``render`` was never run
27
+ for that version), or any filesystem error that maps to an operator action.
28
+
29
+ Distinct from plain ``ValueError`` or ``FileNotFoundError``, which indicate
30
+ programming-contract violations (bugs in the tool) and should surface with a
31
+ full traceback.
32
+ """
33
+
34
+
35
+ @dataclass
36
+ class ApplyCommandArgs:
37
+ """Arguments for the apply command.
38
+
39
+ ``version`` must be provided (e.g. ``"v1"``).
40
+ """
41
+
42
+ app_root: Path
43
+ version: str # explicit version label, e.g. "v1"
44
+
45
+
46
+ @dataclass
47
+ class ApplyCommandResult:
48
+ """Result returned by :meth:`ApplyCommand.run`."""
49
+
50
+ version: VersionId
51
+ output_dir: Path
52
+ symlink_target: Path
53
+
54
+
55
+ class ApplyCommand:
56
+ """Orchestrate the apply use case.
57
+
58
+ Copies ``.deployment_states/vX/generated/`` into ``generated_files/`` and
59
+ updates the ``currently_deployed`` symlink.
60
+
61
+ All side effects (directory copy and symlink update) are injected as ports
62
+ so the full use case can be exercised in tests with in-memory doubles.
63
+
64
+ Args:
65
+ directory_copier: Port that performs the full recursive copy from the
66
+ versioned ``generated/`` directory to ``generated_files/``.
67
+ symlink_updater: Port that creates or replaces the
68
+ ``currently_deployed`` symlink.
69
+ """
70
+
71
+ def __init__(
72
+ self,
73
+ *,
74
+ directory_copier: DirectoryCopier,
75
+ symlink_updater: SymlinkUpdater,
76
+ ) -> None:
77
+ self._directory_copier = directory_copier
78
+ self._symlink_updater = symlink_updater
79
+
80
+ def run(self, args: ApplyCommandArgs) -> ApplyCommandResult:
81
+ """Execute the apply use case end-to-end.
82
+
83
+ Flow:
84
+
85
+ 1. Validate argument combinations.
86
+ 2. Parse the target version label.
87
+ 3. Confirm that ``render`` has been run for this version (the
88
+ ``generated/`` directory exists).
89
+ 4. Copy ``.deployment_states/vX/generated/`` → ``generated_files/``
90
+ (full recursive copy — not a symlink — so operator edits in
91
+ ``generated_files/`` never affect the versioned reference).
92
+ 5. Update ``.deployment_states/currently_deployed`` symlink → ``vX``.
93
+ 6. Return a result.
94
+
95
+ Args:
96
+ args: Apply command arguments.
97
+
98
+ Returns:
99
+ :class:`ApplyCommandResult` with the resolved version, the
100
+ ``generated_files/`` output directory, and the symlink target path.
101
+
102
+ Raises:
103
+ ApplyError: For any operator-fixable problem: a version whose
104
+ ``generated/`` directory does not exist, or a missing version
105
+ argument.
106
+ """
107
+ try:
108
+ return self._run(args)
109
+ except ApplyError:
110
+ raise
111
+ except (ValueError, FileNotFoundError) as exc:
112
+ raise ApplyError(str(exc)) from exc
113
+
114
+ def _run(self, args: ApplyCommandArgs) -> ApplyCommandResult:
115
+ """Internal implementation called by :meth:`run`."""
116
+ # 1. Parse version.
117
+ version = VersionId.parse(args.version)
118
+ paths = DeploymentPaths(app_root=args.app_root, version=version)
119
+
120
+ # 2. Verify that render has been run (generated/ must exist).
121
+ if not self._directory_copier.source_exists(paths.generated_dir):
122
+ raise ApplyError(
123
+ f"Version {version.label!r} has not been rendered yet. "
124
+ f"Run 'render --version {version.label}' first."
125
+ )
126
+
127
+ # 3. Copy generated/ → generated_files/.
128
+ self._directory_copier.copy(paths.generated_dir, paths.generated_files_dir)
129
+
130
+ # 4. Update currently_deployed symlink.
131
+ self._symlink_updater.update(paths.currently_deployed_symlink, paths.version_dir)
132
+
133
+ return ApplyCommandResult(
134
+ version=version,
135
+ output_dir=paths.generated_files_dir,
136
+ symlink_target=paths.version_dir,
137
+ )