instant-python 0.8.1__tar.gz → 0.8.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 (340) hide show
  1. instant_python-0.8.2/.github/ISSUE_TEMPLATE/bug_report.yml +67 -0
  2. instant_python-0.8.2/.github/ISSUE_TEMPLATE/feature_request.yml +21 -0
  3. {instant_python-0.8.1 → instant_python-0.8.2}/.github/actions/python_setup/action.yml +9 -4
  4. instant_python-0.8.2/.github/pull_request_template.md +30 -0
  5. instant_python-0.8.2/.github/workflows/ci.yml +303 -0
  6. instant_python-0.8.2/.github/workflows/release.yml +77 -0
  7. instant_python-0.8.2/.pre-commit-config.yaml +73 -0
  8. {instant_python-0.8.1 → instant_python-0.8.2}/CHANGELOG.md +50 -2
  9. instant_python-0.8.2/CITATION.cff +21 -0
  10. {instant_python-0.8.1 → instant_python-0.8.2}/PKG-INFO +2 -2
  11. instant_python-0.8.2/SECURITY.md +43 -0
  12. instant_python-0.8.2/codeql-config.yml +3 -0
  13. instant_python-0.8.2/docs/changelog/.components/changelog_header.md.j2 +7 -0
  14. instant_python-0.8.2/docs/changelog/.components/changelog_init.md.j2 +21 -0
  15. instant_python-0.8.2/docs/changelog/.components/changelog_update.md.j2 +59 -0
  16. instant_python-0.8.2/docs/changelog/.components/changes.md.j2 +127 -0
  17. instant_python-0.8.2/docs/changelog/.components/first_release.md.j2 +18 -0
  18. instant_python-0.8.2/docs/changelog/.components/macros.md.j2 +187 -0
  19. instant_python-0.8.2/docs/changelog/.components/versioned_changes.md.j2 +20 -0
  20. instant_python-0.8.2/docs/changelog/.release_notes.md.j2 +60 -0
  21. instant_python-0.8.2/docs/changelog/CHANGELOG.md.j2 +22 -0
  22. instant_python-0.8.2/docs/home/contributing.md +205 -0
  23. instant_python-0.8.2/docs/home/releases.md +35 -0
  24. instant_python-0.8.2/docs/home/security.md +43 -0
  25. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_environment.py +1 -0
  26. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/application.py +7 -1
  27. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/http_response.py +23 -1
  28. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/logger.py +11 -2
  29. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +2 -2
  30. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +2 -2
  31. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_app.yml.j2 +3 -1
  32. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/source.yml.j2 +2 -2
  33. instant_python-0.8.2/makefile +120 -0
  34. {instant_python-0.8.1 → instant_python-0.8.2}/mkdocs.yml +1 -0
  35. {instant_python-0.8.1 → instant_python-0.8.2}/pyproject.toml +49 -9
  36. instant_python-0.8.2/scripts/add_dependency.py +24 -0
  37. instant_python-0.8.2/scripts/remove_dependency.py +22 -0
  38. instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_logger.json.approved.txt +1 -0
  39. instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_migrator.json.approved.txt +1 -0
  40. instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_only_with_fastapi.json.approved.txt +1 -0
  41. instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/application.py +21 -0
  42. instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/http_response.py +62 -0
  43. instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/lifespan.py +11 -0
  44. instant_python-0.8.2/test/project_creator/resources/boilerplate/logger/__init__.py +0 -0
  45. instant_python-0.8.2/test/project_creator/resources/boilerplate/logger/logger.py +44 -0
  46. instant_python-0.8.2/test/project_creator/resources/boilerplate/persistence/alembic_migrator.py +18 -0
  47. instant_python-0.8.2/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +69 -0
  48. instant_python-0.8.2/test/project_creator/resources/config_fastapi_with_logger.yml +26 -0
  49. instant_python-0.8.2/test/project_creator/resources/config_fastapi_with_migrator.yml +26 -0
  50. instant_python-0.8.2/test/project_creator/resources/config_with_only_fastapi.yml +25 -0
  51. instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_fastapi_with_logger.json +64 -0
  52. instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_fastapi_with_migrator.json +62 -0
  53. instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_only_with_fastapi.json +52 -0
  54. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_file_system.py +20 -5
  55. instant_python-0.8.2/test/render/__init__.py +0 -0
  56. instant_python-0.8.2/tox.ini +12 -0
  57. {instant_python-0.8.1 → instant_python-0.8.2}/uv.lock +641 -14
  58. instant_python-0.8.1/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  59. instant_python-0.8.1/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
  60. instant_python-0.8.1/.github/workflows/publish.yml +0 -21
  61. instant_python-0.8.1/.github/workflows/release.yml +0 -75
  62. instant_python-0.8.1/.github/workflows/test_lint.yml +0 -125
  63. instant_python-0.8.1/cz.yaml +0 -21
  64. instant_python-0.8.1/docs/home/contributing.md +0 -13
  65. instant_python-0.8.1/docs/home/releases.md +0 -37
  66. instant_python-0.8.1/makefile +0 -69
  67. instant_python-0.8.1/scripts/add_dependency.sh +0 -18
  68. instant_python-0.8.1/scripts/remove_dependency.sh +0 -18
  69. instant_python-0.8.1/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -22
  70. instant_python-0.8.1/tox.ini +0 -18
  71. {instant_python-0.8.1 → instant_python-0.8.2}/.github/FUNDING.yml +0 -0
  72. {instant_python-0.8.1 → instant_python-0.8.2}/.github/workflows/pages.yml +0 -0
  73. {instant_python-0.8.1 → instant_python-0.8.2}/.gitignore +0 -0
  74. {instant_python-0.8.1 → instant_python-0.8.2}/.python-version +0 -0
  75. {instant_python-0.8.1 → instant_python-0.8.2}/LICENSE +0 -0
  76. {instant_python-0.8.1 → instant_python-0.8.2}/README.md +0 -0
  77. {instant_python-0.8.1 → instant_python-0.8.2}/docs/assets/favicon.svg +0 -0
  78. {instant_python-0.8.1 → instant_python-0.8.2}/docs/assets/logo.svg +0 -0
  79. {instant_python-0.8.1 → instant_python-0.8.2}/docs/downloads_macro.py +0 -0
  80. {instant_python-0.8.1 → instant_python-0.8.2}/docs/examples/configuration.md +0 -0
  81. {instant_python-0.8.1 → instant_python-0.8.2}/docs/examples/custom_template.md +0 -0
  82. {instant_python-0.8.1 → instant_python-0.8.2}/docs/guide/command_config.md +0 -0
  83. {instant_python-0.8.1 → instant_python-0.8.2}/docs/guide/command_init.md +0 -0
  84. {instant_python-0.8.1 → instant_python-0.8.2}/docs/home/getting_started.md +0 -0
  85. {instant_python-0.8.1 → instant_python-0.8.2}/docs/home/index.md +0 -0
  86. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/__init__.py +0 -0
  87. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/cli.py +0 -0
  88. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/__init__.py +0 -0
  89. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/config.py +0 -0
  90. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/init.py +0 -0
  91. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/__init__.py +0 -0
  92. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/configuration_schema.py +0 -0
  93. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/__init__.py +0 -0
  94. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/dependency_configuration.py +0 -0
  95. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +0 -0
  96. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/__init__.py +0 -0
  97. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/general_configuration.py +0 -0
  98. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_dependency_manager_value.py +0 -0
  99. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_license_value.py +0 -0
  100. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_python_version_value.py +0 -0
  101. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/__init__.py +0 -0
  102. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/git_configuration.py +0 -0
  103. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/git_user_or_email_not_present.py +0 -0
  104. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/__init__.py +0 -0
  105. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/config_key_not_present.py +0 -0
  106. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
  107. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/empty_configuration_not_allowed.py +0 -0
  108. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/missing_mandatory_fields.py +0 -0
  109. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/parser.py +0 -0
  110. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/__init__.py +0 -0
  111. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/boolean_question.py +0 -0
  112. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/choice_question.py +0 -0
  113. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/conditional_question.py +0 -0
  114. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/free_text_question.py +0 -0
  115. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/multiple_choice_question.py +0 -0
  116. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/question.py +0 -0
  117. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/questionary.py +0 -0
  118. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question_wizard.py +0 -0
  119. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/__init__.py +0 -0
  120. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/dependencies_step.py +0 -0
  121. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/general_step.py +0 -0
  122. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/git_step.py +0 -0
  123. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/steps.py +0 -0
  124. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/template_step.py +0 -0
  125. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/__init__.py +0 -0
  126. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/bounded_context_not_applicable.py +0 -0
  127. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/bounded_context_not_especified.py +0 -0
  128. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/invalid_built_in_features_values.py +0 -0
  129. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/invalid_template_value.py +0 -0
  130. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/template_configuration.py +0 -0
  131. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/__init__.py +0 -0
  132. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/command_execution_error.py +0 -0
  133. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/dependency_manager.py +0 -0
  134. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
  135. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/pdm_dependency_manager.py +0 -0
  136. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
  137. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/uv_dependency_manager.py +0 -0
  138. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/formatter/__init__.py +0 -0
  139. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/formatter/project_formatter.py +0 -0
  140. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/git/__init__.py +0 -0
  141. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/git/git_configurer.py +0 -0
  142. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/instant_python_typer.py +0 -0
  143. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/__init__.py +0 -0
  144. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/directory.py +0 -0
  145. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file.py +0 -0
  146. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file_has_not_been_created.py +0 -0
  147. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file_system.py +0 -0
  148. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/node.py +0 -0
  149. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
  150. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/__init__.py +0 -0
  151. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/custom_project_renderer.py +0 -0
  152. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_custom_filters.py +0 -0
  153. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_project_renderer.py +0 -0
  154. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/template_file_not_found_error.py +0 -0
  155. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/unknown_template_error.py +0 -0
  156. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/__init__.py +0 -0
  157. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/application_error.py +0 -0
  158. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/error_types.py +0 -0
  159. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_built_in_features.py +0 -0
  160. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_licenses.py +0 -0
  161. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_managers.py +0 -0
  162. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_python_versions.py +0 -0
  163. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_templates.py +0 -0
  164. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.gitignore +0 -0
  165. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  166. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.python-version +0 -0
  167. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/LICENSE +0 -0
  168. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/README.md +0 -0
  169. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
  170. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/aggregate_root.py +0 -0
  171. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  172. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  173. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  174. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  175. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  176. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  177. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  178. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  179. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  180. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  181. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  182. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  183. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  184. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
  185. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  186. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  187. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
  188. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
  189. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
  190. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  191. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  192. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
  193. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  194. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/status_code.py +0 -0
  195. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/action.yml +0 -0
  196. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/lint.yml +0 -0
  197. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/test.yml +0 -0
  198. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
  199. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  200. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/mypy.ini +0 -0
  201. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
  202. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  203. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  204. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
  205. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  206. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  207. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  208. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  209. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  210. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  211. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  212. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  213. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
  214. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  215. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  216. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/pyproject.toml +0 -0
  217. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/pytest.ini +0 -0
  218. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/random_generator.py +0 -0
  219. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/add_dependency.sh +0 -0
  220. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  221. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  222. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  223. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/local_setup.sh +0 -0
  224. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/makefile +0 -0
  225. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/post-merge +0 -0
  226. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/pre-commit +0 -0
  227. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/pre-push +0 -0
  228. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/remove_dependency.sh +0 -0
  229. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  230. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/__init__.py +0 -0
  231. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
  232. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
  233. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
  234. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/value_object.py +0 -0
  235. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
  236. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
  237. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
  238. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
  239. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -0
  240. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
  241. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
  242. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -0
  243. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
  244. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
  245. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_domain.yml.j2 +0 -0
  246. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
  247. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
  248. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
  249. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/license.yml.j2 +0 -0
  250. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
  251. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/macros.j2 +0 -0
  252. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/makefile.yml.j2 +0 -0
  253. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
  254. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pre_commit.yml.j2 +0 -0
  255. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
  256. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
  257. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
  258. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
  259. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
  260. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -0
  261. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
  262. {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
  263. {instant_python-0.8.1 → instant_python-0.8.2}/mypy.ini +0 -0
  264. {instant_python-0.8.1 → instant_python-0.8.2}/test/__init__.py +0 -0
  265. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/__init__.py +0 -0
  266. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/__init__.py +0 -0
  267. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/dependency_configuration_mother.py +0 -0
  268. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/test_dependency_configuration.py +0 -0
  269. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/__init__.py +0 -0
  270. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/general_configuration_mother.py +0 -0
  271. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/test_general_configuration.py +0 -0
  272. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/__init__.py +0 -0
  273. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/git_configuration_mother.py +0 -0
  274. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/test_git_configuration.py +0 -0
  275. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/__init__.py +0 -0
  276. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/approvaltests_config.json +0 -0
  277. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
  278. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/__init__.py +0 -0
  279. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/config.yml +0 -0
  280. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/empty_config.yml +0 -0
  281. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
  282. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
  283. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
  284. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
  285. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
  286. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/test_parser.py +0 -0
  287. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/__init__.py +0 -0
  288. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_boolean_question.py +0 -0
  289. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_choice_question.py +0 -0
  290. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_free_text_question.py +0 -0
  291. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_multiple_choice_question.py +0 -0
  292. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/__init__.py +0 -0
  293. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/template_configuration_mother.py +0 -0
  294. {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/test_template_configuration.py +0 -0
  295. {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/__init__.py +0 -0
  296. {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
  297. {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
  298. {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/test_pdm_dependency_manager.py +0 -0
  299. {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/test_uv_dependency_manager.py +0 -0
  300. {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/__init__.py +0 -0
  301. {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/mock_project_formatter.py +0 -0
  302. {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/test_project_formatter.py +0 -0
  303. {instant_python-0.8.1 → instant_python-0.8.2}/test/git/__init__.py +0 -0
  304. {instant_python-0.8.1 → instant_python-0.8.2}/test/git/mock_git_configurer.py +0 -0
  305. {instant_python-0.8.1 → instant_python-0.8.2}/test/git/test_git_configurer.py +0 -0
  306. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/__init__.py +0 -0
  307. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approvaltests_config.json +0 -0
  308. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_custom_project_structure.json.approved.txt +0 -0
  309. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +0 -0
  310. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
  311. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
  312. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/directory_mother.py +0 -0
  313. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
  314. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
  315. {instant_python-0.8.1/test/render → instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi}/__init__.py +0 -0
  316. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/config.yml +0 -0
  317. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
  318. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/rendered_project_structure.json +0 -0
  319. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_directory.py +0 -0
  320. {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_file.py +0 -0
  321. {instant_python-0.8.1 → instant_python-0.8.2}/test/random_generator.py +0 -0
  322. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approvaltests_config.json +0 -0
  323. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
  324. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
  325. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
  326. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
  327. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +0 -0
  328. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +0 -0
  329. {instant_python-0.8.1/test/project_creator → instant_python-0.8.2/test/render}/resources/clean_architecture/main_structure.yml.j2 +0 -0
  330. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/clean_architecture_config.yml +0 -0
  331. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/custom_template.yml +0 -0
  332. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
  333. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/domain_driven_design_config.yml +0 -0
  334. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
  335. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
  336. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project_with_git_config.yml +0 -0
  337. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/test_template.j2 +0 -0
  338. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_custom_project_renderer.py +0 -0
  339. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_jinja_environment.py +0 -0
  340. {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_jinja_project_renderer.py +0 -0
@@ -0,0 +1,67 @@
1
+ name: 🐛 Bug Report
2
+ description: Create a report to help us improve.
3
+ labels:
4
+ - bug
5
+ - pending
6
+
7
+ body:
8
+ - type: textarea
9
+ id: description
10
+ validations:
11
+ required: true
12
+ attributes:
13
+ label: ✏️ Description
14
+ description: |
15
+ Please provide a clear and concise description of the bug you are experiencing.
16
+
17
+ Specify what is the expected behavior and what is actually happening. You can add
18
+ screenshots to help illustrate the issue.
19
+
20
+ Please provide as much detail as possible to make understanding and solving your problem as quick as possible. 🙏
21
+
22
+ - type: textarea
23
+ id: reproduce
24
+ attributes:
25
+ label: ✅ Steps To Reproduce
26
+ render: Python
27
+ description: >
28
+ Please list the steps needed to reproduce the bug you are experiencing.
29
+
30
+ If applicable, please add a self-contained,
31
+ [minimal, reproducible, example](https://stackoverflow.com/help/minimal-reproducible-example)
32
+ demonstrating the bug.\
33
+
34
+ placeholder: >
35
+ # 1. Install the package using pip
36
+ # 2. Run the script with the following command:
37
+ # python script.py
38
+ # 3. Observe the output\
39
+
40
+ - type: dropdown
41
+ id: python-version
42
+ attributes:
43
+ label: 🐍 Which version of Python are you using?
44
+ options:
45
+ - 3.8
46
+ - 3.9
47
+ - 3.10
48
+ - 3.11
49
+ - 3.12
50
+ - 3.13
51
+ - other
52
+ validations:
53
+ required: true
54
+
55
+ - type: input
56
+ id: ipy-version
57
+ validations:
58
+ required: true
59
+ attributes:
60
+ label: 📦 Which version of Instant Python are you using?
61
+
62
+ - type: input
63
+ id: os
64
+ validations:
65
+ required: true
66
+ attributes:
67
+ label: 🖥️ Which operating system are you using?
@@ -0,0 +1,21 @@
1
+ name: 🚀 Feature Request
2
+ description: Suggest a new idea for Instant Python.
3
+ labels:
4
+ - enhancement
5
+ - pending
6
+
7
+ body:
8
+ - type: textarea
9
+ id: description
10
+ validations:
11
+ required: true
12
+ attributes:
13
+ label: ✏️ Description
14
+ description: |
15
+ Please give as much detail as possible about the feature you would like to suggest.
16
+
17
+ You might like to add:
18
+ * A clear and concise description of the idea that should be implemented
19
+ * An example of how the feature should work
20
+ * Any relevant links or resources that can help understand the feature better
21
+ * A list of scenarios or validations that the feature should cover as well as any restrictions or limitations that should be considered
@@ -9,12 +9,17 @@ outputs: {}
9
9
  runs:
10
10
  using: composite
11
11
  steps:
12
- - uses: actions/setup-python@v5
12
+ - name: 🐍 Setup Python
13
+ uses: actions/setup-python@v5
13
14
  with:
14
15
  python-version: ${{ inputs.python-version }}
15
- - name: Install dependency manager
16
+
17
+ - name: 🔨 Install dependency manager
16
18
  run: python -m pip install uv
17
19
  shell: bash
18
- - name: Install dependencies
19
- run: uv sync --all-groups
20
+
21
+ - name: 📦 Install dependencies
22
+ run: |
23
+ uv sync --all-groups
24
+ uv run -m pre_commit install --hook-type pre-commit --hook-type commit-msg --hook-type pre-push
20
25
  shell: bash
@@ -0,0 +1,30 @@
1
+ # Description
2
+
3
+ ## Type of change
4
+
5
+ - [ ] **✨ feat**: New feature (non-breaking change).
6
+ - [ ] **🐛 fix**: Bug fix (non-breaking change).
7
+ - [ ] **📝 docs**: Documentation update.
8
+ - [ ] **♻️ refactor**: Code change that neither fixes a bug nor adds a new feature.
9
+ - [ ] **⚡️ perf**: Performance improvement.
10
+ - [ ] **🧪 test**: Update suite of tests.
11
+ - [ ] **📦️ build**: Changes that affect the build system (new dependencies, tools, ...).
12
+ - [ ] **💚 ci**: Pipeline changes (GitHub Actions, make commands, ...).
13
+ - [ ] **💥 BREAKING CHANGE**: Feature, fix, ... that breaks backward compatibility.
14
+ - [ ] **👽️ others**: Other type of change.
15
+
16
+ ## Related Issues / Discussions / Resources
17
+
18
+ ## Pre-merge Checklist
19
+
20
+ - [ ] I have read and followed the [`Contributor Guidelines`](https://github.com/dimanu-py/instant-python/blob/main/docs/home/contributing.md).
21
+ - [ ] My pull requests and commits follow the [Conventional Commits](https://www.conventionalcommits.org) and [Conventional Comments](https://conventionalcomments.org) guidelines.
22
+ - [ ] My code follows the coding guidelines of the project ([PEP 8](https://peps.python.org/pep-0008), [PEP 257](https://peps.python.org/pep-0257), ...).
23
+ - [ ] My changes generate no new warnings (execution, linter, formatter, ...).
24
+ - [ ] I have updated the suite of tests required for this change.
25
+ - [ ] I have made corresponding changes to the documentation.
26
+ - [ ] I considered security & backwards-compatibility; if **breaking**, explain in the "Description" section above.
27
+
28
+ ## 📃 Additional Resources
29
+
30
+ - [The Anatomy of a Perfect Pull Request](https://hugooodias.medium.com/the-anatomy-of-a-perfect-pull-request-567382bb6067)
@@ -0,0 +1,303 @@
1
+ name: CI - Testing and Code analysis
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ check_user:
14
+ name: check-user
15
+ runs-on: ubuntu-latest
16
+ outputs:
17
+ should_run: ${{ github.actor == 'dimanu-py' }}
18
+ steps:
19
+ - name: 🛡️ Harden runner
20
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
21
+ with:
22
+ egress-policy: audit
23
+
24
+ - name: 👍 Check triggering user
25
+ run: echo "Workflow triggered by ${{ github.actor }}"
26
+
27
+ lint:
28
+ name: lint
29
+ runs-on: ubuntu-latest
30
+ needs: check_user
31
+ if: ${{ needs.check_user.outputs.should_run == 'true' }}
32
+ steps:
33
+ - name: 🛡️ Harden runner
34
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
35
+ with:
36
+ egress-policy: audit
37
+
38
+ - name: 📥 Checkout the repository
39
+ uses: actions/checkout@v4
40
+ with:
41
+ ref: ${{ github.head_ref }}
42
+ fetch-depth: 0
43
+ persist-credentials: false
44
+
45
+ - name: 🛠️ Setup environment
46
+ uses: ./.github/actions/python_setup
47
+
48
+ - name: 🧐 Check linting
49
+ id: check_lint
50
+ run: |
51
+ git pull --rebase origin main
52
+ uvx ruff check --exclude "instant_python/templates,test/**/resources/**" instant_python test
53
+ continue-on-error: true
54
+
55
+ - name: 🚨 Auto fix lint errors
56
+ id: fix_lint
57
+ if: ${{ steps.check_lint.outcome == 'failure' }}
58
+ run: |
59
+ git pull --rebase origin main
60
+ uvx ruff check --fix --exclude "instant_python/templates,test/**/resources/**" instant_python test
61
+
62
+ - name: ✏️ Commit lint fixes
63
+ if: ${{ steps.fix_lint.outcome == 'success' }}
64
+ run: |
65
+ git config user.name ${{ vars.GIT_COMMITTER_NAME }}
66
+ git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
67
+
68
+ if git diff --quiet; then
69
+ echo "No changes to commit."
70
+ else
71
+ git add .
72
+ git commit -m "🚨 chore: fix linting issues via GitHub Actions"
73
+ git push
74
+ fi
75
+ env:
76
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
77
+
78
+ - name: 🧐 Check linting again
79
+ run: uvx ruff check --exclude "instant_python/templates,test/**/resources/**" instant_python test
80
+
81
+ format:
82
+ name: format
83
+ runs-on: ubuntu-latest
84
+ needs: check_user
85
+ if: ${{ needs.check_user.outputs.should_run == 'true' }}
86
+ steps:
87
+ - name: 🛡️ Harden runner
88
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
89
+ with:
90
+ egress-policy: audit
91
+
92
+ - name: 📥 Checkout the repository
93
+ uses: actions/checkout@v4
94
+ with:
95
+ ref: ${{ github.head_ref }}
96
+ fetch-depth: 0
97
+ persist-credentials: false
98
+
99
+ - name: 🛠️ Setup environment
100
+ uses: ./.github/actions/python_setup
101
+
102
+ - name: 🧐 Check code format
103
+ id: check_format
104
+ run: |
105
+ git pull --rebase origin main
106
+ uvx ruff format --check --exclude "instant_python/templates,test/**/resources/**" instant_python test
107
+ continue-on-error: true
108
+
109
+ - name: 🎨 Auto format code
110
+ id: format_code
111
+ if: ${{ steps.check_format.outcome == 'failure' }}
112
+ run: |
113
+ git pull --rebase origin main
114
+ uvx ruff format --exclude "instant_python/templates,test/**/resources/**" instant_python test
115
+
116
+ - name: ✏️ Commit formatted code
117
+ if: ${{ steps.format_code.outcome == 'success' }}
118
+ run: |
119
+ git config user.name ${{ vars.GIT_COMMITTER_NAME }}
120
+ git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
121
+
122
+ if git diff --quiet; then
123
+ echo "No changes to commit."
124
+ else
125
+ git add .
126
+ git commit -m "🎨 style: format code via GitHub Actions"
127
+ git push
128
+ fi
129
+ env:
130
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
131
+
132
+ - name: 🧐 Check code format again
133
+ run: uvx ruff format --check --exclude "instant_python/templates,test/**/resources/**" instant_python test
134
+
135
+ analyze-code-quality:
136
+ name: analyze-code-quality
137
+ runs-on: ubuntu-latest
138
+ permissions:
139
+ contents: read
140
+ security-events: write
141
+
142
+ steps:
143
+ - name: 🛡️ Harden runner
144
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
145
+ with:
146
+ egress-policy: audit
147
+
148
+ - name: 📥 Checkout the repository
149
+ uses: actions/checkout@v4
150
+ with:
151
+ ref: ${{ github.head_ref }}
152
+ fetch-depth: 0
153
+ persist-credentials: false
154
+
155
+ - name: ▶️ CodeQL Initialization
156
+ uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
157
+ with:
158
+ languages: python
159
+ build-mode: none
160
+ queries: +security-extended,security-and-quality
161
+ config-file: ./codeql-config.yml
162
+
163
+ - name: 🧐 CodeQL Analysis
164
+ uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
165
+ with:
166
+ category: '/language:python'
167
+
168
+
169
+ secrets:
170
+ name: secrets-scan
171
+ runs-on: ubuntu-latest
172
+ permissions:
173
+ contents: read
174
+ security-events: write
175
+ pull-requests: write
176
+
177
+ steps:
178
+ - name: 🛡️ Harden runner
179
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
180
+ with:
181
+ egress-policy: audit
182
+
183
+ - name: 📥 Checkout the repository
184
+ uses: actions/checkout@v4
185
+ with:
186
+ fetch-depth: 0
187
+ persist-credentials: false
188
+
189
+ - name: 🛠️ Setup environment
190
+ uses: ./.github/actions/python_setup
191
+
192
+ - name: 🏃 Run secrets scanner
193
+ run: make secrets
194
+
195
+ audit:
196
+ name: audit-dependencies
197
+ runs-on: ubuntu-latest
198
+ permissions:
199
+ contents: read
200
+
201
+ steps:
202
+ - name: 🛡️ Harden runner
203
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
204
+ with:
205
+ egress-policy: audit
206
+
207
+ - name: 📥 Checkout the repository
208
+ uses: actions/checkout@v4
209
+ with:
210
+ fetch-depth: 0
211
+ persist-credentials: false
212
+
213
+ - name: 🛠️ Setup environment
214
+ uses: ./.github/actions/python_setup
215
+
216
+ - name: 🏃 Run audit
217
+ run: make audit
218
+
219
+ test:
220
+ name: test
221
+ runs-on: ubuntu-latest
222
+ steps:
223
+ - name: 🛡️ Harden runner
224
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
225
+ with:
226
+ egress-policy: audit
227
+
228
+ - name: 📥 Checkout the repository
229
+ uses: actions/checkout@v4
230
+ with:
231
+ fetch-depth: 0
232
+ persist-credentials: false
233
+
234
+ - name: 🛠️ Setup environment
235
+ uses: ./.github/actions/python_setup
236
+
237
+ - name: 📦 Install test dependencies
238
+ run: uv pip install pytest pytest-cov
239
+
240
+ - name: 🏃 Run tests
241
+ run: uv run pytest --cov --cov-report=xml --cov-branch test -ra -s
242
+
243
+ - name: 📥 Upload coverage report to Codecov
244
+ uses: codecov/codecov-action@v5
245
+ with:
246
+ files: coverage.xml
247
+ flags: unittests
248
+ name: codecov-coverage
249
+ token: ${{ secrets.CODECOV_TOKEN }}
250
+ slug: dimanu-py/instant-python
251
+
252
+ rollback:
253
+ name: rollback
254
+ runs-on: ubuntu-latest
255
+ needs: [ test ]
256
+ if: ${{ always() && needs.test.result == 'failure' }}
257
+ steps:
258
+ - name: 🛡️ Harden runner
259
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
260
+ with:
261
+ egress-policy: audit
262
+
263
+ - name: 📥 Checkout the repository
264
+ uses: actions/checkout@v4
265
+ with:
266
+ fetch-depth: 0
267
+ persist-credentials: false
268
+
269
+ - name: ⏪️ Reset to previous commit
270
+ run: |
271
+ git config user.name ${{ vars.GIT_COMMITTER_NAME }}
272
+ git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
273
+ git reset --hard ${{ github.event.before }}
274
+ git push --force-with-lease origin main
275
+ env:
276
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
277
+
278
+ tox-test:
279
+ name: tox
280
+ runs-on: ubuntu-latest
281
+ strategy:
282
+ matrix:
283
+ python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13' ]
284
+ steps:
285
+ - name: 🛡️ Harden runner
286
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
287
+ with:
288
+ egress-policy: audit
289
+
290
+ - name: 📥 Checkout the repository
291
+ uses: actions/checkout@v4
292
+ with:
293
+ fetch-depth: 0
294
+ persist-credentials: false
295
+
296
+ - name: 🛠️ Setup environment
297
+ uses: ./.github/actions/python_setup
298
+
299
+ - name: Set up Python ${{ matrix.python-version }}
300
+ uses: actions/setup-python@v4
301
+
302
+ - name: 🏃 Run tox
303
+ run: make tox
@@ -0,0 +1,77 @@
1
+ name: Release and Publish
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ release:
8
+ if: "!startsWith(github.event.head_commit.message, 'bump:')"
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: write
12
+ pull-requests: write
13
+
14
+ outputs:
15
+ released: ${{ steps.released.outputs.released }}
16
+ tag: ${{ steps.released.outputs.tag }}
17
+
18
+ steps:
19
+ - name: 🛡️ Harden runner
20
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
21
+ with:
22
+ egress-policy: audit
23
+
24
+ - name: 📥 Checkout the repository
25
+ uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+ persist-credentials: false
29
+
30
+ - name: 🔖 Semantic Release
31
+ id: released
32
+ uses: python-semantic-release/python-semantic-release@2896129e02bb7809d2cf0c1b8e9e795ee27acbcf # v10.0.2
33
+ with:
34
+ build: false
35
+ push: true
36
+ changelog: true
37
+ commit: true
38
+ tag: true
39
+ vcs_release: true
40
+ config_file: pyproject.toml
41
+ github_token: ${{ secrets.GITHUB_TOKEN }}
42
+ git_committer_email: ${{ vars.GIT_COMMITTER_EMAIL }}
43
+ git_committer_name: ${{ vars.GIT_COMMITTER_NAME }}
44
+ ssh_public_signing_key: ${{ vars.SSH_PUBLIC_SIGNING_KEY }}
45
+ ssh_private_signing_key: ${{ secrets.SSH_PRIVATE_SIGNING_KEY }}
46
+
47
+ build-and-publish:
48
+ name: Publish Release to PyPI Workflow
49
+ needs: release
50
+ if: needs.release.result == 'success' && needs.release.outputs.released == 'true'
51
+ runs-on: ubuntu-latest
52
+ environment: release
53
+
54
+ permissions:
55
+ id-token: write
56
+
57
+ steps:
58
+ - name: 🛡️ Harden runner
59
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
60
+ with:
61
+ egress-policy: audit
62
+
63
+ - name: 📥 Checkout the repository
64
+ uses: actions/checkout@v4
65
+ with:
66
+ fetch-depth: 0
67
+ persist-credentials: false
68
+ ref: refs/tags/${{ needs.release.outputs.tag }}
69
+
70
+ - name: 🛠️ Setup environment
71
+ uses: ./.github/actions/python_setup
72
+
73
+ - name: 🏃 Build package
74
+ run: uv build
75
+
76
+ - name: 🚀 Publish
77
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,73 @@
1
+ fail_fast: true
2
+
3
+ default_language_version:
4
+ python: python3.12
5
+
6
+ exclude: ^instant_python/templates/
7
+
8
+ repos:
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # v5.0.0
11
+ hooks:
12
+ - id: check-added-large-files
13
+ name: 📦 Large Files Checker
14
+ args:
15
+ - --maxkb=100
16
+ stages:
17
+ - pre-commit
18
+
19
+ - id: check-case-conflict
20
+ name: 🔠 Case Conflict Checker
21
+ stages:
22
+ - pre-commit
23
+
24
+ - id: check-toml
25
+ name: 📄 TOML Files Checker
26
+ files: '.*\.toml'
27
+ stages:
28
+ - pre-commit
29
+
30
+ - id: check-yaml
31
+ name: 📄 YAML Files Checker
32
+ files: '.*\.ya?ml'
33
+ args:
34
+ - --unsafe
35
+ stages:
36
+ - pre-commit
37
+ - id: check-merge-conflict
38
+ name: 🔀 Merge Conflict Checker
39
+ stages:
40
+ - pre-commit
41
+
42
+ - repo: https://github.com/gitleaks/gitleaks
43
+ rev: 782f3104786efdce0f809bce8a9ff31f2fa1c9ed # v8.27.0
44
+ hooks:
45
+ - id: gitleaks
46
+ name: 🔍 Secrets Checker
47
+ entry: gitleaks detect --no-git --redact --verbose
48
+ stages:
49
+ - pre-commit
50
+
51
+ - repo: https://github.com/commitizen-tools/commitizen
52
+ rev: a0cc4901b0faaced74c713a9e355555fc4de0880 # v4.7.1
53
+ hooks:
54
+ - id: commitizen
55
+ name: 📝 Conventional Commit Message Checker
56
+ stages:
57
+ - commit-msg
58
+
59
+ - repo: local
60
+ hooks:
61
+ - id: lint
62
+ name: 🧹 Code Linter
63
+ entry: make check-lint
64
+ language: system
65
+ stages:
66
+ - pre-push
67
+
68
+ - id: format
69
+ name: 🎨 Code Formatter
70
+ entry: make check-format
71
+ language: system
72
+ stages:
73
+ - pre-push
@@ -1,3 +1,53 @@
1
+ # CHANGELOG
2
+
3
+ ## v0.9.0 (2025-07-15)
4
+
5
+ ### 🪲 Bug Fixes
6
+
7
+ - **render**: Create jinja environment with autoscape argument enabled to avoid potential XSS
8
+ attacks
9
+ ([`976d459`](https://github.com/dimanu-py/instant-python/commit/976d459538ae8eea403c65300304e6405fec46b6))
10
+
11
+ - **templates**: Format correctly if statement in application.py template
12
+ ([`409d606`](https://github.com/dimanu-py/instant-python/commit/409d6064d97ef016c34dab57d3c9456a47e6542f))
13
+
14
+ - **templates**: Include logger and migrator in fastapi application only if they are selected too
15
+ for DDD and standard project templates
16
+ ([`f5a8087`](https://github.com/dimanu-py/instant-python/commit/f5a80870d0ecdd2f47419ad5e51d20131649b422))
17
+
18
+ - **templates**: Include logger and migrator in fastapi application only if they are selected as
19
+ built in feature too in clean architecture template
20
+ ([`191d81f`](https://github.com/dimanu-py/instant-python/commit/191d81fd8ace560f3a6359bc9cf767c73c310d50))
21
+
22
+ ### ⚙️ Build System
23
+
24
+ - Update semantic release to not update major version if is zero and to allow 0 major version
25
+ ([`34d251e`](https://github.com/dimanu-py/instant-python/commit/34d251e8a57eafa595a0c54e314238f389218dd6))
26
+
27
+ - Remove test hook in precommit config
28
+ ([`b8d451d`](https://github.com/dimanu-py/instant-python/commit/b8d451db1a024ae41a6958dbf9513801f3b69627))
29
+
30
+ - Remove final echo from makefile commands to let output of the command itself inform the user
31
+ ([`cd895ad`](https://github.com/dimanu-py/instant-python/commit/cd895adacfe1e470a746165380369c9c365996e8))
32
+
33
+ - Remove -e command from echo in makefile
34
+ ([`6a624a3`](https://github.com/dimanu-py/instant-python/commit/6a624a3cacf8b96adaeba20bb635b7e43d853002))
35
+
36
+ - Exclude resources folder from being formatted or linted
37
+ ([`cf00038`](https://github.com/dimanu-py/instant-python/commit/cf000382ba13a0bc4dbda8eb346e9cdeb4fe4541))
38
+
39
+ - Remove AST check from pre commit hook
40
+ ([`b46437e`](https://github.com/dimanu-py/instant-python/commit/b46437e804a1d54f13444e92827bd15d9fb2fd57))
41
+
42
+ - Add docs-serve command to makefile
43
+ ([`9430934`](https://github.com/dimanu-py/instant-python/commit/943093498f168f49cc8b2593ea17911321f2e012))
44
+
45
+ - Improve messages of make command and add build and clean commands
46
+ ([`6a0e428`](https://github.com/dimanu-py/instant-python/commit/6a0e4285d3bb43f9e88dad32fd2f93732ab271c8))
47
+
48
+ - Remove commitizen config as is not longer needed
49
+ ([`0ed6a8b`](https://github.com/dimanu-py/instant-python/commit/0ed6a8bd50c6ebf30b71e4734fd3e4a81123b280))
50
+
1
51
  ## 0.8.1 (2025-07-01)
2
52
 
3
53
  ### 🐛 Bug Fixes
@@ -558,7 +608,6 @@
558
608
  - **project-generator**: delegate template management to TemplateManager
559
609
  - **cli**: call BasicPrompter and ProjectGenerator inside cli app
560
610
 
561
-
562
611
  ### ✨ Features
563
612
 
564
613
  - **project-generator**: create new custom function to generate import path in templates
@@ -657,4 +706,3 @@
657
706
  - **prompter**: create class to encapsulate user answers
658
707
  - **prompter**: create basic class that asks project requirements to user
659
708
  - **cli**: create basic typer application with no implementation
660
-
@@ -0,0 +1,21 @@
1
+ cff-version: 1.2.0
2
+ title: Instant Python
3
+ message: If you use this software, please cite it using the metadata below.
4
+ type: software
5
+ authors:
6
+ - given-names: Diego
7
+ family-names: Martínez
8
+ repository-code: https://github.com/dimanu-py/instant-python/
9
+ url: https://pypi.org/project/instant-python/
10
+ abstract: >
11
+ Instant Python is a command-line tool that generates the base structure of a Python project
12
+ within seconds.
13
+ It helps you quickly set up a new Python project with a specific structure, including
14
+ configuration files, directories, dependencies management, initial code files and much more.
15
+ keywords:
16
+ - python
17
+ - boilerplate
18
+ - project-generator
19
+ - code-generator
20
+ - cli
21
+ license: Apache-2.0