instant-python 0.9.0__tar.gz → 0.9.2__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 (349) hide show
  1. {instant_python-0.9.0 → instant_python-0.9.2}/.github/workflows/release.yml +3 -1
  2. {instant_python-0.9.0 → instant_python-0.9.2}/CHANGELOG.md +165 -0
  3. {instant_python-0.9.0 → instant_python-0.9.2}/PKG-INFO +4 -2
  4. {instant_python-0.9.0/instant_python → instant_python-0.9.2/instant_python/cli}/cli.py +1 -1
  5. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/success_response.py +1 -1
  6. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/ci.yml +1 -1
  7. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/release.yml +15 -23
  8. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/pyproject.toml +4 -2
  9. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/pytest.ini +1 -1
  10. instant_python-0.9.2/instant_python/templates/boilerplate/random_generator.py +18 -0
  11. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/int_primitives_mother.py +8 -0
  12. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/string_primitives_mother.py +8 -0
  13. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_int_value_object.py +85 -0
  14. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_string_value_object.py +75 -0
  15. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_uuid_value_object.py +88 -0
  16. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/uuid_primitives_mother.py +12 -0
  17. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/value_object.py +8 -0
  18. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +9 -4
  19. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +3 -0
  20. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/makefile.yml.j2 +1 -1
  21. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/test.yml.j2 +4 -0
  22. instant_python-0.9.2/instant_python/templates/project_structure/test_value_objects.yml.j2 +26 -0
  23. {instant_python-0.9.0 → instant_python-0.9.2}/pyproject.toml +8 -9
  24. instant_python-0.9.2/test/render/__init__.py +0 -0
  25. {instant_python-0.9.0 → instant_python-0.9.2}/tox.ini +1 -1
  26. {instant_python-0.9.0 → instant_python-0.9.2}/uv.lock +33 -1
  27. instant_python-0.9.0/instant_python/templates/boilerplate/random_generator.py +0 -9
  28. {instant_python-0.9.0 → instant_python-0.9.2}/.github/FUNDING.yml +0 -0
  29. {instant_python-0.9.0 → instant_python-0.9.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  30. {instant_python-0.9.0 → instant_python-0.9.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  31. {instant_python-0.9.0 → instant_python-0.9.2}/.github/actions/python_setup/action.yml +0 -0
  32. {instant_python-0.9.0 → instant_python-0.9.2}/.github/pull_request_template.md +0 -0
  33. {instant_python-0.9.0 → instant_python-0.9.2}/.github/workflows/ci.yml +0 -0
  34. {instant_python-0.9.0 → instant_python-0.9.2}/.github/workflows/pages.yml +0 -0
  35. {instant_python-0.9.0 → instant_python-0.9.2}/.gitignore +0 -0
  36. {instant_python-0.9.0 → instant_python-0.9.2}/.pre-commit-config.yaml +0 -0
  37. {instant_python-0.9.0 → instant_python-0.9.2}/.python-version +0 -0
  38. {instant_python-0.9.0 → instant_python-0.9.2}/CITATION.cff +0 -0
  39. {instant_python-0.9.0 → instant_python-0.9.2}/LICENSE +0 -0
  40. {instant_python-0.9.0 → instant_python-0.9.2}/README.md +0 -0
  41. {instant_python-0.9.0 → instant_python-0.9.2}/SECURITY.md +0 -0
  42. {instant_python-0.9.0 → instant_python-0.9.2}/codeql-config.yml +0 -0
  43. {instant_python-0.9.0 → instant_python-0.9.2}/docs/assets/favicon.svg +0 -0
  44. {instant_python-0.9.0 → instant_python-0.9.2}/docs/assets/logo.svg +0 -0
  45. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  46. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  47. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  48. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/changes.md.j2 +0 -0
  49. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/first_release.md.j2 +0 -0
  50. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/macros.md.j2 +0 -0
  51. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  52. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/.release_notes.md.j2 +0 -0
  53. {instant_python-0.9.0 → instant_python-0.9.2}/docs/changelog/CHANGELOG.md.j2 +0 -0
  54. {instant_python-0.9.0 → instant_python-0.9.2}/docs/downloads_macro.py +0 -0
  55. {instant_python-0.9.0 → instant_python-0.9.2}/docs/examples/configuration.md +0 -0
  56. {instant_python-0.9.0 → instant_python-0.9.2}/docs/examples/custom_template.md +0 -0
  57. {instant_python-0.9.0 → instant_python-0.9.2}/docs/guide/command_config.md +0 -0
  58. {instant_python-0.9.0 → instant_python-0.9.2}/docs/guide/command_init.md +0 -0
  59. {instant_python-0.9.0 → instant_python-0.9.2}/docs/home/contributing.md +0 -0
  60. {instant_python-0.9.0 → instant_python-0.9.2}/docs/home/getting_started.md +0 -0
  61. {instant_python-0.9.0 → instant_python-0.9.2}/docs/home/index.md +0 -0
  62. {instant_python-0.9.0 → instant_python-0.9.2}/docs/home/releases.md +0 -0
  63. {instant_python-0.9.0 → instant_python-0.9.2}/docs/home/security.md +0 -0
  64. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/__init__.py +0 -0
  65. {instant_python-0.9.0/instant_python/commands → instant_python-0.9.2/instant_python/cli}/__init__.py +0 -0
  66. {instant_python-0.9.0/instant_python → instant_python-0.9.2/instant_python/cli}/instant_python_typer.py +0 -0
  67. {instant_python-0.9.0/instant_python/configuration → instant_python-0.9.2/instant_python/commands}/__init__.py +0 -0
  68. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/commands/config.py +0 -0
  69. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/commands/init.py +0 -0
  70. {instant_python-0.9.0/instant_python/configuration/dependency → instant_python-0.9.2/instant_python/configuration}/__init__.py +0 -0
  71. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/configuration_schema.py +0 -0
  72. {instant_python-0.9.0/instant_python/configuration/general → instant_python-0.9.2/instant_python/configuration/dependency}/__init__.py +0 -0
  73. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/dependency/dependency_configuration.py +0 -0
  74. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +0 -0
  75. {instant_python-0.9.0/instant_python/configuration/git → instant_python-0.9.2/instant_python/configuration/general}/__init__.py +0 -0
  76. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/general/general_configuration.py +0 -0
  77. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/general/invalid_dependency_manager_value.py +0 -0
  78. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/general/invalid_license_value.py +0 -0
  79. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/general/invalid_python_version_value.py +0 -0
  80. {instant_python-0.9.0/instant_python/configuration/parser → instant_python-0.9.2/instant_python/configuration/git}/__init__.py +0 -0
  81. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/git/git_configuration.py +0 -0
  82. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/git/git_user_or_email_not_present.py +0 -0
  83. {instant_python-0.9.0/instant_python/configuration/question → instant_python-0.9.2/instant_python/configuration/parser}/__init__.py +0 -0
  84. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/parser/config_key_not_present.py +0 -0
  85. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
  86. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/parser/empty_configuration_not_allowed.py +0 -0
  87. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/parser/missing_mandatory_fields.py +0 -0
  88. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/parser/parser.py +0 -0
  89. {instant_python-0.9.0/instant_python/configuration/step → instant_python-0.9.2/instant_python/configuration/question}/__init__.py +0 -0
  90. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/boolean_question.py +0 -0
  91. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/choice_question.py +0 -0
  92. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/conditional_question.py +0 -0
  93. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/free_text_question.py +0 -0
  94. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/multiple_choice_question.py +0 -0
  95. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/question.py +0 -0
  96. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question/questionary.py +0 -0
  97. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/question_wizard.py +0 -0
  98. {instant_python-0.9.0/instant_python/configuration/template → instant_python-0.9.2/instant_python/configuration/step}/__init__.py +0 -0
  99. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/step/dependencies_step.py +0 -0
  100. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/step/general_step.py +0 -0
  101. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/step/git_step.py +0 -0
  102. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/step/steps.py +0 -0
  103. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/step/template_step.py +0 -0
  104. {instant_python-0.9.0/instant_python/dependency_manager → instant_python-0.9.2/instant_python/configuration/template}/__init__.py +0 -0
  105. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/template/bounded_context_not_applicable.py +0 -0
  106. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/template/bounded_context_not_especified.py +0 -0
  107. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/template/invalid_built_in_features_values.py +0 -0
  108. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/template/invalid_template_value.py +0 -0
  109. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/configuration/template/template_configuration.py +0 -0
  110. {instant_python-0.9.0/instant_python/formatter → instant_python-0.9.2/instant_python/dependency_manager}/__init__.py +0 -0
  111. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/command_execution_error.py +0 -0
  112. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/dependency_manager.py +0 -0
  113. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
  114. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/pdm_dependency_manager.py +0 -0
  115. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
  116. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/dependency_manager/uv_dependency_manager.py +0 -0
  117. {instant_python-0.9.0/instant_python/git → instant_python-0.9.2/instant_python/formatter}/__init__.py +0 -0
  118. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/formatter/project_formatter.py +0 -0
  119. {instant_python-0.9.0/instant_python/project_creator → instant_python-0.9.2/instant_python/git}/__init__.py +0 -0
  120. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/git/git_configurer.py +0 -0
  121. {instant_python-0.9.0/instant_python/render → instant_python-0.9.2/instant_python/project_creator}/__init__.py +0 -0
  122. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/directory.py +0 -0
  123. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/file.py +0 -0
  124. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/file_has_not_been_created.py +0 -0
  125. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/file_system.py +0 -0
  126. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/node.py +0 -0
  127. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
  128. {instant_python-0.9.0/instant_python/shared → instant_python-0.9.2/instant_python/render}/__init__.py +0 -0
  129. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/custom_project_renderer.py +0 -0
  130. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/jinja_custom_filters.py +0 -0
  131. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/jinja_environment.py +0 -0
  132. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/jinja_project_renderer.py +0 -0
  133. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/template_file_not_found_error.py +0 -0
  134. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/render/unknown_template_error.py +0 -0
  135. {instant_python-0.9.0/instant_python/templates/boilerplate/event_bus → instant_python-0.9.2/instant_python/shared}/__init__.py +0 -0
  136. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/application_error.py +0 -0
  137. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/error_types.py +0 -0
  138. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/supported_built_in_features.py +0 -0
  139. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/supported_licenses.py +0 -0
  140. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/supported_managers.py +0 -0
  141. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/supported_python_versions.py +0 -0
  142. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/shared/supported_templates.py +0 -0
  143. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/.gitignore +0 -0
  144. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  145. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/.python-version +0 -0
  146. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  147. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/LICENSE +0 -0
  148. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/README.md +0 -0
  149. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  150. {instant_python-0.9.0/instant_python/templates/boilerplate/exceptions → instant_python-0.9.2/instant_python/templates/boilerplate/event_bus}/__init__.py +0 -0
  151. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  152. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  153. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  154. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  155. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
  156. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  157. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  158. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  159. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  160. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  161. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  162. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  163. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  164. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  165. {instant_python-0.9.0/instant_python/templates/boilerplate/fastapi → instant_python-0.9.2/instant_python/templates/boilerplate/exceptions}/__init__.py +0 -0
  166. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  167. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  168. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/error.py +0 -0
  169. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
  170. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
  171. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
  172. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  173. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  174. {instant_python-0.9.0/instant_python/templates/boilerplate/logger → instant_python-0.9.2/instant_python/templates/boilerplate/fastapi}/__init__.py +0 -0
  175. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  176. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
  177. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  178. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  179. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  180. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/action.yml +0 -0
  181. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  182. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  183. {instant_python-0.9.0/instant_python/templates/boilerplate/persistence → instant_python-0.9.2/instant_python/templates/boilerplate/logger}/__init__.py +0 -0
  184. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  185. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  186. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  187. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/mypy.ini +0 -0
  188. {instant_python-0.9.0/instant_python/templates/boilerplate/persistence/async → instant_python-0.9.2/instant_python/templates/boilerplate/persistence}/__init__.py +0 -0
  189. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  190. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  191. {instant_python-0.9.0/instant_python/templates/boilerplate/persistence/synchronous → instant_python-0.9.2/instant_python/templates/boilerplate/persistence/async}/__init__.py +0 -0
  192. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  193. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  194. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  195. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  196. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  197. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  198. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  199. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  200. {instant_python-0.9.0/instant_python/templates/boilerplate/value_object → instant_python-0.9.2/instant_python/templates/boilerplate/persistence/synchronous}/__init__.py +0 -0
  201. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  202. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  203. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
  204. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  205. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  206. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  207. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
  208. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/makefile +0 -0
  209. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
  210. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
  211. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
  212. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
  213. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  214. {instant_python-0.9.0/test → instant_python-0.9.2/instant_python/templates/boilerplate/value_object}/__init__.py +0 -0
  215. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/aggregate.py +0 -0
  216. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
  217. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
  218. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
  219. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/validation.py +0 -0
  220. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
  221. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
  222. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
  223. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/citation.yml.j2 +0 -0
  224. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
  225. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +0 -0
  226. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
  227. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
  228. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +0 -0
  229. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
  230. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
  231. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
  232. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_domain.yml.j2 +0 -0
  233. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
  234. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
  235. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/github_issues_template.yml.j2 +0 -0
  236. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
  237. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/license.yml.j2 +0 -0
  238. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
  239. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/macros.j2 +0 -0
  240. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
  241. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/precommit_hook.yml.j2 +0 -0
  242. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
  243. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
  244. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
  245. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
  246. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/security.yml.j2 +0 -0
  247. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
  248. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/source.yml.j2 +0 -0
  249. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
  250. {instant_python-0.9.0 → instant_python-0.9.2}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
  251. {instant_python-0.9.0 → instant_python-0.9.2}/makefile +0 -0
  252. {instant_python-0.9.0 → instant_python-0.9.2}/mkdocs.yml +0 -0
  253. {instant_python-0.9.0 → instant_python-0.9.2}/mypy.ini +0 -0
  254. {instant_python-0.9.0 → instant_python-0.9.2}/scripts/add_dependency.py +0 -0
  255. {instant_python-0.9.0 → instant_python-0.9.2}/scripts/remove_dependency.py +0 -0
  256. {instant_python-0.9.0/test/configuration → instant_python-0.9.2/test}/__init__.py +0 -0
  257. {instant_python-0.9.0/test/configuration/dependency → instant_python-0.9.2/test/configuration}/__init__.py +0 -0
  258. {instant_python-0.9.0/test/configuration/general → instant_python-0.9.2/test/configuration/dependency}/__init__.py +0 -0
  259. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/dependency/dependency_configuration_mother.py +0 -0
  260. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/dependency/test_dependency_configuration.py +0 -0
  261. {instant_python-0.9.0/test/configuration/git → instant_python-0.9.2/test/configuration/general}/__init__.py +0 -0
  262. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/general/general_configuration_mother.py +0 -0
  263. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/general/test_general_configuration.py +0 -0
  264. {instant_python-0.9.0/test/configuration/parser → instant_python-0.9.2/test/configuration/git}/__init__.py +0 -0
  265. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/git/git_configuration_mother.py +0 -0
  266. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/git/test_git_configuration.py +0 -0
  267. {instant_python-0.9.0/test/configuration/parser/resources → instant_python-0.9.2/test/configuration/parser}/__init__.py +0 -0
  268. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/approvaltests_config.json +0 -0
  269. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
  270. {instant_python-0.9.0/test/configuration/question → instant_python-0.9.2/test/configuration/parser/resources}/__init__.py +0 -0
  271. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/config.yml +0 -0
  272. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/empty_config.yml +0 -0
  273. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
  274. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
  275. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
  276. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
  277. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
  278. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/parser/test_parser.py +0 -0
  279. {instant_python-0.9.0/test/configuration/template → instant_python-0.9.2/test/configuration/question}/__init__.py +0 -0
  280. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/question/test_boolean_question.py +0 -0
  281. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/question/test_choice_question.py +0 -0
  282. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/question/test_free_text_question.py +0 -0
  283. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/question/test_multiple_choice_question.py +0 -0
  284. {instant_python-0.9.0/test/dependency_manager → instant_python-0.9.2/test/configuration/template}/__init__.py +0 -0
  285. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/template/template_configuration_mother.py +0 -0
  286. {instant_python-0.9.0 → instant_python-0.9.2}/test/configuration/template/test_template_configuration.py +0 -0
  287. {instant_python-0.9.0/test/formatter → instant_python-0.9.2/test/dependency_manager}/__init__.py +0 -0
  288. {instant_python-0.9.0 → instant_python-0.9.2}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
  289. {instant_python-0.9.0 → instant_python-0.9.2}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
  290. {instant_python-0.9.0 → instant_python-0.9.2}/test/dependency_manager/test_pdm_dependency_manager.py +0 -0
  291. {instant_python-0.9.0 → instant_python-0.9.2}/test/dependency_manager/test_uv_dependency_manager.py +0 -0
  292. {instant_python-0.9.0/test/git → instant_python-0.9.2/test/formatter}/__init__.py +0 -0
  293. {instant_python-0.9.0 → instant_python-0.9.2}/test/formatter/mock_project_formatter.py +0 -0
  294. {instant_python-0.9.0 → instant_python-0.9.2}/test/formatter/test_project_formatter.py +0 -0
  295. {instant_python-0.9.0/test/project_creator → instant_python-0.9.2/test/git}/__init__.py +0 -0
  296. {instant_python-0.9.0 → instant_python-0.9.2}/test/git/mock_git_configurer.py +0 -0
  297. {instant_python-0.9.0 → instant_python-0.9.2}/test/git/test_git_configurer.py +0 -0
  298. {instant_python-0.9.0/test/project_creator/resources/boilerplate/fastapi → instant_python-0.9.2/test/project_creator}/__init__.py +0 -0
  299. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approvaltests_config.json +0 -0
  300. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_custom_project_structure.json.approved.txt +0 -0
  301. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +0 -0
  302. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_logger.json.approved.txt +0 -0
  303. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_migrator.json.approved.txt +0 -0
  304. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_only_with_fastapi.json.approved.txt +0 -0
  305. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
  306. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
  307. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/directory_mother.py +0 -0
  308. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
  309. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
  310. {instant_python-0.9.0/test/project_creator/resources/boilerplate/logger → instant_python-0.9.2/test/project_creator/resources/boilerplate/fastapi}/__init__.py +0 -0
  311. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/application.py +0 -0
  312. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/http_response.py +0 -0
  313. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/lifespan.py +0 -0
  314. {instant_python-0.9.0/test/render → instant_python-0.9.2/test/project_creator/resources/boilerplate/logger}/__init__.py +0 -0
  315. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/logger/logger.py +0 -0
  316. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/persistence/alembic_migrator.py +0 -0
  317. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +0 -0
  318. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/config.yml +0 -0
  319. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/config_fastapi_with_logger.yml +0 -0
  320. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/config_fastapi_with_migrator.yml +0 -0
  321. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/config_with_only_fastapi.yml +0 -0
  322. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
  323. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure.json +0 -0
  324. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_fastapi_with_logger.json +0 -0
  325. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_fastapi_with_migrator.json +0 -0
  326. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_only_with_fastapi.json +0 -0
  327. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/test_directory.py +0 -0
  328. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/test_file.py +0 -0
  329. {instant_python-0.9.0 → instant_python-0.9.2}/test/project_creator/test_file_system.py +0 -0
  330. {instant_python-0.9.0 → instant_python-0.9.2}/test/random_generator.py +0 -0
  331. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approvaltests_config.json +0 -0
  332. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
  333. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
  334. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
  335. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
  336. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +0 -0
  337. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +0 -0
  338. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -0
  339. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/clean_architecture_config.yml +0 -0
  340. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/custom_template.yml +0 -0
  341. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
  342. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/domain_driven_design_config.yml +0 -0
  343. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
  344. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
  345. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/standard_project_with_git_config.yml +0 -0
  346. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/resources/test_template.j2 +0 -0
  347. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/test_custom_project_renderer.py +0 -0
  348. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/test_jinja_environment.py +0 -0
  349. {instant_python-0.9.0 → instant_python-0.9.2}/test/render/test_jinja_project_renderer.py +0 -0
@@ -2,6 +2,8 @@ name: Release and Publish
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
5
+ release:
6
+ types: [published]
5
7
 
6
8
  jobs:
7
9
  release:
@@ -46,7 +48,7 @@ jobs:
46
48
  name: Publish to PyPI
47
49
  needs:
48
50
  - release
49
- if: needs.release.outputs.released == 'true'
51
+ if: needs.release.outputs.released == 'true' || github.event_name == 'release'
50
52
  runs-on: ubuntu-latest
51
53
  environment: release
52
54
  permissions:
@@ -1,5 +1,170 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.9.1 (2025-07-18)
4
+
5
+ ### 🪲 Bug Fixes
6
+
7
+ - **cli**: Update command in tox.ini file to be able to make reference to new location for application entry point ([`a8baef2`](https://github.com/dimanu-py/instant-python/commit/a8baef2eb88018cb6a0210122348e753dc10cacb))
8
+
9
+ - **templates**: Update pyproject.toml template to include optional build dependencies when github actions built-in feature is selected ([`b765ec8`](https://github.com/dimanu-py/instant-python/commit/b765ec81f3e61ce170873eaed371910e41e2e871))
10
+
11
+ - **templates**: Update release action template to work running build command to update uv.lock ([`9824451`](https://github.com/dimanu-py/instant-python/commit/982445188567c61d31ffc11d04ccdab163fb1ee4))
12
+
13
+ ### ⚙️ Build System
14
+
15
+ - Update changelog section in semantic release config ([`7a413cf`](https://github.com/dimanu-py/instant-python/commit/7a413cf7a95b4da30ef23efafdf94cb2e2118168))
16
+
17
+ - Update application entry point ([`8b5330a`](https://github.com/dimanu-py/instant-python/commit/8b5330a99ae432dc0e04c19f67ccc55e5ee9fe5a))
18
+
19
+ ### ♻️ Refactoring
20
+
21
+ - **cli**: Move cli files to its own folder ([`81b8c3c`](https://github.com/dimanu-py/instant-python/commit/81b8c3c3839bf548a5ffac3432615d392ad2a05e))
22
+
23
+ - **templates**: Update name of test workflow ([`80225f5`](https://github.com/dimanu-py/instant-python/commit/80225f51014aef1d06660803aa0fec65633f41bd))
24
+
25
+ ## v0.9.0 (2025-07-18)
26
+
27
+ ### ✨ Features
28
+
29
+ - **templates**: Add github action release to project structure for github actions ([`9e3309f`](https://github.com/dimanu-py/instant-python/commit/9e3309f8154a72954427f947ae61753d37253060))
30
+
31
+ - **templates**: Include python semantic release library in default dependencies if github actions is selected ([`5374ba4`](https://github.com/dimanu-py/instant-python/commit/5374ba4e77f8790dc6d5b691d3f511889df87f24))
32
+
33
+ - **shared**: Add github issues template as possible built in feature ([`9d97ce5`](https://github.com/dimanu-py/instant-python/commit/9d97ce53baded8ed6e782ea437daa9110c74c316))
34
+
35
+ - **templates**: Add template for release with python semantic release ([`23569a0`](https://github.com/dimanu-py/instant-python/commit/23569a0bafb33b1726beab47bf11e6f7fde95065))
36
+
37
+ - **templates**: Include github issues template into project structure templates ([`36a2975`](https://github.com/dimanu-py/instant-python/commit/36a2975e726db3172965e2f8866b2af48488c193))
38
+
39
+ - **templates**: Add templates for github issues templates ([`fec68e4`](https://github.com/dimanu-py/instant-python/commit/fec68e48418875c57e98a16dbc041e3eeeffdea9))
40
+
41
+ - **templates**: Include pip audit and precommit as default dependencies if they are selected as built in features ([`86a8af5`](https://github.com/dimanu-py/instant-python/commit/86a8af5592c03046d0228131beb4b9718bd00f57))
42
+
43
+ - **templates**: Include audit command in makefile template if github actions is selected ([`8035fab`](https://github.com/dimanu-py/instant-python/commit/8035fab7a66b1735da07d6a750bc754b1f6c4d48))
44
+
45
+ - **templates**: Modify project structure for github action including joined ci workflow ([`4ae4bd7`](https://github.com/dimanu-py/instant-python/commit/4ae4bd77d292697761dd4b631a6f87b32dc0796e))
46
+
47
+ - **templates**: Join lint and test github workflows into one single file and include more security and code quality jobs ([`a21eafe`](https://github.com/dimanu-py/instant-python/commit/a21eafebc11da2fe2d440acdfc96e3d6910e8bdc))
48
+
49
+ - **shared**: Include security as supported built in feature ([`5cfa228`](https://github.com/dimanu-py/instant-python/commit/5cfa228abca91b5e0d09ca7f68baa0a910f5da26))
50
+
51
+ - **templates**: Include security template into project structures ([`65c9b84`](https://github.com/dimanu-py/instant-python/commit/65c9b849f2b37faf5c0fcae8993e9981b71da829))
52
+
53
+ - **templates**: Create security file template ([`21b1bb0`](https://github.com/dimanu-py/instant-python/commit/21b1bb0257e1caa23db66e645e9e047010c10920))
54
+
55
+ - **shared**: Add citation as supported built in feature ([`893abab`](https://github.com/dimanu-py/instant-python/commit/893abab4e16a66b0da7e8b9e26d2f2ed452453d5))
56
+
57
+ - **templates**: Add citation project structure template to default templates ([`0a798d5`](https://github.com/dimanu-py/instant-python/commit/0a798d57642eb990f42b2e614d840f543829c767))
58
+
59
+ - **templates**: Add citation file template ([`888e8c6`](https://github.com/dimanu-py/instant-python/commit/888e8c696ad1ab2ce9916fa4a85c6ceae529cf14))
60
+
61
+ - **shared**: Add precommit option in SupportedBuiltInFeatures enum ([`f69cadb`](https://github.com/dimanu-py/instant-python/commit/f69cadb733634a6ecb4e9ab092e2a2bb375f98c9))
62
+
63
+ - **templates**: Include precommit template project structure in all default templates ([`8601841`](https://github.com/dimanu-py/instant-python/commit/8601841cb74c7a3a68b1d06daa89c25b3b23c0f3))
64
+
65
+ - **templates**: Include specific make commands in template based on installed dependencies and selected built in features ([`62688c0`](https://github.com/dimanu-py/instant-python/commit/62688c072cb6bfa1d00e7f6a08f82a1ed975aa8e))
66
+
67
+ - **templates**: Include pre commit hook in makefile if it's selected as built in features ([`2c391fb`](https://github.com/dimanu-py/instant-python/commit/2c391fb6c1c69990ae551c6bf8621bb1b40811d1))
68
+
69
+ - **templates**: Update pre commit config file to be included as built in feature ([`972aaa4`](https://github.com/dimanu-py/instant-python/commit/972aaa4131e54d3e875b14e3d117ea30a23bc0e9))
70
+
71
+ - **templates**: Include new base aggregate in value objects and when in EDA project structure ([`4f038ef`](https://github.com/dimanu-py/instant-python/commit/4f038ef59fd4f0c54ba2880c4a505984560a4254))
72
+
73
+ - **templates**: Create base aggregate class and make aggregate for event driven architecture inherit from it ([`44f843d`](https://github.com/dimanu-py/instant-python/commit/44f843de0c6fcf739309f37350e9ba8b4c7bc650))
74
+
75
+ - **templates**: Include error handlers in fastapi application template for project structure ([`add3634`](https://github.com/dimanu-py/instant-python/commit/add36343fb11e4be42c96dca42ef00153d178187))
76
+
77
+ - **templates**: Separate template files for fastapi error handlers ([`cfd7d14`](https://github.com/dimanu-py/instant-python/commit/cfd7d14cd1f515b513774df5f25f2180baee2cb3))
78
+
79
+ - **templates**: Include new model for value objects in project structure ([`39d2ba1`](https://github.com/dimanu-py/instant-python/commit/39d2ba101aab089addd80ce38ee1753c0dff7883))
80
+
81
+ - **templates**: Update value object templates to use new version that autovalidates using @validate decorator ([`186ecd5`](https://github.com/dimanu-py/instant-python/commit/186ecd518b8c9ca685a4db04598eb55e27fc3316))
82
+
83
+ - **templates**: Update project structure templates that were using old version of domain error an include error base class as well as rename the folder to errors instead of exceptions ([`5c363b6`](https://github.com/dimanu-py/instant-python/commit/5c363b6e126942531f6bb1ca5990ede9dc92bf18))
84
+
85
+ - **templates**: Implement new error template as base class for errors and let domain error inherit from it ([`1e15d5d`](https://github.com/dimanu-py/instant-python/commit/1e15d5d58dbb583fb681df648ddda573ef2c1679))
86
+
87
+ - **templates**: Update logger project structure template to include new handler and new logger implementation ([`b33bd1e`](https://github.com/dimanu-py/instant-python/commit/b33bd1e4021006b236607d28dd7472431bfc3ddf))
88
+
89
+ - **templates**: Include log middleware in fastapi application project structure if logger is selected ([`4ca7641`](https://github.com/dimanu-py/instant-python/commit/4ca76411a0f906ec51aac38653ec29cec9cdf9b1))
90
+
91
+ - **templates**: Update fastapi main application template to include log middleware if logger is selected too ([`c92810c`](https://github.com/dimanu-py/instant-python/commit/c92810ce79b199892a03ce7e29dd03daacf00130))
92
+
93
+ - **templates**: Create fastapi log middleware template ([`b196afc`](https://github.com/dimanu-py/instant-python/commit/b196afce1838180439c2a4a900816fdda5063ef5))
94
+
95
+ - **templates**: Modify fastapi main application template with new logger ([`021039d`](https://github.com/dimanu-py/instant-python/commit/021039de56a92bf018dbbbd68d57bc60bbd2126d))
96
+
97
+ - **templates**: Add new templates for logger implementation ([`d937478`](https://github.com/dimanu-py/instant-python/commit/d9374786fd1cb95c89933331b678ef6fa0e2d7cf))
98
+
99
+ - **templates**: Remove http_response and status_code templates ([`5f75969`](https://github.com/dimanu-py/instant-python/commit/5f759699f15818cf0b73e9c88e13cc4ff567dc57))
100
+
101
+ - **templates**: Use new response model in fastapi error handlers ([`ef4e543`](https://github.com/dimanu-py/instant-python/commit/ef4e54308ae783360fb0eaa75fab8642c896a0d7))
102
+
103
+ - **templates**: Substitute http_response and status_code templates from fastapi infra for success and error responses model ([`2c086be`](https://github.com/dimanu-py/instant-python/commit/2c086bebdb646d34447f82f2cdf93aef894b0e66))
104
+
105
+ - **templates**: Add ErrorResponse and SuccessResponse templates for fastapi application ([`9ec98f1`](https://github.com/dimanu-py/instant-python/commit/9ec98f1e8db59386f76c636825f889f117ff9871))
106
+
107
+ ### 🪲 Bug Fixes
108
+
109
+ - **templates**: Add semantic release config to pyproject template if github actions is selected ([`a6533ce`](https://github.com/dimanu-py/instant-python/commit/a6533ceeb62b2877b5698f4ca39eb1e4cdb2a374))
110
+
111
+ - **templates**: Fix indentations in github actions templates ([`cd0d882`](https://github.com/dimanu-py/instant-python/commit/cd0d88293612e4e83206615b903ff40af69b5dac))
112
+
113
+ - **templates**: Add {% raw %} and {% endraw %} tags in github actions templates when they access repository variables ([`46ec5c1`](https://github.com/dimanu-py/instant-python/commit/46ec5c1489b937065b6ebd8a1723ae581adc9445))
114
+
115
+ - **templates**: Correct forma of helper scripts when makefile built in feature is selected and include custom hooks only if precommit feature is not selected ([`fe15d7e`](https://github.com/dimanu-py/instant-python/commit/fe15d7e7521bd70879490e1a96973477524518f3))
116
+
117
+ - **templates**: Correct error in conditional in makefile template ([`b126eed`](https://github.com/dimanu-py/instant-python/commit/b126eed146787cf254070e4169afbde1433b5ce2))
118
+
119
+ - **templates**: Use selected dependency manager for new make commands ([`80bf833`](https://github.com/dimanu-py/instant-python/commit/80bf8333d06facae66b3f15992f0d59bc5bab785))
120
+
121
+ - **templates**: Include makefile if precommit built in feature is selected ([`9dcec97`](https://github.com/dimanu-py/instant-python/commit/9dcec97973b1a91a78d2bdf11a3bd20e097e8c68))
122
+
123
+ - **templates**: Write correct name for aggregate template file in value objects project structure ([`d651243`](https://github.com/dimanu-py/instant-python/commit/d651243d7baf602f262ed63d31bc4b0d0c2c2952))
124
+
125
+ - **render**: Create jinja environment with autoscape argument enabled to avoid potential XSS attacks ([`976d459`](https://github.com/dimanu-py/instant-python/commit/976d459538ae8eea403c65300304e6405fec46b6))
126
+
127
+ - **templates**: Format correctly if statement in application.py template ([`409d606`](https://github.com/dimanu-py/instant-python/commit/409d6064d97ef016c34dab57d3c9456a47e6542f))
128
+
129
+ - **templates**: Include logger and migrator in fastapi application only if they are selected too for DDD and standard project templates ([`f5a8087`](https://github.com/dimanu-py/instant-python/commit/f5a80870d0ecdd2f47419ad5e51d20131649b422))
130
+
131
+ - **templates**: Include logger and migrator in fastapi application only if they are selected as built in feature too in clean architecture template ([`191d81f`](https://github.com/dimanu-py/instant-python/commit/191d81fd8ace560f3a6359bc9cf767c73c310d50))
132
+
133
+ ### ⚙️ Build System
134
+
135
+ - Modify release job and semantic release configuration to be able to update uv.lock with the new version ([`2d52828`](https://github.com/dimanu-py/instant-python/commit/2d5282804956e4e5ab31c20b320663f9184f0a84))
136
+
137
+ - Update version in uv.lock ([`9d1bd2c`](https://github.com/dimanu-py/instant-python/commit/9d1bd2c380293c7e1635a03da0654e7084b9e1eb))
138
+
139
+ - Update semantic release to not update major version if is zero and to allow 0 major version ([`34d251e`](https://github.com/dimanu-py/instant-python/commit/34d251e8a57eafa595a0c54e314238f389218dd6))
140
+
141
+ - Remove test hook in precommit config ([`b8d451d`](https://github.com/dimanu-py/instant-python/commit/b8d451db1a024ae41a6958dbf9513801f3b69627))
142
+
143
+ - Remove final echo from makefile commands to let output of the command itself inform the user ([`cd895ad`](https://github.com/dimanu-py/instant-python/commit/cd895adacfe1e470a746165380369c9c365996e8))
144
+
145
+ - Remove -e command from echo in makefile ([`6a624a3`](https://github.com/dimanu-py/instant-python/commit/6a624a3cacf8b96adaeba20bb635b7e43d853002))
146
+
147
+ - Exclude resources folder from being formatted or linted ([`cf00038`](https://github.com/dimanu-py/instant-python/commit/cf000382ba13a0bc4dbda8eb346e9cdeb4fe4541))
148
+
149
+ - Remove AST check from pre commit hook ([`b46437e`](https://github.com/dimanu-py/instant-python/commit/b46437e804a1d54f13444e92827bd15d9fb2fd57))
150
+
151
+ - Add docs-serve command to makefile ([`9430934`](https://github.com/dimanu-py/instant-python/commit/943093498f168f49cc8b2593ea17911321f2e012))
152
+
153
+ - Improve messages of make command and add build and clean commands ([`6a0e428`](https://github.com/dimanu-py/instant-python/commit/6a0e4285d3bb43f9e88dad32fd2f93732ab271c8))
154
+
155
+ - Remove commitizen config as is not longer needed ([`0ed6a8b`](https://github.com/dimanu-py/instant-python/commit/0ed6a8bd50c6ebf30b71e4734fd3e4a81123b280))
156
+
157
+ ### ♻️ Refactoring
158
+
159
+ - **templates**: Improve format of github action template ([`a01b4b0`](https://github.com/dimanu-py/instant-python/commit/a01b4b0c5f57ecbc5c66995abda26157b923ecd8))
160
+
161
+ - **templates**: Improve formatting of makefile and reorganize commands ([`efa8de5`](https://github.com/dimanu-py/instant-python/commit/efa8de5c5bae2bd79c8e4a0a01ef4aa016b0e54c))
162
+
163
+ - **templates**: Convert local setup and custom hooks into python scripts ([`12af46c`](https://github.com/dimanu-py/instant-python/commit/12af46c7cf2bd437f2f81b412ceb615a7cd563e5))
164
+
165
+ - **templates**: Convert add and remove dependency scripts into python scripts instead of bash scripts ([`0d29c14`](https://github.com/dimanu-py/instant-python/commit/0d29c14a7aa7a113fe365d1e30055ead52908b29))
166
+
167
+
3
168
  ## v0.8.2 (2025-07-16)
4
169
 
5
170
  ### 🪲 Bug Fixes
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instant-python
3
- Version: 0.9.0
3
+ Version: 0.9.2
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/
7
- Author-email: dimanu-py <diegomtz126@gmail.com>
7
+ Author-email: dimanu-py <dimanu.py@gmail.com>
8
8
  License: Apache License
9
9
  Version 2.0, January 2004
10
10
  http://www.apache.org/licenses/
@@ -223,6 +223,8 @@ Requires-Dist: jinja2>=3.1.6
223
223
  Requires-Dist: pyyaml>=6.0.2
224
224
  Requires-Dist: questionary>=2.1.0
225
225
  Requires-Dist: typer>=0.15.1
226
+ Provides-Extra: build
227
+ Requires-Dist: uv>=0.7.21; extra == 'build'
226
228
  Description-Content-Type: text/markdown
227
229
 
228
230
  <div align="center">
@@ -3,7 +3,7 @@ from rich.panel import Panel
3
3
 
4
4
  from instant_python.commands import init, config
5
5
  from instant_python.shared.application_error import ApplicationError
6
- from instant_python.instant_python_typer import InstantPythonTyper
6
+ from instant_python.cli.instant_python_typer import InstantPythonTyper
7
7
 
8
8
  app = InstantPythonTyper()
9
9
  console = Console()
@@ -1,5 +1,5 @@
1
1
  from pydantic import BaseModel
2
- from starlette.responses import JSONResponse
2
+ from fastapi.responses import JSONResponse
3
3
 
4
4
 
5
5
  class SuccessResponse(BaseModel):
@@ -1,4 +1,4 @@
1
- name: CI - Testing and Code analysis
1
+ name: Testing and Code analysis
2
2
 
3
3
  on:
4
4
  push:
@@ -19,12 +19,9 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  permissions:
21
21
  contents: write
22
- pull-requests: write
23
-
24
22
  outputs:
25
- released: {% raw %}${{ steps.released.outputs.released }}{% endraw %}
26
-
27
- tag: {% raw %}${{ steps.released.outputs.tag }}{% endraw %}
23
+ released: ${{ steps.released.outputs.released }}
24
+ tag: ${{ steps.released.outputs.tag }}
28
25
 
29
26
  steps:
30
27
  - name: 🛡️ Harden runner
@@ -38,34 +35,30 @@ jobs:
38
35
  fetch-depth: 0
39
36
  persist-credentials: false
40
37
 
41
- - name: 🔖 Semantic Release
38
+ - name: 🔖 Create release
42
39
  id: released
43
40
  uses: python-semantic-release/python-semantic-release@2896129e02bb7809d2cf0c1b8e9e795ee27acbcf # v10.0.2
44
41
  with:
45
- build: false
42
+ build: true
46
43
  push: true
47
44
  changelog: true
48
45
  commit: true
49
46
  tag: true
50
47
  vcs_release: true
51
48
  config_file: pyproject.toml
52
- github_token: {% raw %}${{ secrets.GITHUB_TOKEN }}{% endraw %}
53
-
54
- git_committer_email: {% raw %}${{ vars.GIT_COMMITTER_EMAIL }}{% endraw %}
55
-
56
- git_committer_name: {% raw %}${{ vars.GIT_COMMITTER_NAME }}{% endraw %}
57
-
58
- ssh_public_signing_key: {% raw %}${{ vars.SSH_PUBLIC_SIGNING_KEY }}{% endraw %}
59
-
60
- ssh_private_signing_key: {% raw %}${{ secrets.SSH_PRIVATE_SIGNING_KEY }}{% endraw %}
49
+ github_token: ${{ secrets.GITHUB_TOKEN }}
50
+ git_committer_email: ${{ vars.GIT_COMMITTER_EMAIL }}
51
+ git_committer_name: ${{ vars.GIT_COMMITTER_NAME }}
52
+ ssh_public_signing_key: ${{ vars.SSH_PUBLIC_SIGNING_KEY }}
53
+ ssh_private_signing_key: ${{ secrets.SSH_PRIVATE_SIGNING_KEY }}
61
54
 
62
55
  build-and-publish:
63
- name: Publish Release to PyPI Workflow
64
- needs: release
65
- if: needs.release.result == 'success' && needs.release.outputs.released == 'true'
56
+ name: Publish to PyPI
57
+ needs:
58
+ - release
59
+ if: needs.release.outputs.released == 'true'
66
60
  runs-on: ubuntu-latest
67
61
  environment: release
68
-
69
62
  permissions:
70
63
  id-token: write
71
64
 
@@ -80,8 +73,7 @@ jobs:
80
73
  with:
81
74
  fetch-depth: 0
82
75
  persist-credentials: false
83
- ref: {% raw %}refs/tags/${{ needs.release.outputs.tag }}{% endraw %}
84
-
76
+ ref: refs/tags/${{ needs.release.outputs.tag }}
85
77
 
86
78
  - name: 🛠️ Setup environment
87
79
  uses: ./.github/actions/python_setup
@@ -90,4 +82,4 @@ jobs:
90
82
  run: uv build
91
83
 
92
84
  - name: 🚀 Publish
93
- uses: pypa/gh-action-pypi-publish@release/v1
85
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -72,6 +72,9 @@ test = [
72
72
  {% endif %}
73
73
 
74
74
  {% if "github_actions" in template.built_in_features %}
75
+ [project.optional-dependencies]
76
+ build = ["uv>=0.7.21"]
77
+
75
78
  [tool.semantic_release]
76
79
  version_toml = ["pyproject.toml:project.version"]
77
80
  commit_message = "bump: new version {version} created"
@@ -84,8 +87,8 @@ build_command = """
84
87
  pip install -e '.[build]'
85
88
  uv lock --upgrade-package instant-python
86
89
  git add uv.lock
87
- uv build
88
90
  """
91
+
89
92
  [tool.semantic_release.commit_parser_options]
90
93
  minor_tags = ["feat"]
91
94
  patch_tags = ["fix", "perf", "refactor", "test", "build"]
@@ -95,7 +98,6 @@ parse_squash_commits = false
95
98
  ignore_merge_commits = true
96
99
 
97
100
  [tool.semantic_release.changelog]
98
- changelog_file = "CHANGELOG.md"
99
101
  exclude_commit_patterns = ['''^Merge pull request #''', '''^Merge branch ''']
100
102
  mode = "update"
101
103
  #template_dir = "docs/changelog"
@@ -4,7 +4,7 @@ markers =
4
4
  acceptance: mark a test as an acceptance test
5
5
  integration: mark a test as an integration test
6
6
  testpaths =
7
- tests
7
+ test
8
8
  asyncio_default_fixture_loop_scope =
9
9
  function
10
10
  asyncio_mode = auto
@@ -0,0 +1,18 @@
1
+ from faker import Faker
2
+
3
+
4
+ class RandomGenerator:
5
+ faker = Faker()
6
+
7
+ @classmethod
8
+ def uuid(cls) -> str:
9
+ return cls.faker.uuid4()
10
+
11
+ @classmethod
12
+ def word(cls) -> str:
13
+ return cls.faker.word()
14
+
15
+
16
+ @classmethod
17
+ def positive_integer(cls, minimum: int = 0, maximum: int = 100) -> int:
18
+ return cls.faker.pyint(min_value=minimum, max_value=maximum)
@@ -0,0 +1,8 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ from test.{{ template_domain_import }}.random_generator import RandomGenerator
3
+
4
+
5
+ class IntPrimitivesMother:
6
+ @staticmethod
7
+ def any() -> int:
8
+ return RandomGenerator.positive_integer()
@@ -0,0 +1,8 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ from test.{{ template_domain_import }}.random_generator import RandomGenerator
3
+
4
+
5
+ class StringPrimitivesMother:
6
+ @staticmethod
7
+ def any() -> str:
8
+ return RandomGenerator.word()
@@ -0,0 +1,85 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ import pytest
3
+ {% if dependencies | has_dependency("expects") %}
4
+ from expects import expect, equal, raise_error
5
+ {% endif %}
6
+
7
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.incorrect_value_type_error import (
8
+ IncorrectValueTypeError,
9
+ )
10
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.invalid_negative_value_error import (
11
+ InvalidNegativeValueError,
12
+ )
13
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.required_value_error import RequiredValueError
14
+ from {{ general.source_name }}.{{ template_domain_import }}.value_objects.usables.int_value_object import (
15
+ IntValueObject,
16
+ )
17
+ from test.{{ template_domain_import }}.value_objects.int_primitives_mother import (
18
+ IntPrimitivesMother,
19
+ )
20
+
21
+
22
+ @pytest.mark.unit
23
+ class TestIntValueObject:
24
+ {% if dependencies | has_dependency("expects") %}
25
+ def test_should_create_int_value_object(self) -> None:
26
+ value = IntPrimitivesMother.any()
27
+
28
+ integer = IntValueObject(value)
29
+
30
+ expect(integer.value).to(equal(value))
31
+
32
+ def test_should_raise_error_when_value_is_none(self) -> None:
33
+ expect(lambda: IntValueObject(None)).to(raise_error(RequiredValueError))
34
+
35
+ def test_should_raise_error_when_value_is_not_integer(self) -> None:
36
+ expect(lambda: IntValueObject("123")).to(raise_error(IncorrectValueTypeError))
37
+
38
+ def test_should_raise_error_if_int_value_is_negative(self) -> None:
39
+ expect(lambda: IntValueObject(-1)).to(raise_error(InvalidNegativeValueError))
40
+
41
+ def test_should_compare_equal_with_same_value(self) -> None:
42
+ common_value = IntPrimitivesMother.any()
43
+ first_integer = IntValueObject(common_value)
44
+ second_integer = IntValueObject(common_value)
45
+
46
+ expect(first_integer).to(equal(second_integer))
47
+
48
+ def test_should_not_be_equal_with_different_values(self) -> None:
49
+ first_integer = IntValueObject(IntPrimitivesMother.any())
50
+ second_integer = IntValueObject(IntPrimitivesMother.any())
51
+
52
+ expect(first_integer).to_not(equal(second_integer))
53
+ {% else %}
54
+ def test_should_create_int_value_object(self) -> None:
55
+ value = IntPrimitivesMother.any()
56
+
57
+ integer = IntValueObject(value)
58
+
59
+ assert integer.value == value
60
+
61
+ def test_should_raise_error_when_value_is_none(self) -> None:
62
+ with pytest.raises(RequiredValueError):
63
+ IntValueObject(None)
64
+
65
+ def test_should_raise_error_when_value_is_not_integer(self) -> None:
66
+ with pytest.raises(IncorrectValueTypeError):
67
+ IntValueObject("123")
68
+
69
+ def test_should_raise_error_if_int_value_is_negative(self) -> None:
70
+ with pytest.raises(InvalidNegativeValueError):
71
+ IntValueObject(-1)
72
+
73
+ def test_should_compare_equal_with_same_value(self) -> None:
74
+ common_value = IntPrimitivesMother.any()
75
+ first_integer = IntValueObject(common_value)
76
+ second_integer = IntValueObject(common_value)
77
+
78
+ assert first_integer == second_integer
79
+
80
+ def test_should_not_be_equal_with_different_values(self) -> None:
81
+ first_integer = IntValueObject(IntPrimitivesMother.any())
82
+ second_integer = IntValueObject(IntPrimitivesMother.any())
83
+
84
+ assert first_integer != second_integer
85
+ {% endif %}
@@ -0,0 +1,75 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ import pytest
3
+ {% if dependencies | has_dependency("expects") %}
4
+ from expects import expect, equal, raise_error
5
+ {% endif %}
6
+
7
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.incorrect_value_type_error import (
8
+ IncorrectValueTypeError,
9
+ )
10
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.required_value_error import RequiredValueError
11
+ from {{ general.source_name }}.{{ template_domain_import }}.value_objects.usables.string_value_object import (
12
+ StringValueObject,
13
+ )
14
+ from test.{{ template_domain_import }}.value_objects.string_primitives_mother import (
15
+ StringPrimitivesMother,
16
+ )
17
+
18
+
19
+ @pytest.mark.unit
20
+ class TestStringValueObject:
21
+ {% if dependencies | has_dependency("expects") %}
22
+ def test_should_create_string_value_object(self) -> None:
23
+ value = StringPrimitivesMother.any()
24
+
25
+ string = StringValueObject(value)
26
+
27
+ expect(string.value).to(equal(value))
28
+
29
+ def test_should_raise_error_when_value_is_none(self) -> None:
30
+ expect(lambda: StringValueObject(None)).to(raise_error(RequiredValueError))
31
+
32
+ def test_should_raise_error_when_value_is_not_string(self) -> None:
33
+ expect(lambda: StringValueObject(123)).to(raise_error(IncorrectValueTypeError))
34
+
35
+ def test_should_compare_equal_with_same_value(self) -> None:
36
+ common_value = StringPrimitivesMother.any()
37
+ first_string = StringValueObject(common_value)
38
+ second_string = StringValueObject(common_value)
39
+
40
+ expect(first_string).to(equal(second_string))
41
+
42
+ def test_should_not_be_equal_with_different_values(self) -> None:
43
+ first_string = StringValueObject(StringPrimitivesMother.any())
44
+ second_string = StringValueObject(StringPrimitivesMother.any())
45
+
46
+ expect(first_string).to_not(equal(second_string))
47
+ {% else %}
48
+ def test_should_create_string_value_object(self) -> None:
49
+ value = StringPrimitivesMother.any()
50
+
51
+ string = StringValueObject(value)
52
+
53
+ assert string.value == value
54
+
55
+ def test_should_raise_error_when_value_is_none(self) -> None:
56
+ with pytest.raises(RequiredValueError):
57
+ StringValueObject(None)
58
+
59
+ def test_should_raise_error_when_value_is_not_string(self) -> None:
60
+ with pytest.raises(IncorrectValueTypeError):
61
+ StringValueObject(123)
62
+
63
+ def test_should_compare_equal_with_same_value(self) -> None:
64
+ common_value = StringPrimitivesMother.any()
65
+ first_string = StringValueObject(common_value)
66
+ second_string = StringValueObject(common_value)
67
+
68
+ assert first_string == second_string
69
+
70
+ def test_should_not_be_equal_with_different_values(self) -> None:
71
+ first_string = StringValueObject(StringPrimitivesMother.any())
72
+ second_string = StringValueObject(StringPrimitivesMother.any())
73
+
74
+ assert first_string != second_string
75
+ {% endif %}
@@ -0,0 +1,88 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ import pytest
3
+ {% if dependencies | has_dependency("expects") %}
4
+ from expects import expect, equal, raise_error
5
+ {% endif %}
6
+
7
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.incorrect_value_type_error import (
8
+ IncorrectValueTypeError,
9
+ )
10
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.invalid_id_format_error import (
11
+ InvalidIdFormatError,
12
+ )
13
+ from {{ general.source_name }}.{{ template_domain_import }}.errors.required_value_error import RequiredValueError
14
+ from {{ general.source_name }}.{{ template_domain_import }}.value_objects.usables.uuid import (
15
+ Uuid,
16
+ )
17
+ from test.{{ template_domain_import }}.value_objects.uuid_primitives_mother import (
18
+ UuidPrimitivesMother,
19
+ )
20
+
21
+
22
+ @pytest.mark.unit
23
+ class TestUuidValueObject:
24
+ {% if dependencies | has_dependency("expects") %}
25
+ def test_should_create_uuid_value_object(self) -> None:
26
+ value = UuidPrimitivesMother.any()
27
+
28
+ uuid = Uuid(value)
29
+
30
+ expect(uuid.value).to(equal(value))
31
+
32
+ def test_should_raise_error_when_value_is_none(self) -> None:
33
+ expect(lambda: Uuid(None)).to(raise_error(RequiredValueError))
34
+
35
+ def test_should_raise_error_when_value_is_not_string(self) -> None:
36
+ expect(lambda: Uuid(123)).to(raise_error(IncorrectValueTypeError))
37
+
38
+ def test_should_raise_error_when_value_is_not_valid_uuid(self) -> None:
39
+ invalid_uuid = UuidPrimitivesMother.invalid()
40
+ expect(lambda: Uuid(invalid_uuid)).to(raise_error(InvalidIdFormatError))
41
+
42
+ def test_should_compare_equal_with_same_value(self) -> None:
43
+ common_value = UuidPrimitivesMother.any()
44
+ first_uuid = Uuid(common_value)
45
+ second_uuid = Uuid(common_value)
46
+
47
+ expect(first_uuid).to(equal(second_uuid))
48
+
49
+ def test_should_not_be_equal_with_different_values(self) -> None:
50
+ first_uuid = Uuid(UuidPrimitivesMother.any())
51
+ second_uuid = Uuid(UuidPrimitivesMother.any())
52
+
53
+ expect(first_uuid).to_not(equal(second_uuid))
54
+
55
+ {% else %}
56
+ def test_should_create_uuid_value_object(self) -> None:
57
+ value = UuidPrimitivesMother.any()
58
+
59
+ uuid = Uuid(value)
60
+
61
+ assert uuid.value == value
62
+
63
+ def test_should_raise_error_when_value_is_none(self) -> None:
64
+ with pytest.raises(RequiredValueError):
65
+ Uuid(None)
66
+
67
+ def test_should_raise_error_when_value_is_not_string(self) -> None:
68
+ with pytest.raises(IncorrectValueTypeError):
69
+ Uuid(123)
70
+
71
+ def test_should_raise_error_when_value_is_not_valid_uuid(self) -> None:
72
+ invalid_uuid = UuidPrimitivesMother.invalid()
73
+ with pytest.raises(InvalidIdFormatError):
74
+ Uuid(invalid_uuid)
75
+
76
+ def test_should_compare_equal_with_same_value(self) -> None:
77
+ common_value = UuidPrimitivesMother.any()
78
+ first_uuid = Uuid(common_value)
79
+ second_uuid = Uuid(common_value)
80
+
81
+ assert first_uuid == second_uuid
82
+
83
+ def test_should_not_be_equal_with_different_values(self) -> None:
84
+ first_uuid = Uuid(UuidPrimitivesMother.any())
85
+ second_uuid = Uuid(UuidPrimitivesMother.any())
86
+
87
+ assert first_uuid != second_uuid
88
+ {% endif %}
@@ -0,0 +1,12 @@
1
+ {% set template_domain_import = "shared.domain"|compute_base_path(template.name) %}
2
+ from test.{{ template_domain_import }}.random_generator import RandomGenerator
3
+
4
+
5
+ class UuidPrimitivesMother:
6
+ @staticmethod
7
+ def any() -> str:
8
+ return RandomGenerator.uuid()
9
+
10
+ @staticmethod
11
+ def invalid() -> str:
12
+ return "00000000-0000-0000-0000"