instant-python 0.13.0__tar.gz → 0.14.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 (406) hide show
  1. {instant_python-0.13.0 → instant_python-0.14.0}/CHANGELOG.md +112 -0
  2. {instant_python-0.13.0 → instant_python-0.14.0}/PKG-INFO +1 -1
  3. instant_python-0.14.0/instant_python/config/application/config_generator.py +25 -0
  4. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/domain/config_parser.py +2 -2
  5. instant_python-0.13.0/instant_python/config/domain/configuration_schema.py → instant_python-0.14.0/instant_python/config/domain/config_schema.py +20 -26
  6. instant_python-0.14.0/instant_python/config/domain/config_writer.py +9 -0
  7. instant_python-0.13.0/instant_python/config/domain/dependency_configuration.py → instant_python-0.14.0/instant_python/config/domain/dependency_config.py +1 -1
  8. instant_python-0.13.0/instant_python/config/domain/general_configuration.py → instant_python-0.14.0/instant_python/config/domain/general_config.py +1 -1
  9. instant_python-0.13.0/instant_python/config/domain/git_configuration.py → instant_python-0.14.0/instant_python/config/domain/git_config.py +1 -1
  10. instant_python-0.13.0/instant_python/config/domain/template_configuration.py → instant_python-0.14.0/instant_python/config/domain/template_config.py +7 -7
  11. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/parser/errors.py +2 -2
  12. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/parser/parser.py +18 -18
  13. instant_python-0.14.0/instant_python/config/infra/writer/yaml_config_writer.py +13 -0
  14. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/configuration/parser/parser.py +20 -20
  15. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/dependency_manager.py +2 -2
  16. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/pdm_dependency_manager.py +4 -4
  17. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/uv_dependency_manager.py +4 -4
  18. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/git/git_configurer.py +2 -2
  19. instant_python-0.14.0/instant_python/initialize/application/config_reader.py +14 -0
  20. instant_python-0.14.0/instant_python/initialize/application/project_initializer.py +13 -0
  21. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/delivery/cli.py +2 -2
  22. instant_python-0.13.0/instant_python/initialize/domain/configuration_repository.py → instant_python-0.14.0/instant_python/initialize/domain/config_repository.py +1 -1
  23. instant_python-0.14.0/instant_python/initialize/domain/nodes.py +8 -0
  24. instant_python-0.14.0/instant_python/initialize/domain/project_renderer.py +9 -0
  25. instant_python-0.13.0/instant_python/initialize/infra/configuration_repository.py → instant_python-0.14.0/instant_python/initialize/infra/persistence/config_repository.py +2 -2
  26. instant_python-0.14.0/instant_python/initialize/infra/renderer/jinja_environment.py +61 -0
  27. instant_python-0.14.0/instant_python/initialize/infra/renderer/jinja_project_renderer.py +48 -0
  28. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/file.py +2 -2
  29. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/file_system.py +2 -2
  30. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/jinja_project_renderer.py +3 -3
  31. instant_python-0.14.0/instant_python/templates/boilerplate/exceptions/base_error.py +13 -0
  32. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +1 -1
  33. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +1 -1
  34. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +1 -1
  35. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +1 -1
  36. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +1 -1
  37. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +1 -1
  38. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +1 -1
  39. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/error_handlers.py +2 -3
  40. instant_python-0.14.0/instant_python/templates/boilerplate/persistence/async/async_session.py +25 -0
  41. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +1 -1
  42. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +1 -1
  43. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +1 -4
  44. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +2 -5
  45. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/standard_project/source.yml.j2 +1 -4
  46. {instant_python-0.13.0 → instant_python-0.14.0}/pyproject.toml +2 -2
  47. instant_python-0.14.0/test/config/application/test_config_generator.py +32 -0
  48. instant_python-0.14.0/test/config/domain/mothers/config_schema_mother.py +25 -0
  49. instant_python-0.13.0/test/config/domain/mothers/dependency_configuration_mother.py → instant_python-0.14.0/test/config/domain/mothers/dependency_config_mother.py +7 -7
  50. instant_python-0.14.0/test/config/domain/mothers/general_config_mother.py +31 -0
  51. instant_python-0.14.0/test/config/domain/mothers/git_config_mother.py +22 -0
  52. instant_python-0.13.0/test/config/domain/mothers/template_configuration_mother.py → instant_python-0.14.0/test/config/domain/mothers/template_config_mother.py +12 -12
  53. instant_python-0.14.0/test/config/domain/test_dependency_config.py +35 -0
  54. instant_python-0.13.0/test/config/domain/test_general_configuration.py → instant_python-0.14.0/test/config/domain/test_general_config.py +8 -8
  55. instant_python-0.14.0/test/config/domain/test_git_config.py +43 -0
  56. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/domain/test_template_configuration.py +10 -10
  57. instant_python-0.14.0/test/config/infra/writer/test_yaml_config_writer.py +16 -0
  58. {instant_python-0.13.0 → instant_python-0.14.0}/test/dependency_manager/test_pdm_dependency_manager.py +3 -3
  59. {instant_python-0.13.0 → instant_python-0.14.0}/test/dependency_manager/test_uv_dependency_manager.py +4 -4
  60. {instant_python-0.13.0 → instant_python-0.14.0}/test/git/test_git_configurer.py +3 -3
  61. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/application/test_config_reader.py +4 -4
  62. instant_python-0.14.0/test/initialize/application/test_project_initializer.py +22 -0
  63. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/test_init_cli.py +3 -3
  64. instant_python-0.14.0/test/initialize/domain/test_nodes.py +12 -0
  65. instant_python-0.14.0/test/initialize/infra/persistence/approved_files/TestConfigurationRepository.test_should_read_existing_config_file.approved.txt +26 -0
  66. {instant_python-0.13.0/test/initialize/infra → instant_python-0.14.0/test/initialize/infra/persistence}/test_configuration_repository.py +5 -5
  67. instant_python-0.14.0/test/initialize/infra/renderer/__init__.py +0 -0
  68. instant_python-0.14.0/test/initialize/infra/renderer/test_jinja_environment.py +33 -0
  69. instant_python-0.14.0/test/initialize/infra/renderer/test_jinja_project_renderer.py +37 -0
  70. instant_python-0.14.0/test/initialize/utils.py +5 -0
  71. instant_python-0.14.0/test/project_creator/__init__.py +0 -0
  72. instant_python-0.14.0/test/project_creator/resources/boilerplate/fastapi/__init__.py +0 -0
  73. instant_python-0.14.0/test/project_creator/resources/boilerplate/logger/__init__.py +0 -0
  74. instant_python-0.14.0/test/render/__init__.py +0 -0
  75. instant_python-0.14.0/test/resources/domain_error_template.py +8 -0
  76. instant_python-0.14.0/test/resources/hello_world.j2 +2 -0
  77. instant_python-0.14.0/test/resources/standard_project/main_structure.yml.j2 +19 -0
  78. {instant_python-0.13.0 → instant_python-0.14.0}/uv.lock +1 -1
  79. instant_python-0.13.0/instant_python/config/application/config_generator.py +0 -15
  80. instant_python-0.13.0/instant_python/config/domain/config_writer.py +0 -9
  81. instant_python-0.13.0/instant_python/config/infra/writer/yaml_config_writer.py +0 -13
  82. instant_python-0.13.0/instant_python/initialize/application/config_reader.py +0 -14
  83. instant_python-0.13.0/instant_python/templates/boilerplate/exceptions/base_error.py +0 -24
  84. instant_python-0.13.0/test/config/application/test_config_generator.py +0 -32
  85. instant_python-0.13.0/test/config/domain/mothers/configuration_schema_mother.py +0 -16
  86. instant_python-0.13.0/test/config/domain/mothers/general_configuration_mother.py +0 -31
  87. instant_python-0.13.0/test/config/domain/mothers/git_configuration_mother.py +0 -22
  88. instant_python-0.13.0/test/config/domain/test_dependency_configuration.py +0 -35
  89. instant_python-0.13.0/test/config/domain/test_git_configuration.py +0 -45
  90. instant_python-0.13.0/test/config/infra/writer/test_yaml_config_writer.py +0 -16
  91. instant_python-0.13.0/test/initialize/infra/approved_files/TestConfigurationRepository.test_should_read_existing_config_file.approved.txt +0 -33
  92. instant_python-0.13.0/test/initialize/infra/resources/config.yml +0 -23
  93. {instant_python-0.13.0 → instant_python-0.14.0}/.github/FUNDING.yml +0 -0
  94. {instant_python-0.13.0 → instant_python-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  95. {instant_python-0.13.0 → instant_python-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  96. {instant_python-0.13.0 → instant_python-0.14.0}/.github/actions/python_setup/action.yml +0 -0
  97. {instant_python-0.13.0 → instant_python-0.14.0}/.github/pull_request_template.md +0 -0
  98. {instant_python-0.13.0 → instant_python-0.14.0}/.github/workflows/ci.yml +0 -0
  99. {instant_python-0.13.0 → instant_python-0.14.0}/.github/workflows/pages.yml +0 -0
  100. {instant_python-0.13.0 → instant_python-0.14.0}/.github/workflows/release.yml +0 -0
  101. {instant_python-0.13.0 → instant_python-0.14.0}/.gitignore +0 -0
  102. {instant_python-0.13.0 → instant_python-0.14.0}/.pre-commit-config.yaml +0 -0
  103. {instant_python-0.13.0 → instant_python-0.14.0}/.python-version +0 -0
  104. {instant_python-0.13.0 → instant_python-0.14.0}/CITATION.cff +0 -0
  105. {instant_python-0.13.0 → instant_python-0.14.0}/LICENSE +0 -0
  106. {instant_python-0.13.0 → instant_python-0.14.0}/README.md +0 -0
  107. {instant_python-0.13.0 → instant_python-0.14.0}/SECURITY.md +0 -0
  108. {instant_python-0.13.0 → instant_python-0.14.0}/codeql-config.yml +0 -0
  109. {instant_python-0.13.0 → instant_python-0.14.0}/docs/assets/favicon.svg +0 -0
  110. {instant_python-0.13.0 → instant_python-0.14.0}/docs/assets/logo.svg +0 -0
  111. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  112. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  113. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  114. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/changes.md.j2 +0 -0
  115. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/first_release.md.j2 +0 -0
  116. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/macros.md.j2 +0 -0
  117. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  118. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/.release_notes.md.j2 +0 -0
  119. {instant_python-0.13.0 → instant_python-0.14.0}/docs/changelog/CHANGELOG.md.j2 +0 -0
  120. {instant_python-0.13.0 → instant_python-0.14.0}/docs/downloads_macro.py +0 -0
  121. {instant_python-0.13.0 → instant_python-0.14.0}/docs/examples/configuration.md +0 -0
  122. {instant_python-0.13.0 → instant_python-0.14.0}/docs/examples/custom_template.md +0 -0
  123. {instant_python-0.13.0 → instant_python-0.14.0}/docs/guide/command_config.md +0 -0
  124. {instant_python-0.13.0 → instant_python-0.14.0}/docs/guide/command_init.md +0 -0
  125. {instant_python-0.13.0 → instant_python-0.14.0}/docs/home/contributing.md +0 -0
  126. {instant_python-0.13.0 → instant_python-0.14.0}/docs/home/getting_started.md +0 -0
  127. {instant_python-0.13.0 → instant_python-0.14.0}/docs/home/index.md +0 -0
  128. {instant_python-0.13.0 → instant_python-0.14.0}/docs/home/releases.md +0 -0
  129. {instant_python-0.13.0 → instant_python-0.14.0}/docs/home/security.md +0 -0
  130. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/__init__.py +0 -0
  131. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/cli/__init__.py +0 -0
  132. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/cli/cli.py +0 -0
  133. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/cli/instant_python_typer.py +0 -0
  134. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/__init__.py +0 -0
  135. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/application/__init__.py +0 -0
  136. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/delivery/__init__.py +0 -0
  137. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/delivery/cli.py +0 -0
  138. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/domain/__init__.py +0 -0
  139. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/domain/question_wizard.py +0 -0
  140. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/__init__.py +0 -0
  141. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/parser/__init__.py +0 -0
  142. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/__init__.py +0 -0
  143. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
  144. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
  145. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
  146. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/general_step.py +0 -0
  147. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
  148. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
  149. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
  150. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
  151. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/config/infra/writer/__init__.py +0 -0
  152. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/configuration/__init__.py +0 -0
  153. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/configuration/parser/__init__.py +0 -0
  154. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
  155. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/__init__.py +0 -0
  156. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/command_execution_error.py +0 -0
  157. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
  158. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
  159. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/formatter/__init__.py +0 -0
  160. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/formatter/project_formatter.py +0 -0
  161. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/git/__init__.py +0 -0
  162. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/__init__.py +0 -0
  163. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/application/__init__.py +0 -0
  164. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/delivery/__init__.py +0 -0
  165. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/domain/__init__.py +0 -0
  166. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/initialize/infra/__init__.py +0 -0
  167. {instant_python-0.13.0/instant_python/project_creator → instant_python-0.14.0/instant_python/initialize/infra/persistence}/__init__.py +0 -0
  168. {instant_python-0.13.0/instant_python/render → instant_python-0.14.0/instant_python/initialize/infra/renderer}/__init__.py +0 -0
  169. {instant_python-0.13.0/instant_python/shared → instant_python-0.14.0/instant_python/project_creator}/__init__.py +0 -0
  170. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/directory.py +0 -0
  171. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/file_has_not_been_created.py +0 -0
  172. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/node.py +0 -0
  173. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
  174. {instant_python-0.13.0/instant_python/templates/boilerplate/event_bus → instant_python-0.14.0/instant_python/render}/__init__.py +0 -0
  175. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/custom_project_renderer.py +0 -0
  176. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/jinja_custom_filters.py +0 -0
  177. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/jinja_environment.py +0 -0
  178. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/template_file_not_found_error.py +0 -0
  179. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/render/unknown_template_error.py +0 -0
  180. {instant_python-0.13.0/instant_python/templates/boilerplate/exceptions → instant_python-0.14.0/instant_python/shared}/__init__.py +0 -0
  181. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/application_error.py +0 -0
  182. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/error_types.py +0 -0
  183. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/supported_built_in_features.py +0 -0
  184. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/supported_licenses.py +0 -0
  185. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/supported_managers.py +0 -0
  186. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/supported_python_versions.py +0 -0
  187. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/shared/supported_templates.py +0 -0
  188. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/.gitignore +0 -0
  189. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  190. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/.python-version +0 -0
  191. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  192. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/LICENSE +0 -0
  193. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/README.md +0 -0
  194. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  195. {instant_python-0.13.0/instant_python/templates/boilerplate/fastapi → instant_python-0.14.0/instant_python/templates/boilerplate/event_bus}/__init__.py +0 -0
  196. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  197. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  198. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  199. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  200. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
  201. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  202. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  203. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  204. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  205. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  206. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  207. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  208. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  209. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  210. {instant_python-0.13.0/instant_python/templates/boilerplate/logger → instant_python-0.14.0/instant_python/templates/boilerplate/exceptions}/__init__.py +0 -0
  211. {instant_python-0.13.0/instant_python/templates/boilerplate/persistence → instant_python-0.14.0/instant_python/templates/boilerplate/fastapi}/__init__.py +0 -0
  212. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  213. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  214. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  215. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  216. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
  217. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
  218. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  219. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/github/ci.yml +0 -0
  220. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  221. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/github/release.yml +0 -0
  222. {instant_python-0.13.0/instant_python/templates/boilerplate/persistence/async → instant_python-0.14.0/instant_python/templates/boilerplate/logger}/__init__.py +0 -0
  223. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  224. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  225. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  226. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
  227. {instant_python-0.13.0/instant_python/templates/boilerplate/persistence/synchronous → instant_python-0.14.0/instant_python/templates/boilerplate/persistence}/__init__.py +0 -0
  228. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  229. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  230. {instant_python-0.13.0/instant_python/templates/boilerplate/value_object → instant_python-0.14.0/instant_python/templates/boilerplate/persistence/async}/__init__.py +0 -0
  231. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  232. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  233. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  234. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  235. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  236. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  237. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  238. {instant_python-0.13.0/test → instant_python-0.14.0/instant_python/templates/boilerplate/persistence/synchronous}/__init__.py +0 -0
  239. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  240. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  241. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/pyproject.toml +0 -0
  242. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
  243. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/random_generator.py +0 -0
  244. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
  245. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  246. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  247. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  248. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
  249. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/makefile +0 -0
  250. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
  251. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
  252. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
  253. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
  254. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  255. {instant_python-0.13.0/test/config → instant_python-0.14.0/instant_python/templates/boilerplate/value_object}/__init__.py +0 -0
  256. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/aggregate.py +0 -0
  257. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/int_primitives_mother.py +0 -0
  258. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
  259. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/string_primitives_mother.py +0 -0
  260. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
  261. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/test_int_value_object.py +0 -0
  262. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/test_string_value_object.py +0 -0
  263. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/test_uuid_value_object.py +0 -0
  264. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
  265. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/uuid_primitives_mother.py +0 -0
  266. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/validation.py +0 -0
  267. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/boilerplate/value_object/value_object.py +0 -0
  268. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
  269. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
  270. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/citation.yml.j2 +0 -0
  271. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
  272. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -0
  273. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
  274. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
  275. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -0
  276. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
  277. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
  278. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
  279. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/fastapi_domain.yml.j2 +0 -0
  280. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
  281. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
  282. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/github_issues_template.yml.j2 +0 -0
  283. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
  284. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/license.yml.j2 +0 -0
  285. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
  286. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/macros.j2 +0 -0
  287. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/makefile.yml.j2 +0 -0
  288. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
  289. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/precommit_hook.yml.j2 +0 -0
  290. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
  291. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
  292. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
  293. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
  294. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/security.yml.j2 +0 -0
  295. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
  296. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -0
  297. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
  298. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/test_value_objects.yml.j2 +0 -0
  299. {instant_python-0.13.0 → instant_python-0.14.0}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
  300. {instant_python-0.13.0 → instant_python-0.14.0}/makefile +0 -0
  301. {instant_python-0.13.0 → instant_python-0.14.0}/mkdocs.yml +0 -0
  302. {instant_python-0.13.0 → instant_python-0.14.0}/mypy.ini +0 -0
  303. {instant_python-0.13.0 → instant_python-0.14.0}/scripts/add_dependency.py +0 -0
  304. {instant_python-0.13.0 → instant_python-0.14.0}/scripts/remove_dependency.py +0 -0
  305. {instant_python-0.13.0/test/config/application → instant_python-0.14.0/test}/__init__.py +0 -0
  306. {instant_python-0.13.0/test/config/domain → instant_python-0.14.0/test/config}/__init__.py +0 -0
  307. {instant_python-0.13.0/test/config/domain/mothers → instant_python-0.14.0/test/config/application}/__init__.py +0 -0
  308. {instant_python-0.13.0/test/config/infra → instant_python-0.14.0/test/config/domain}/__init__.py +0 -0
  309. {instant_python-0.13.0/test/config/infra/parser → instant_python-0.14.0/test/config/domain/mothers}/__init__.py +0 -0
  310. {instant_python-0.13.0/test/config/infra/parser/resources → instant_python-0.14.0/test/config/infra}/__init__.py +0 -0
  311. {instant_python-0.13.0/test/config/infra/writer → instant_python-0.14.0/test/config/infra/parser}/__init__.py +0 -0
  312. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/approvaltests_config.json +0 -0
  313. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/approved_files/TestParser.test_should_parse_valid_answers.approved.txt +0 -0
  314. {instant_python-0.13.0/test/configuration → instant_python-0.14.0/test/config/infra/parser/resources}/__init__.py +0 -0
  315. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/missing_dependencies_fields.yml +0 -0
  316. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/missing_general_fields.yml +0 -0
  317. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/missing_git_fields.yml +0 -0
  318. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/missing_keys_answers.yml +0 -0
  319. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/missing_template_fields.yml +0 -0
  320. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/resources/valid_answers.yml +0 -0
  321. {instant_python-0.13.0 → instant_python-0.14.0}/test/config/infra/parser/test_parser.py +0 -0
  322. {instant_python-0.13.0/test/configuration/parser → instant_python-0.14.0/test/config/infra/writer}/__init__.py +0 -0
  323. {instant_python-0.13.0/test/configuration/parser/resources → instant_python-0.14.0/test/configuration}/__init__.py +0 -0
  324. {instant_python-0.13.0/test/dependency_manager → instant_python-0.14.0/test/configuration/parser}/__init__.py +0 -0
  325. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/approvaltests_config.json +0 -0
  326. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
  327. {instant_python-0.13.0/test/formatter → instant_python-0.14.0/test/configuration/parser/resources}/__init__.py +0 -0
  328. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/config.yml +0 -0
  329. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/empty_config.yml +0 -0
  330. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
  331. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
  332. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
  333. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
  334. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
  335. {instant_python-0.13.0 → instant_python-0.14.0}/test/configuration/parser/test_parser.py +0 -0
  336. {instant_python-0.13.0/test/git → instant_python-0.14.0/test/dependency_manager}/__init__.py +0 -0
  337. {instant_python-0.13.0 → instant_python-0.14.0}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
  338. {instant_python-0.13.0 → instant_python-0.14.0}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
  339. {instant_python-0.13.0/test/initialize → instant_python-0.14.0/test/formatter}/__init__.py +0 -0
  340. {instant_python-0.13.0 → instant_python-0.14.0}/test/formatter/mock_project_formatter.py +0 -0
  341. {instant_python-0.13.0 → instant_python-0.14.0}/test/formatter/test_project_formatter.py +0 -0
  342. {instant_python-0.13.0/test/initialize/application → instant_python-0.14.0/test/git}/__init__.py +0 -0
  343. {instant_python-0.13.0 → instant_python-0.14.0}/test/git/mock_git_configurer.py +0 -0
  344. {instant_python-0.13.0/test/initialize/delivery → instant_python-0.14.0/test/initialize}/__init__.py +0 -0
  345. {instant_python-0.13.0/test/initialize/infra → instant_python-0.14.0/test/initialize/application}/__init__.py +0 -0
  346. {instant_python-0.13.0/test/project_creator → instant_python-0.14.0/test/initialize/delivery}/__init__.py +0 -0
  347. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/approvaltests_config.json +0 -0
  348. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/approved_files/TestInitCli.test_initializes_project_with_general_section_combinations.approved.txt +0 -0
  349. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/approved_files/TestInitCli.test_initializes_project_with_git_section_combinations.approved.txt +0 -0
  350. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/approved_files/TestInitCli.test_initializes_project_with_template_section_combinations.approved.txt +0 -0
  351. {instant_python-0.13.0 → instant_python-0.14.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initializes_project_with_predefined_dependencies_and_different_managers.approved.txt +0 -0
  352. {instant_python-0.13.0/test/project_creator/resources/boilerplate/fastapi → instant_python-0.14.0/test/initialize/domain}/__init__.py +0 -0
  353. {instant_python-0.13.0/test/project_creator/resources/boilerplate/logger → instant_python-0.14.0/test/initialize/infra}/__init__.py +0 -0
  354. {instant_python-0.13.0/test/render → instant_python-0.14.0/test/initialize/infra/persistence}/__init__.py +0 -0
  355. {instant_python-0.13.0/test/initialize/infra → instant_python-0.14.0/test/initialize/infra/persistence}/approvaltests_config.json +0 -0
  356. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approvaltests_config.json +0 -0
  357. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_custom_project_structure.json.approved.txt +0 -0
  358. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +0 -0
  359. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_logger.json.approved.txt +0 -0
  360. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_migrator.json.approved.txt +0 -0
  361. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_only_with_fastapi.json.approved.txt +0 -0
  362. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
  363. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
  364. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/directory_mother.py +0 -0
  365. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
  366. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
  367. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/fastapi/application.py +0 -0
  368. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/fastapi/http_response.py +0 -0
  369. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/fastapi/lifespan.py +0 -0
  370. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/logger/logger.py +0 -0
  371. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/boilerplate/persistence/alembic_migrator.py +0 -0
  372. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +0 -0
  373. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/config.yml +0 -0
  374. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/config_fastapi_with_logger.yml +0 -0
  375. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/config_fastapi_with_migrator.yml +0 -0
  376. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/config_with_only_fastapi.yml +0 -0
  377. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
  378. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/rendered_project_structure.json +0 -0
  379. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/rendered_project_structure_fastapi_with_logger.json +0 -0
  380. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/rendered_project_structure_fastapi_with_migrator.json +0 -0
  381. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/resources/rendered_project_structure_only_with_fastapi.json +0 -0
  382. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/test_directory.py +0 -0
  383. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/test_file.py +0 -0
  384. {instant_python-0.13.0 → instant_python-0.14.0}/test/project_creator/test_file_system.py +0 -0
  385. {instant_python-0.13.0 → instant_python-0.14.0}/test/random_generator.py +0 -0
  386. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approvaltests_config.json +0 -0
  387. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
  388. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
  389. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
  390. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
  391. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +0 -0
  392. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +0 -0
  393. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -0
  394. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/clean_architecture_config.yml +0 -0
  395. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/custom_template.yml +0 -0
  396. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
  397. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/domain_driven_design_config.yml +0 -0
  398. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
  399. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
  400. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/standard_project_with_git_config.yml +0 -0
  401. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/resources/test_template.j2 +0 -0
  402. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/test_custom_project_renderer.py +0 -0
  403. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/test_jinja_environment.py +0 -0
  404. {instant_python-0.13.0 → instant_python-0.14.0}/test/render/test_jinja_project_renderer.py +0 -0
  405. /instant_python-0.13.0/test/initialize/delivery/ipy.yml → /instant_python-0.14.0/test/resources/base_ipy_config.yml +0 -0
  406. {instant_python-0.13.0 → instant_python-0.14.0}/tox.ini +0 -0
@@ -2,6 +2,118 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.14.0 (2025-11-03)
6
+
7
+ ### ✨ Features
8
+
9
+ - **templates**: Add new template that implements a general way of getting async sessions
10
+ ([`0f6d37e`](https://github.com/dimanu-py/instant-python/commit/0f6d37e1ae9cf676c41719bd7c39e7056b15d15c))
11
+
12
+ - **initialize**: Implement build_path_for method to construct file paths
13
+ ([`f1f253f`](https://github.com/dimanu-py/instant-python/commit/f1f253f1cd255b416bb7f337e7dcd85db8c4cf09))
14
+
15
+ - **initialize**: Enhance project structure rendering by adding template content to files
16
+ ([`8b6c98c`](https://github.com/dimanu-py/instant-python/commit/8b6c98c35a4572f905bfae9a52e744cf02af7817))
17
+
18
+ - **initialize**: Implement rendering of project structure using YAML template
19
+ ([`6d93e9a`](https://github.com/dimanu-py/instant-python/commit/6d93e9a61d2822068163cfe983be8c9ea189b3a4))
20
+
21
+ - **initialize**: Enhance JinjaEnvironment to support multiple template loaders
22
+ ([`5b69e4f`](https://github.com/dimanu-py/instant-python/commit/5b69e4f7c35b526b8de41b663108918c2d2ffba3))
23
+
24
+ - **initialize**: Implement render_template method in JinjaEnvironment
25
+ ([`860bc0b`](https://github.com/dimanu-py/instant-python/commit/860bc0b6285c0bf4ec36d9c20d3c6febf71d0a37))
26
+
27
+ - **initialize**: Add render_template method to JinjaEnvironment with placeholder implementation
28
+ ([`4c67ad3`](https://github.com/dimanu-py/instant-python/commit/4c67ad300473719fbac6f8dab3470407dc1c5559))
29
+
30
+ - **initialize**: Set FileSystemLoader with user_template_path in JinjaEnvironment
31
+ ([`d6ef776`](https://github.com/dimanu-py/instant-python/commit/d6ef7766adcc89ef03f8ad2905931fc8541b949e))
32
+
33
+ - **initialize**: Add user_template_path parameter to JinjaEnvironment constructor
34
+ ([`42d34ac`](https://github.com/dimanu-py/instant-python/commit/42d34ac4a46c097a7dca0f75175e7ad64b3ca98c))
35
+
36
+ - **initialize**: Add custom filters for jinja and load them by default in jinja env
37
+ ([`4194509`](https://github.com/dimanu-py/instant-python/commit/419450927edd6b3e81199b7301ebdad25fbfb8b2))
38
+
39
+ - **initialize**: Add method to register custom filters in jinja environment
40
+ ([`ec1d01a`](https://github.com/dimanu-py/instant-python/commit/ec1d01a84faa2c65618938ccbd47d46f3026dddc))
41
+
42
+ - **initialize**: Add test to verify jinja environment loads custom filters
43
+ ([`31ff4a5`](https://github.com/dimanu-py/instant-python/commit/31ff4a50d1a6b8dff97813ccc4fe99db4376301b))
44
+
45
+ - **initialize**: Instantiate jinja 2 environment inside wrapper class
46
+ ([`c0f7ec0`](https://github.com/dimanu-py/instant-python/commit/c0f7ec0d39f721d999cd4a9330c3fab7c32192c9))
47
+
48
+ - **initializer**: Implement project structure rendering in execute method
49
+ ([`a91b8ae`](https://github.com/dimanu-py/instant-python/commit/a91b8ae66e81291b56963b8e9ea39eb47618daba))
50
+
51
+ ### 🪲 Bug Fixes
52
+
53
+ - **templates**: Correct spelling error in sqlalchemy repository template
54
+ ([`97f6003`](https://github.com/dimanu-py/instant-python/commit/97f6003a4b89d9553e969bce9794ce3f0e59ac17))
55
+
56
+ - **initialize**: Search for default template that is at first level of boilerplate folder
57
+ ([`841badc`](https://github.com/dimanu-py/instant-python/commit/841badc6af64490729fd448f3797393d9ed47cd4))
58
+
59
+ ### ⚙️ Build System
60
+
61
+ - Update testpaths to point to the correct directory
62
+ ([`61bc700`](https://github.com/dimanu-py/instant-python/commit/61bc700f99533bf119c03590fabd44738f88f7a7))
63
+
64
+ ### ♻️ Refactoring
65
+
66
+ - **templates**: Modify all errors template to not include 'error_type' attribute and leave just
67
+ typical message field
68
+ ([`1fc2a39`](https://github.com/dimanu-py/instant-python/commit/1fc2a39e0662a50c5a701c1f2cacb625482175c1))
69
+
70
+ - **templates**: Modify source structure of all project templates so exclude sync sqlalchemy and
71
+ include async sqlalchemy when present
72
+ ([`244b597`](https://github.com/dimanu-py/instant-python/commit/244b5975c6fb2d64d503a9a64b1961ee0837e082))
73
+
74
+ - **templates**: Modify async sqlalchemy structure template to exclude sqlalchemy repository
75
+ template and include async session template
76
+ ([`447caa4`](https://github.com/dimanu-py/instant-python/commit/447caa4472a7e080f15bc45a5da37c3694b686ae))
77
+
78
+ - **initialize**: Extract semantic method to populate file keys with content from template
79
+ ([`5ceb8ec`](https://github.com/dimanu-py/instant-python/commit/5ceb8ec574d366902d671b816cc893df8d4d919f))
80
+
81
+ - **initialize**: Extract semantic method to express operation of rendering the project structure
82
+ using jinja
83
+ ([`f610639`](https://github.com/dimanu-py/instant-python/commit/f61063922d0e64c3fbb19832d6e663c5b15adbad))
84
+
85
+ - **initialize**: Extract semantic method to generate main structure template path
86
+ ([`ff69c87`](https://github.com/dimanu-py/instant-python/commit/ff69c87829d71e52d4f66fa36dbc879fd276dc56))
87
+
88
+ - **config**: Extract semantic methods in ConfigGenerator use case to keep high level expressions in
89
+ main 'execute' method
90
+ ([`766a2bc`](https://github.com/dimanu-py/instant-python/commit/766a2bcd1ed614a093dfe6bd99a1f45ba997df8b))
91
+
92
+ - **initialize**: Update render_template method to accept Any type for context
93
+ ([`e6501bc`](https://github.com/dimanu-py/instant-python/commit/e6501bcb777f5ba2be8903f04629affd6ba66521))
94
+
95
+ - **initialize**: Rename render_project_structure method to render
96
+ ([`49fd942`](https://github.com/dimanu-py/instant-python/commit/49fd942a0bdcfdbababee08d0f0c304e5f9d78a5))
97
+
98
+ - **initialize**: Rename configuration repository classes for consistency
99
+ ([`4b4fa94`](https://github.com/dimanu-py/instant-python/commit/4b4fa94e95f77e9f08d64dc96462551b218324f8))
100
+
101
+ - **initialize**: Move config repository to a persistence module to keep modules organized
102
+ ([`3d9a7e0`](https://github.com/dimanu-py/instant-python/commit/3d9a7e02481c5fe5401f28c035ca21bc20374ba0))
103
+
104
+ - **initialize**: Modify signature of renderer interface to only accept context config parameter
105
+ ([`835060f`](https://github.com/dimanu-py/instant-python/commit/835060feb47d2446a06977b2deb3116beed67adf))
106
+
107
+ - **initialize**: Clean up jinja environment tests extracting common object instantiation
108
+ ([`c73e2e3`](https://github.com/dimanu-py/instant-python/commit/c73e2e38e75d839a1c1ae8a63798db9630d05fd9))
109
+
110
+ - **config**: Rename all references from 'configuration' to 'config' for naming consistency
111
+ ([`7691173`](https://github.com/dimanu-py/instant-python/commit/769117371e59d5642b5cc8fbffe9a55099e5386d))
112
+
113
+ - **config**: Remove unused method 'save_on_current_directory' method
114
+ ([`e760771`](https://github.com/dimanu-py/instant-python/commit/e760771438653b669cbdac0a9c8049dc298d7c0c))
115
+
116
+
5
117
  ## v0.13.0 (2025-10-26)
6
118
 
7
119
  ### ✨ Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instant-python
3
- Version: 0.13.0
3
+ Version: 0.14.0
4
4
  Summary: Instant boilerplate generation for Python projects
5
5
  Project-URL: documentation, https://dimanu-py.github.io/instant-python/
6
6
  Project-URL: repository, https://github.com/dimanu-py/instant-python/
@@ -0,0 +1,25 @@
1
+ from instant_python.config.domain.config_parser import ConfigParser
2
+ from instant_python.config.domain.config_schema import ConfigSchema
3
+ from instant_python.config.domain.config_writer import ConfigWriter
4
+ from instant_python.config.domain.question_wizard import QuestionWizard
5
+
6
+
7
+ class ConfigGenerator:
8
+ def __init__(self, question_wizard: QuestionWizard, writer: ConfigWriter, parser: ConfigParser) -> None:
9
+ self._question_wizard = question_wizard
10
+ self._writer = writer
11
+ self._parser = parser
12
+
13
+ def execute(self) -> None:
14
+ answers = self._ask_project_configuration_to_user()
15
+ config = self._validate_project_configuration(answers)
16
+ self._save_configuration(config)
17
+
18
+ def _save_configuration(self, config: ConfigSchema) -> None:
19
+ self._writer.write(config)
20
+
21
+ def _validate_project_configuration(self, answers: dict) -> ConfigSchema:
22
+ return self._parser.parse(answers)
23
+
24
+ def _ask_project_configuration_to_user(self) -> dict:
25
+ return self._question_wizard.run()
@@ -1,10 +1,10 @@
1
1
  from abc import ABC, abstractmethod
2
2
  from typing import Union
3
3
 
4
- from instant_python.config.domain.configuration_schema import ConfigurationSchema
4
+ from instant_python.config.domain.config_schema import ConfigSchema
5
5
 
6
6
 
7
7
  class ConfigParser(ABC):
8
8
  @abstractmethod
9
- def parse(self, content: dict[str, dict], custom_config_path: Union[str, None] = None) -> ConfigurationSchema:
9
+ def parse(self, content: dict[str, dict], custom_config_path: Union[str, None] = None) -> ConfigSchema:
10
10
  raise NotImplementedError
@@ -3,37 +3,36 @@ from dataclasses import dataclass, field
3
3
  from pathlib import Path
4
4
  from typing import TypedDict, Union
5
5
 
6
- import yaml
7
6
 
8
- from instant_python.config.domain.dependency_configuration import (
9
- DependencyConfiguration,
7
+ from instant_python.config.domain.dependency_config import (
8
+ DependencyConfig,
10
9
  )
11
- from instant_python.config.domain.general_configuration import (
12
- GeneralConfiguration,
10
+ from instant_python.config.domain.general_config import (
11
+ GeneralConfig,
13
12
  )
14
- from instant_python.config.domain.git_configuration import GitConfiguration
15
- from instant_python.config.domain.template_configuration import (
16
- TemplateConfiguration,
13
+ from instant_python.config.domain.git_config import GitConfig
14
+ from instant_python.config.domain.template_config import (
15
+ TemplateConfig,
17
16
  )
18
17
 
19
18
 
20
19
  @dataclass
21
- class ConfigurationSchema:
22
- general: GeneralConfiguration
23
- dependencies: list[DependencyConfiguration]
24
- template: TemplateConfiguration
25
- git: GitConfiguration
20
+ class ConfigSchema:
21
+ general: GeneralConfig
22
+ dependencies: list[DependencyConfig]
23
+ template: TemplateConfig
24
+ git: GitConfig
26
25
  config_file_path: Path = field(default_factory=lambda: Path("ipy.yml"))
27
26
 
28
27
  @classmethod
29
28
  def from_file(
30
29
  cls,
31
30
  config_file_path: str,
32
- general: GeneralConfiguration,
33
- dependencies: list[DependencyConfiguration],
34
- template: TemplateConfiguration,
35
- git: GitConfiguration,
36
- ) -> "ConfigurationSchema":
31
+ general: GeneralConfig,
32
+ dependencies: list[DependencyConfig],
33
+ template: TemplateConfig,
34
+ git: GitConfig,
35
+ ) -> "ConfigSchema":
37
36
  return cls(
38
37
  general=general,
39
38
  dependencies=dependencies,
@@ -48,13 +47,8 @@ class ConfigurationSchema:
48
47
 
49
48
  shutil.move(self.config_file_path, destination_path)
50
49
 
51
- def save_on_current_directory(self) -> None:
52
- destination_folder = Path.cwd() / self.config_file_path
53
- with open(destination_folder, "w") as file:
54
- yaml.dump(self.to_primitives(), file)
55
-
56
- def to_primitives(self) -> "ConfigurationSchemaPrimitives":
57
- return ConfigurationSchemaPrimitives(
50
+ def to_primitives(self) -> "ConfigSchemaPrimitives":
51
+ return ConfigSchemaPrimitives(
58
52
  general=self.general.to_primitives(),
59
53
  dependencies=[dependency.to_primitives() for dependency in self.dependencies],
60
54
  template=self.template.to_primitives(),
@@ -78,7 +72,7 @@ class ConfigurationSchema:
78
72
  return self.general.python_version
79
73
 
80
74
 
81
- class ConfigurationSchemaPrimitives(TypedDict):
75
+ class ConfigSchemaPrimitives(TypedDict):
82
76
  general: dict[str, str]
83
77
  dependencies: list[dict[str, Union[str, bool]]]
84
78
  template: dict[str, Union[str, list[str]]]
@@ -0,0 +1,9 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ from instant_python.config.domain.config_schema import ConfigSchema
4
+
5
+
6
+ class ConfigWriter(ABC):
7
+ @abstractmethod
8
+ def write(self, config: ConfigSchema) -> None:
9
+ raise NotImplementedError
@@ -5,7 +5,7 @@ from instant_python.shared.error_types import ErrorTypes
5
5
 
6
6
 
7
7
  @dataclass
8
- class DependencyConfiguration:
8
+ class DependencyConfig:
9
9
  name: str
10
10
  version: str
11
11
  is_dev: bool = field(default=False)
@@ -10,7 +10,7 @@ from instant_python.shared.supported_python_versions import SupportedPythonVersi
10
10
 
11
11
 
12
12
  @dataclass
13
- class GeneralConfiguration:
13
+ class GeneralConfig:
14
14
  slug: str
15
15
  source_name: str
16
16
  description: str
@@ -6,7 +6,7 @@ from instant_python.shared.error_types import ErrorTypes
6
6
 
7
7
 
8
8
  @dataclass
9
- class GitConfiguration:
9
+ class GitConfig:
10
10
  initialize: bool
11
11
  username: Optional[str] = field(default=None)
12
12
  email: Optional[str] = field(default=None)
@@ -8,15 +8,15 @@ from instant_python.shared.supported_templates import SupportedTemplates
8
8
 
9
9
 
10
10
  @dataclass
11
- class TemplateConfiguration:
11
+ class TemplateConfig:
12
12
  name: str
13
13
  built_in_features: list[str] = field(default_factory=list)
14
14
  specify_bounded_context: bool = field(default=False)
15
15
  bounded_context: Optional[str] = field(default=None)
16
16
  aggregate_name: Optional[str] = field(default=None)
17
17
 
18
- SUPPORTED_TEMPLATES: ClassVar[list[str]] = SupportedTemplates.get_supported_templates()
19
- SUPPORTED_BUILT_IN_FEATURES: ClassVar[list[str]] = SupportedBuiltInFeatures.get_supported_built_in_features()
18
+ _SUPPORTED_TEMPLATES: ClassVar[list[str]] = SupportedTemplates.get_supported_templates()
19
+ _SUPPORTED_BUILT_IN_FEATURES: ClassVar[list[str]] = SupportedBuiltInFeatures.get_supported_built_in_features()
20
20
 
21
21
  def __post_init__(self) -> None:
22
22
  self._ensure_template_is_supported()
@@ -25,15 +25,15 @@ class TemplateConfiguration:
25
25
  self._ensure_bounded_context_is_set_if_specified()
26
26
 
27
27
  def _ensure_template_is_supported(self) -> None:
28
- if self.name not in self.SUPPORTED_TEMPLATES:
29
- raise InvalidTemplateValue(self.name, self.SUPPORTED_TEMPLATES)
28
+ if self.name not in self._SUPPORTED_TEMPLATES:
29
+ raise InvalidTemplateValue(self.name, self._SUPPORTED_TEMPLATES)
30
30
 
31
31
  def _ensure_built_in_features_are_supported(self) -> None:
32
32
  unsupported_features = [
33
- feature for feature in self.built_in_features if feature not in self.SUPPORTED_BUILT_IN_FEATURES
33
+ feature for feature in self.built_in_features if feature not in self._SUPPORTED_BUILT_IN_FEATURES
34
34
  ]
35
35
  if unsupported_features:
36
- raise InvalidBuiltInFeaturesValues(unsupported_features, self.SUPPORTED_BUILT_IN_FEATURES)
36
+ raise InvalidBuiltInFeaturesValues(unsupported_features, self._SUPPORTED_BUILT_IN_FEATURES)
37
37
 
38
38
  def _ensure_bounded_context_is_only_applicable_for_ddd_template(self) -> None:
39
39
  if (
@@ -5,7 +5,7 @@ from instant_python.shared.error_types import ErrorTypes
5
5
  class ConfigKeyNotPresent(ApplicationError):
6
6
  def __init__(self, missing_keys: list[str], required_keys: list[str]) -> None:
7
7
  super().__init__(
8
- message=f"The following required keys are missing from the configuration file: {', '.join(missing_keys)}. Required keys are: {', '.join(required_keys)}.",
8
+ message=f"The following required keys are missing from the config file: {', '.join(missing_keys)}. Required keys are: {', '.join(required_keys)}.",
9
9
  error_type=ErrorTypes.CONFIGURATION.value,
10
10
  )
11
11
 
@@ -19,7 +19,7 @@ class MissingMandatoryFields(ApplicationError):
19
19
  def __init__(self, missing_field: str, config_section: str) -> None:
20
20
  super().__init__(
21
21
  message=(
22
- f"Mandatory field '{missing_field}' is missing in the '{config_section}' section of the configuration file."
22
+ f"Mandatory field '{missing_field}' is missing in the '{config_section}' section of the config file."
23
23
  ),
24
24
  error_type=ErrorTypes.CONFIGURATION.value,
25
25
  )
@@ -1,11 +1,11 @@
1
1
  from typing import Union
2
2
 
3
3
  from instant_python.config.domain.config_parser import ConfigParser
4
- from instant_python.config.domain.configuration_schema import ConfigurationSchema
5
- from instant_python.config.domain.dependency_configuration import DependencyConfiguration
6
- from instant_python.config.domain.general_configuration import GeneralConfiguration
7
- from instant_python.config.domain.git_configuration import GitConfiguration
8
- from instant_python.config.domain.template_configuration import TemplateConfiguration
4
+ from instant_python.config.domain.config_schema import ConfigSchema
5
+ from instant_python.config.domain.dependency_config import DependencyConfig
6
+ from instant_python.config.domain.general_config import GeneralConfig
7
+ from instant_python.config.domain.git_config import GitConfig
8
+ from instant_python.config.domain.template_config import TemplateConfig
9
9
  from instant_python.config.infra.parser.errors import (
10
10
  ConfigKeyNotPresent,
11
11
  EmptyConfigurationNotAllowed,
@@ -20,22 +20,22 @@ class Parser(ConfigParser):
20
20
  _GIT = "git"
21
21
  _REQUIRED_CONFIG_KEYS = [_GENERAL, _DEPENDENCIES, _TEMPLATE, _GIT]
22
22
 
23
- def parse(self, content: dict[str, dict], custom_config_path: Union[str, None] = None) -> ConfigurationSchema:
24
- self._ensure_configuration_is_not_empty(content)
23
+ def parse(self, content: dict[str, dict], custom_config_path: Union[str, None] = None) -> ConfigSchema:
24
+ self._ensure_config_is_not_empty(content)
25
25
  self._ensure_all_required_sections_are_present(content)
26
26
  general_section = self._parse_general_section(content[self._GENERAL])
27
27
  dependencies_section = self._parse_dependencies_section(content[self._DEPENDENCIES])
28
28
  template_section = self._parse_template_section(content[self._TEMPLATE])
29
29
  git_section = self._parse_git_section(content[self._GIT])
30
30
  return (
31
- ConfigurationSchema(
31
+ ConfigSchema(
32
32
  general=general_section,
33
33
  dependencies=dependencies_section,
34
34
  template=template_section,
35
35
  git=git_section,
36
36
  )
37
37
  if not custom_config_path
38
- else ConfigurationSchema.from_file(
38
+ else ConfigSchema.from_file(
39
39
  config_file_path=custom_config_path,
40
40
  general=general_section,
41
41
  dependencies=dependencies_section,
@@ -44,9 +44,9 @@ class Parser(ConfigParser):
44
44
  )
45
45
  )
46
46
 
47
- def _parse_general_section(self, fields: dict[str, str]) -> GeneralConfiguration:
47
+ def _parse_general_section(self, fields: dict[str, str]) -> GeneralConfig:
48
48
  try:
49
- return GeneralConfiguration(**fields)
49
+ return GeneralConfig(**fields)
50
50
  except TypeError as error:
51
51
  self._ensure_error_is_for_missing_fields(error)
52
52
  raise MissingMandatoryFields(error.args[0], self._GENERAL) from error
@@ -54,7 +54,7 @@ class Parser(ConfigParser):
54
54
  def _parse_dependencies_section(
55
55
  self,
56
56
  fields: list[dict[str, Union[str, bool]]],
57
- ) -> list[DependencyConfiguration]:
57
+ ) -> list[DependencyConfig]:
58
58
  dependencies = []
59
59
 
60
60
  if not fields:
@@ -62,7 +62,7 @@ class Parser(ConfigParser):
62
62
 
63
63
  for dependency_fields in fields:
64
64
  try:
65
- dependency = DependencyConfiguration(**dependency_fields)
65
+ dependency = DependencyConfig(**dependency_fields)
66
66
  except TypeError as error:
67
67
  self._ensure_error_is_for_missing_fields(error)
68
68
  raise MissingMandatoryFields(error.args[0], self._DEPENDENCIES) from error
@@ -71,16 +71,16 @@ class Parser(ConfigParser):
71
71
 
72
72
  return dependencies
73
73
 
74
- def _parse_template_section(self, fields: dict[str, Union[str, bool, list[str]]]) -> TemplateConfiguration:
74
+ def _parse_template_section(self, fields: dict[str, Union[str, bool, list[str]]]) -> TemplateConfig:
75
75
  try:
76
- return TemplateConfiguration(**fields)
76
+ return TemplateConfig(**fields)
77
77
  except TypeError as error:
78
78
  self._ensure_error_is_for_missing_fields(error)
79
79
  raise MissingMandatoryFields(error.args[0], self._TEMPLATE) from error
80
80
 
81
- def _parse_git_section(self, fields: dict[str, Union[str, bool]]) -> GitConfiguration:
81
+ def _parse_git_section(self, fields: dict[str, Union[str, bool]]) -> GitConfig:
82
82
  try:
83
- return GitConfiguration(**fields)
83
+ return GitConfig(**fields)
84
84
  except TypeError as error:
85
85
  self._ensure_error_is_for_missing_fields(error)
86
86
  raise MissingMandatoryFields(error.args[0], self._GIT) from error
@@ -91,7 +91,7 @@ class Parser(ConfigParser):
91
91
  raise ConfigKeyNotPresent(missing_keys, self._REQUIRED_CONFIG_KEYS)
92
92
 
93
93
  @staticmethod
94
- def _ensure_configuration_is_not_empty(content: dict[str, dict]):
94
+ def _ensure_config_is_not_empty(content: dict[str, dict]):
95
95
  if not content:
96
96
  raise EmptyConfigurationNotAllowed
97
97
 
@@ -0,0 +1,13 @@
1
+ from pathlib import Path
2
+
3
+ import yaml
4
+
5
+ from instant_python.config.domain.config_writer import ConfigWriter
6
+ from instant_python.config.domain.config_schema import ConfigSchema
7
+
8
+
9
+ class YamlConfigWriter(ConfigWriter):
10
+ def write(self, config: ConfigSchema) -> None:
11
+ destination_folder = Path.cwd() / config.config_file_path
12
+ with destination_folder.open("w") as file:
13
+ yaml.dump(config.to_primitives(), file)
@@ -7,31 +7,31 @@ from instant_python.config.infra.parser.errors import (
7
7
  EmptyConfigurationNotAllowed,
8
8
  MissingMandatoryFields,
9
9
  )
10
- from instant_python.config.domain.configuration_schema import ConfigurationSchema
11
- from instant_python.config.domain.dependency_configuration import (
12
- DependencyConfiguration,
10
+ from instant_python.config.domain.config_schema import ConfigSchema
11
+ from instant_python.config.domain.dependency_config import (
12
+ DependencyConfig,
13
13
  )
14
- from instant_python.config.domain.general_configuration import (
15
- GeneralConfiguration,
14
+ from instant_python.config.domain.general_config import (
15
+ GeneralConfig,
16
16
  )
17
- from instant_python.config.domain.git_configuration import GitConfiguration
17
+ from instant_python.config.domain.git_config import GitConfig
18
18
  from instant_python.configuration.parser.configuration_file_not_found import (
19
19
  ConfigurationFileNotFound,
20
20
  )
21
- from instant_python.config.domain.template_configuration import TemplateConfiguration
21
+ from instant_python.config.domain.template_config import TemplateConfig
22
22
 
23
23
 
24
24
  class Parser:
25
25
  REQUIRED_CONFIG_KEYS = ["general", "dependencies", "template", "git"]
26
26
 
27
27
  @classmethod
28
- def parse_from_file(cls, config_file_path: str) -> ConfigurationSchema:
28
+ def parse_from_file(cls, config_file_path: str) -> ConfigSchema:
29
29
  """Parses the configuration file and validates its content.
30
30
 
31
31
  Args:
32
32
  config_file_path: The path to the configuration file to be parsed.
33
33
  Returns:
34
- ConfigurationSchema: An instance of ConfigurationSchema containing the parsed configuration.
34
+ ConfigSchema: An instance of ConfigurationSchema containing the parsed configuration.
35
35
  Raises:
36
36
  ConfigurationFileNotFound: If the configuration file does not exist in that path.
37
37
  EmptyConfigurationNotAllowed: If the configuration file is empty.
@@ -42,7 +42,7 @@ class Parser:
42
42
  general_configuration, dependencies_configuration, template_configuration, git_configuration = (
43
43
  cls._parse_configuration(content=content)
44
44
  )
45
- return ConfigurationSchema.from_file(
45
+ return ConfigSchema.from_file(
46
46
  config_file_path=config_file_path,
47
47
  general=general_configuration,
48
48
  dependencies=dependencies_configuration,
@@ -51,11 +51,11 @@ class Parser:
51
51
  )
52
52
 
53
53
  @classmethod
54
- def parse_from_answers(cls, content: dict[str, dict]) -> ConfigurationSchema:
54
+ def parse_from_answers(cls, content: dict[str, dict]) -> ConfigSchema:
55
55
  general_configuration, dependencies_configuration, template_configuration, git_configuration = (
56
56
  cls._parse_configuration(content=content)
57
57
  )
58
- return ConfigurationSchema(
58
+ return ConfigSchema(
59
59
  general=general_configuration,
60
60
  dependencies=dependencies_configuration,
61
61
  template=template_configuration,
@@ -97,9 +97,9 @@ class Parser:
97
97
  raise ConfigKeyNotPresent(missing_keys, Parser.REQUIRED_CONFIG_KEYS)
98
98
 
99
99
  @staticmethod
100
- def _parse_general_configuration(fields: dict[str, str]) -> GeneralConfiguration:
100
+ def _parse_general_configuration(fields: dict[str, str]) -> GeneralConfig:
101
101
  try:
102
- return GeneralConfiguration(**fields)
102
+ return GeneralConfig(**fields)
103
103
  except TypeError as error:
104
104
  _ensure_error_is_for_missing_fields(error)
105
105
  raise MissingMandatoryFields(error.args[0], "general") from error
@@ -107,7 +107,7 @@ class Parser:
107
107
  @staticmethod
108
108
  def _parse_dependencies_configuration(
109
109
  fields: list[dict[str, Union[str, bool]]],
110
- ) -> list[DependencyConfiguration]:
110
+ ) -> list[DependencyConfig]:
111
111
  dependencies = []
112
112
 
113
113
  if not fields:
@@ -115,7 +115,7 @@ class Parser:
115
115
 
116
116
  for dependency_fields in fields:
117
117
  try:
118
- dependency = DependencyConfiguration(**dependency_fields)
118
+ dependency = DependencyConfig(**dependency_fields)
119
119
  except TypeError as error:
120
120
  _ensure_error_is_for_missing_fields(error)
121
121
  raise MissingMandatoryFields(error.args[0], "dependencies") from error
@@ -125,17 +125,17 @@ class Parser:
125
125
  return dependencies
126
126
 
127
127
  @staticmethod
128
- def _parse_template_configuration(fields: dict[str, Union[str, bool, list[str]]]) -> TemplateConfiguration:
128
+ def _parse_template_configuration(fields: dict[str, Union[str, bool, list[str]]]) -> TemplateConfig:
129
129
  try:
130
- return TemplateConfiguration(**fields)
130
+ return TemplateConfig(**fields)
131
131
  except TypeError as error:
132
132
  _ensure_error_is_for_missing_fields(error)
133
133
  raise MissingMandatoryFields(error.args[0], "template") from error
134
134
 
135
135
  @staticmethod
136
- def _parse_git_configuration(fields: dict[str, Union[str, bool]]) -> GitConfiguration:
136
+ def _parse_git_configuration(fields: dict[str, Union[str, bool]]) -> GitConfig:
137
137
  try:
138
- return GitConfiguration(**fields)
138
+ return GitConfig(**fields)
139
139
  except TypeError as error:
140
140
  _ensure_error_is_for_missing_fields(error)
141
141
  raise MissingMandatoryFields(error.args[0], "git") from error
@@ -2,7 +2,7 @@ import subprocess
2
2
  from abc import ABC, abstractmethod
3
3
  import sys
4
4
 
5
- from instant_python.config.domain.dependency_configuration import DependencyConfiguration
5
+ from instant_python.config.domain.dependency_config import DependencyConfig
6
6
 
7
7
 
8
8
  class DependencyManager(ABC):
@@ -11,7 +11,7 @@ class DependencyManager(ABC):
11
11
  self._system_os = sys.platform
12
12
 
13
13
  @abstractmethod
14
- def setup_environment(self, python_version: str, dependencies: list[DependencyConfiguration]) -> None:
14
+ def setup_environment(self, python_version: str, dependencies: list[DependencyConfig]) -> None:
15
15
  raise NotImplementedError
16
16
 
17
17
  def _run_command(self, command: str) -> None:
@@ -1,7 +1,7 @@
1
1
  from pathlib import Path
2
2
  import subprocess
3
3
 
4
- from instant_python.config.domain.dependency_configuration import DependencyConfiguration
4
+ from instant_python.config.domain.dependency_config import DependencyConfig
5
5
  from instant_python.dependency_manager.dependency_manager import DependencyManager
6
6
  from instant_python.dependency_manager.command_execution_error import CommandExecutionError
7
7
 
@@ -11,7 +11,7 @@ class PdmDependencyManager(DependencyManager):
11
11
  super().__init__(project_directory)
12
12
  self._pdm = self._set_pdm_executable_based_on_os()
13
13
 
14
- def setup_environment(self, python_version: str, dependencies: list[DependencyConfiguration]) -> None:
14
+ def setup_environment(self, python_version: str, dependencies: list[DependencyConfig]) -> None:
15
15
  try:
16
16
  if self._pdm_is_not_installed():
17
17
  self._install()
@@ -50,7 +50,7 @@ class PdmDependencyManager(DependencyManager):
50
50
  self._run_command(command=f"{self._pdm} python install {version}")
51
51
  print(f">>> Python {version} installed successfully")
52
52
 
53
- def _install_dependencies(self, dependencies: list[DependencyConfiguration]) -> None:
53
+ def _install_dependencies(self, dependencies: list[DependencyConfig]) -> None:
54
54
  self._create_virtual_environment()
55
55
  print(">>> Installing dependencies...")
56
56
  for dependency in dependencies:
@@ -58,7 +58,7 @@ class PdmDependencyManager(DependencyManager):
58
58
  self._run_command(command)
59
59
  print(">>> Dependencies installed successfully")
60
60
 
61
- def _build_dependency_install_command(self, dependency: DependencyConfiguration) -> str:
61
+ def _build_dependency_install_command(self, dependency: DependencyConfig) -> str:
62
62
  command = [f"{self._pdm} add"]
63
63
  command.extend(dependency.get_installation_flag())
64
64
  command.append(dependency.get_specification())