instant-python 0.9.1__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.1 → instant_python-0.9.2}/.github/workflows/release.yml +3 -2
  2. {instant_python-0.9.1 → instant_python-0.9.2}/CHANGELOG.md +22 -0
  3. {instant_python-0.9.1 → instant_python-0.9.2}/PKG-INFO +1 -1
  4. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/success_response.py +1 -1
  5. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/pytest.ini +1 -1
  6. instant_python-0.9.2/instant_python/templates/boilerplate/random_generator.py +18 -0
  7. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/int_primitives_mother.py +8 -0
  8. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/string_primitives_mother.py +8 -0
  9. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_int_value_object.py +85 -0
  10. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_string_value_object.py +75 -0
  11. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/test_uuid_value_object.py +88 -0
  12. instant_python-0.9.2/instant_python/templates/boilerplate/value_object/uuid_primitives_mother.py +12 -0
  13. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/value_object.py +8 -0
  14. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +9 -4
  15. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +3 -0
  16. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/makefile.yml.j2 +1 -1
  17. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/test.yml.j2 +4 -0
  18. instant_python-0.9.2/instant_python/templates/project_structure/test_value_objects.yml.j2 +26 -0
  19. {instant_python-0.9.1 → instant_python-0.9.2}/pyproject.toml +3 -7
  20. {instant_python-0.9.1 → instant_python-0.9.2}/uv.lock +1 -1
  21. instant_python-0.9.1/instant_python/templates/boilerplate/random_generator.py +0 -9
  22. {instant_python-0.9.1 → instant_python-0.9.2}/.github/FUNDING.yml +0 -0
  23. {instant_python-0.9.1 → instant_python-0.9.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  24. {instant_python-0.9.1 → instant_python-0.9.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  25. {instant_python-0.9.1 → instant_python-0.9.2}/.github/actions/python_setup/action.yml +0 -0
  26. {instant_python-0.9.1 → instant_python-0.9.2}/.github/pull_request_template.md +0 -0
  27. {instant_python-0.9.1 → instant_python-0.9.2}/.github/workflows/ci.yml +0 -0
  28. {instant_python-0.9.1 → instant_python-0.9.2}/.github/workflows/pages.yml +0 -0
  29. {instant_python-0.9.1 → instant_python-0.9.2}/.gitignore +0 -0
  30. {instant_python-0.9.1 → instant_python-0.9.2}/.pre-commit-config.yaml +0 -0
  31. {instant_python-0.9.1 → instant_python-0.9.2}/.python-version +0 -0
  32. {instant_python-0.9.1 → instant_python-0.9.2}/CITATION.cff +0 -0
  33. {instant_python-0.9.1 → instant_python-0.9.2}/LICENSE +0 -0
  34. {instant_python-0.9.1 → instant_python-0.9.2}/README.md +0 -0
  35. {instant_python-0.9.1 → instant_python-0.9.2}/SECURITY.md +0 -0
  36. {instant_python-0.9.1 → instant_python-0.9.2}/codeql-config.yml +0 -0
  37. {instant_python-0.9.1 → instant_python-0.9.2}/docs/assets/favicon.svg +0 -0
  38. {instant_python-0.9.1 → instant_python-0.9.2}/docs/assets/logo.svg +0 -0
  39. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  40. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  41. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  42. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/changes.md.j2 +0 -0
  43. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/first_release.md.j2 +0 -0
  44. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/macros.md.j2 +0 -0
  45. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  46. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/.release_notes.md.j2 +0 -0
  47. {instant_python-0.9.1 → instant_python-0.9.2}/docs/changelog/CHANGELOG.md.j2 +0 -0
  48. {instant_python-0.9.1 → instant_python-0.9.2}/docs/downloads_macro.py +0 -0
  49. {instant_python-0.9.1 → instant_python-0.9.2}/docs/examples/configuration.md +0 -0
  50. {instant_python-0.9.1 → instant_python-0.9.2}/docs/examples/custom_template.md +0 -0
  51. {instant_python-0.9.1 → instant_python-0.9.2}/docs/guide/command_config.md +0 -0
  52. {instant_python-0.9.1 → instant_python-0.9.2}/docs/guide/command_init.md +0 -0
  53. {instant_python-0.9.1 → instant_python-0.9.2}/docs/home/contributing.md +0 -0
  54. {instant_python-0.9.1 → instant_python-0.9.2}/docs/home/getting_started.md +0 -0
  55. {instant_python-0.9.1 → instant_python-0.9.2}/docs/home/index.md +0 -0
  56. {instant_python-0.9.1 → instant_python-0.9.2}/docs/home/releases.md +0 -0
  57. {instant_python-0.9.1 → instant_python-0.9.2}/docs/home/security.md +0 -0
  58. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/__init__.py +0 -0
  59. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/cli/__init__.py +0 -0
  60. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/cli/cli.py +0 -0
  61. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/cli/instant_python_typer.py +0 -0
  62. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/commands/__init__.py +0 -0
  63. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/commands/config.py +0 -0
  64. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/commands/init.py +0 -0
  65. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/__init__.py +0 -0
  66. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/configuration_schema.py +0 -0
  67. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/dependency/__init__.py +0 -0
  68. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/dependency/dependency_configuration.py +0 -0
  69. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +0 -0
  70. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/general/__init__.py +0 -0
  71. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/general/general_configuration.py +0 -0
  72. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/general/invalid_dependency_manager_value.py +0 -0
  73. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/general/invalid_license_value.py +0 -0
  74. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/general/invalid_python_version_value.py +0 -0
  75. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/git/__init__.py +0 -0
  76. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/git/git_configuration.py +0 -0
  77. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/git/git_user_or_email_not_present.py +0 -0
  78. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/__init__.py +0 -0
  79. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/config_key_not_present.py +0 -0
  80. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
  81. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/empty_configuration_not_allowed.py +0 -0
  82. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/missing_mandatory_fields.py +0 -0
  83. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/parser/parser.py +0 -0
  84. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/__init__.py +0 -0
  85. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/boolean_question.py +0 -0
  86. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/choice_question.py +0 -0
  87. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/conditional_question.py +0 -0
  88. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/free_text_question.py +0 -0
  89. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/multiple_choice_question.py +0 -0
  90. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/question.py +0 -0
  91. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question/questionary.py +0 -0
  92. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/question_wizard.py +0 -0
  93. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/__init__.py +0 -0
  94. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/dependencies_step.py +0 -0
  95. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/general_step.py +0 -0
  96. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/git_step.py +0 -0
  97. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/steps.py +0 -0
  98. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/step/template_step.py +0 -0
  99. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/__init__.py +0 -0
  100. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/bounded_context_not_applicable.py +0 -0
  101. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/bounded_context_not_especified.py +0 -0
  102. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/invalid_built_in_features_values.py +0 -0
  103. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/invalid_template_value.py +0 -0
  104. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/configuration/template/template_configuration.py +0 -0
  105. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/__init__.py +0 -0
  106. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/command_execution_error.py +0 -0
  107. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/dependency_manager.py +0 -0
  108. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
  109. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/pdm_dependency_manager.py +0 -0
  110. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
  111. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/dependency_manager/uv_dependency_manager.py +0 -0
  112. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/formatter/__init__.py +0 -0
  113. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/formatter/project_formatter.py +0 -0
  114. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/git/__init__.py +0 -0
  115. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/git/git_configurer.py +0 -0
  116. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/__init__.py +0 -0
  117. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/directory.py +0 -0
  118. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/file.py +0 -0
  119. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/file_has_not_been_created.py +0 -0
  120. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/file_system.py +0 -0
  121. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/node.py +0 -0
  122. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
  123. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/__init__.py +0 -0
  124. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/custom_project_renderer.py +0 -0
  125. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/jinja_custom_filters.py +0 -0
  126. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/jinja_environment.py +0 -0
  127. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/jinja_project_renderer.py +0 -0
  128. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/template_file_not_found_error.py +0 -0
  129. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/render/unknown_template_error.py +0 -0
  130. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/__init__.py +0 -0
  131. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/application_error.py +0 -0
  132. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/error_types.py +0 -0
  133. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/supported_built_in_features.py +0 -0
  134. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/supported_licenses.py +0 -0
  135. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/supported_managers.py +0 -0
  136. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/supported_python_versions.py +0 -0
  137. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/shared/supported_templates.py +0 -0
  138. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/.gitignore +0 -0
  139. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  140. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/.python-version +0 -0
  141. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  142. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/LICENSE +0 -0
  143. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/README.md +0 -0
  144. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  145. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
  146. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  147. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  148. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  149. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  150. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
  151. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  152. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  153. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  154. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  155. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  156. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  157. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  158. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  159. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  160. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
  161. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  162. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  163. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/error.py +0 -0
  164. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
  165. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
  166. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
  167. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  168. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  169. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
  170. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  171. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
  172. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  173. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  174. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  175. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/action.yml +0 -0
  176. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  177. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/ci.yml +0 -0
  178. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  179. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/github/release.yml +0 -0
  180. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
  181. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  182. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  183. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  184. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/mypy.ini +0 -0
  185. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
  186. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  187. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  188. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
  189. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  190. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  191. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  192. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  193. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  194. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  195. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  196. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  197. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
  198. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  199. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  200. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/pyproject.toml +0 -0
  201. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
  202. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  203. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  204. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  205. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
  206. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/makefile +0 -0
  207. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
  208. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
  209. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
  210. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
  211. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  212. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/__init__.py +0 -0
  213. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/aggregate.py +0 -0
  214. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
  215. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
  216. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
  217. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/boilerplate/value_object/validation.py +0 -0
  218. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
  219. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
  220. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
  221. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/citation.yml.j2 +0 -0
  222. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
  223. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +0 -0
  224. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
  225. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
  226. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +0 -0
  227. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
  228. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
  229. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
  230. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_domain.yml.j2 +0 -0
  231. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
  232. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
  233. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/github_issues_template.yml.j2 +0 -0
  234. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
  235. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/license.yml.j2 +0 -0
  236. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
  237. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/macros.j2 +0 -0
  238. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
  239. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/precommit_hook.yml.j2 +0 -0
  240. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
  241. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
  242. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
  243. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
  244. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/security.yml.j2 +0 -0
  245. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
  246. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/standard_project/source.yml.j2 +0 -0
  247. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
  248. {instant_python-0.9.1 → instant_python-0.9.2}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
  249. {instant_python-0.9.1 → instant_python-0.9.2}/makefile +0 -0
  250. {instant_python-0.9.1 → instant_python-0.9.2}/mkdocs.yml +0 -0
  251. {instant_python-0.9.1 → instant_python-0.9.2}/mypy.ini +0 -0
  252. {instant_python-0.9.1 → instant_python-0.9.2}/scripts/add_dependency.py +0 -0
  253. {instant_python-0.9.1 → instant_python-0.9.2}/scripts/remove_dependency.py +0 -0
  254. {instant_python-0.9.1 → instant_python-0.9.2}/test/__init__.py +0 -0
  255. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/__init__.py +0 -0
  256. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/dependency/__init__.py +0 -0
  257. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/dependency/dependency_configuration_mother.py +0 -0
  258. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/dependency/test_dependency_configuration.py +0 -0
  259. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/general/__init__.py +0 -0
  260. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/general/general_configuration_mother.py +0 -0
  261. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/general/test_general_configuration.py +0 -0
  262. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/git/__init__.py +0 -0
  263. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/git/git_configuration_mother.py +0 -0
  264. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/git/test_git_configuration.py +0 -0
  265. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/__init__.py +0 -0
  266. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/approvaltests_config.json +0 -0
  267. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
  268. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/__init__.py +0 -0
  269. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/config.yml +0 -0
  270. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/empty_config.yml +0 -0
  271. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
  272. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
  273. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
  274. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
  275. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
  276. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/parser/test_parser.py +0 -0
  277. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/question/__init__.py +0 -0
  278. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/question/test_boolean_question.py +0 -0
  279. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/question/test_choice_question.py +0 -0
  280. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/question/test_free_text_question.py +0 -0
  281. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/question/test_multiple_choice_question.py +0 -0
  282. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/template/__init__.py +0 -0
  283. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/template/template_configuration_mother.py +0 -0
  284. {instant_python-0.9.1 → instant_python-0.9.2}/test/configuration/template/test_template_configuration.py +0 -0
  285. {instant_python-0.9.1 → instant_python-0.9.2}/test/dependency_manager/__init__.py +0 -0
  286. {instant_python-0.9.1 → instant_python-0.9.2}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
  287. {instant_python-0.9.1 → instant_python-0.9.2}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
  288. {instant_python-0.9.1 → instant_python-0.9.2}/test/dependency_manager/test_pdm_dependency_manager.py +0 -0
  289. {instant_python-0.9.1 → instant_python-0.9.2}/test/dependency_manager/test_uv_dependency_manager.py +0 -0
  290. {instant_python-0.9.1 → instant_python-0.9.2}/test/formatter/__init__.py +0 -0
  291. {instant_python-0.9.1 → instant_python-0.9.2}/test/formatter/mock_project_formatter.py +0 -0
  292. {instant_python-0.9.1 → instant_python-0.9.2}/test/formatter/test_project_formatter.py +0 -0
  293. {instant_python-0.9.1 → instant_python-0.9.2}/test/git/__init__.py +0 -0
  294. {instant_python-0.9.1 → instant_python-0.9.2}/test/git/mock_git_configurer.py +0 -0
  295. {instant_python-0.9.1 → instant_python-0.9.2}/test/git/test_git_configurer.py +0 -0
  296. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/__init__.py +0 -0
  297. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/approvaltests_config.json +0 -0
  298. {instant_python-0.9.1 → 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
  299. {instant_python-0.9.1 → 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
  300. {instant_python-0.9.1 → 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
  301. {instant_python-0.9.1 → 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
  302. {instant_python-0.9.1 → 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
  303. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
  304. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
  305. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/directory_mother.py +0 -0
  306. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
  307. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
  308. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/__init__.py +0 -0
  309. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/application.py +0 -0
  310. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/http_response.py +0 -0
  311. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/fastapi/lifespan.py +0 -0
  312. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/logger/__init__.py +0 -0
  313. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/logger/logger.py +0 -0
  314. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/boilerplate/persistence/alembic_migrator.py +0 -0
  315. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +0 -0
  316. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/config.yml +0 -0
  317. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/config_fastapi_with_logger.yml +0 -0
  318. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/config_fastapi_with_migrator.yml +0 -0
  319. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/config_with_only_fastapi.yml +0 -0
  320. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
  321. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure.json +0 -0
  322. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_fastapi_with_logger.json +0 -0
  323. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_fastapi_with_migrator.json +0 -0
  324. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/resources/rendered_project_structure_only_with_fastapi.json +0 -0
  325. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/test_directory.py +0 -0
  326. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/test_file.py +0 -0
  327. {instant_python-0.9.1 → instant_python-0.9.2}/test/project_creator/test_file_system.py +0 -0
  328. {instant_python-0.9.1 → instant_python-0.9.2}/test/random_generator.py +0 -0
  329. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/__init__.py +0 -0
  330. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/approvaltests_config.json +0 -0
  331. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
  332. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
  333. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
  334. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
  335. {instant_python-0.9.1 → 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
  336. {instant_python-0.9.1 → 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
  337. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -0
  338. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/clean_architecture_config.yml +0 -0
  339. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/custom_template.yml +0 -0
  340. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
  341. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/domain_driven_design_config.yml +0 -0
  342. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
  343. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
  344. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/standard_project_with_git_config.yml +0 -0
  345. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/resources/test_template.j2 +0 -0
  346. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/test_custom_project_renderer.py +0 -0
  347. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/test_jinja_environment.py +0 -0
  348. {instant_python-0.9.1 → instant_python-0.9.2}/test/render/test_jinja_project_renderer.py +0 -0
  349. {instant_python-0.9.1 → instant_python-0.9.2}/tox.ini +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:
@@ -23,7 +25,6 @@ jobs:
23
25
  uses: actions/checkout@v4
24
26
  with:
25
27
  fetch-depth: 0
26
- fetch-tags: true
27
28
  persist-credentials: false
28
29
 
29
30
  - name: 🔖 Create release
@@ -47,7 +48,7 @@ jobs:
47
48
  name: Publish to PyPI
48
49
  needs:
49
50
  - release
50
- if: needs.release.outputs.released == 'true'
51
+ if: needs.release.outputs.released == 'true' || github.event_name == 'release'
51
52
  runs-on: ubuntu-latest
52
53
  environment: release
53
54
  permissions:
@@ -1,5 +1,27 @@
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
+
3
25
  ## v0.9.0 (2025-07-18)
4
26
 
5
27
  ### ✨ Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instant-python
3
- Version: 0.9.1
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/
@@ -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):
@@ -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"
@@ -42,6 +42,10 @@ class ValueObject[T](ABC):
42
42
  def __str__(self) -> str:
43
43
  return str(self._value)
44
44
 
45
+ @override
46
+ def __hash__(self) -> int:
47
+ return hash(self._value)
48
+
45
49
  @override
46
50
  def __setattr__(self, name: str, value: T) -> None:
47
51
  """Prevents modification of the value after initialization."""
@@ -101,6 +105,10 @@ class ValueObject(Generic[T], ABC):
101
105
  @override
102
106
  def __str__(self) -> str:
103
107
  return str(self._value)
108
+
109
+ @override
110
+ def __hash__(self) -> int:
111
+ return hash(self._value)
104
112
 
105
113
  @override
106
114
  def __setattr__(self, name: str, value: T) -> None:
@@ -3,19 +3,24 @@
3
3
  type: directory
4
4
  python: True
5
5
  children:
6
- - name: unit
6
+ - name: domain
7
7
  type: directory
8
8
  python: True
9
- {% if "event_bus" in template.built_in_features %}
9
+ {% if ["value_objects", "event_bus"] | is_in(template.built_in_features) %}
10
10
  children:
11
+ {% if "value_objects" in template.built_in_features %}
12
+ {{ macros.include_and_indent("project_structure/test_value_objects.yml.j2", 8) }}
13
+ {% endif %}
14
+ {% if "event_bus" in template.built_in_features %}
11
15
  - name: event_bus/mock_event_bus
12
16
  type: boilerplate_file
13
17
  extension: .py
14
18
  {% endif %}
15
- - name: integration
19
+ {% endif %}
20
+ - name: infrastructure
16
21
  type: directory
17
22
  python: True
18
- - name: acceptance
23
+ - name: delivery
19
24
  type: directory
20
25
  python: True
21
26
  - name: random_generator
@@ -14,6 +14,9 @@
14
14
  - name: random_generator
15
15
  type: boilerplate_file
16
16
  extension: .py
17
+ {% if "value_objects" in template.built_in_features %}
18
+ {{ macros.include_and_indent("project_structure/test_value_objects.yml.j2", 12) }}
19
+ {% endif %}
17
20
  {% if "event_bus" in template.built_in_features %}
18
21
  - name: infra
19
22
  type: directory
@@ -10,10 +10,10 @@
10
10
  - name: scripts/remove_dependency
11
11
  type: boilerplate_file
12
12
  extension: .py
13
+ {% if "precommit_hook" not in template.built_in_features %}
13
14
  - name: scripts/local_setup
14
15
  type: boilerplate_file
15
16
  extension: .py
16
- {% if "precommit_hook" not in template.built_in_features %}
17
17
  - name: hooks
18
18
  type: directory
19
19
  children:
@@ -1,3 +1,4 @@
1
+ {% import "project_structure/macros.j2" as macros with context %}
1
2
  - name: test
2
3
  type: directory
3
4
  python: True
@@ -5,6 +6,9 @@
5
6
  - name: random_generator
6
7
  type: boilerplate_file
7
8
  extension: .py
9
+ {% if "value_objects" in template.built_in_features %}
10
+ {{ macros.include_and_indent("project_structure/test_value_objects.yml.j2", 4) }}
11
+ {% endif %}
8
12
  {% if "event_bus" in template.built_in_features %}
9
13
  - name: event
10
14
  type: directory
@@ -0,0 +1,26 @@
1
+ - name: value_objects
2
+ type: directory
3
+ python: True
4
+ children:
5
+ - name: value_object/int_primitives_mother
6
+ type: boilerplate_file
7
+ extension: .py
8
+ - name: value_object/string_primitives_mother
9
+ type: boilerplate_file
10
+ extension: .py
11
+ - name: value_object/uuid_primitives_mother
12
+ type: boilerplate_file
13
+ extension: .py
14
+ - name: usables
15
+ type: directory
16
+ python: True
17
+ children:
18
+ - name: value_object/test_int_value_object
19
+ type: boilerplate_file
20
+ extension: .py
21
+ - name: value_object/test_string_value_object
22
+ type: boilerplate_file
23
+ extension: .py
24
+ - name: value_object/test_uuid_value_object
25
+ type: boilerplate_file
26
+ extension: .py
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "instant-python"
7
- version = "0.9.1"
7
+ version = "0.9.2"
8
8
  description = "Instant boilerplate generation for Python projects"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -113,11 +113,7 @@ parse_squash_commits = false
113
113
  ignore_merge_commits = true
114
114
 
115
115
  [tool.semantic_release.changelog]
116
+ changelog_file = "CHANGELOG.md"
116
117
  exclude_commit_patterns = ['''^Merge pull request #''', '''^Merge branch ''']
117
118
  mode = "update"
118
- template_dir = "docs/changelog"
119
-
120
- [tool.semantic_release.changelog.default_templates]
121
- changelog_file = "CHANGELOG.md"
122
- output_format = "md"
123
- mask_initial_release = false
119
+ template_dir = "docs/changelog"
@@ -531,7 +531,7 @@ wheels = [
531
531
 
532
532
  [[package]]
533
533
  name = "instant-python"
534
- version = "0.9.1"
534
+ version = "0.9.2"
535
535
  source = { editable = "." }
536
536
  dependencies = [
537
537
  { name = "jinja2" },
@@ -1,9 +0,0 @@
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()
File without changes
File without changes