instant-python 0.19.0__tar.gz → 0.20.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. {instant_python-0.19.0 → instant_python-0.20.0}/.github/actions/python_setup/action.yml +1 -3
  2. {instant_python-0.19.0 → instant_python-0.20.0}/.github/workflows/ci.yml +2 -2
  3. {instant_python-0.19.0 → instant_python-0.20.0}/CHANGELOG.md +186 -0
  4. {instant_python-0.19.0 → instant_python-0.20.0}/PKG-INFO +2 -1
  5. {instant_python-0.19.0 → instant_python-0.20.0}/docs/guide/command_config.md +64 -0
  6. {instant_python-0.19.0 → instant_python-0.20.0}/docs/guide/custom_projects.md +72 -7
  7. instant_python-0.20.0/docs/guide/template_reference.md +434 -0
  8. instant_python-0.20.0/instant_python/__init__.py +1 -0
  9. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/cli/cli.py +4 -1
  10. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/application/config_generator.py +8 -5
  11. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/delivery/cli.py +2 -2
  12. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/delivery/cli.py +1 -1
  13. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/renderer/jinja_project_renderer.py +1 -1
  14. {instant_python-0.19.0/instant_python/initialize → instant_python-0.20.0/instant_python/shared}/domain/config_repository.py +4 -0
  15. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/domain/config_schema.py +1 -1
  16. {instant_python-0.19.0/instant_python/initialize → instant_python-0.20.0/instant_python/shared}/infra/persistence/yaml_config_repository.py +6 -1
  17. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +2 -1
  18. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/pyproject.toml +1 -1
  19. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/makefile +7 -0
  20. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/application.yml +3 -0
  21. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml +8 -0
  22. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/domain.yml +10 -0
  23. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/infra.yml +12 -0
  24. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml +3 -0
  25. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml +3 -0
  26. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml +3 -0
  27. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml +9 -0
  28. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/main_structure.yml +38 -0
  29. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/source.yml +9 -0
  30. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/test.yml +9 -0
  31. instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/bounded_context.yml +0 -3
  32. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml +8 -0
  33. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml +18 -0
  34. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml +10 -0
  35. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml +12 -0
  36. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml +8 -0
  37. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml +3 -0
  38. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml +3 -0
  39. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml +9 -0
  40. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/main_structure.yml +38 -0
  41. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/source.yml +10 -0
  42. instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/test.yml +9 -0
  43. instant_python-0.19.0/instant_python/templates/project_structure/event_bus_domain.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/events/event_bus_domain.yml +0 -8
  44. instant_python-0.20.0/instant_python/templates/project_structure/events/mock_event_bus.yml +4 -0
  45. instant_python-0.20.0/instant_python/templates/project_structure/macros.j2 +73 -0
  46. instant_python-0.20.0/instant_python/templates/project_structure/persistence/alembic_migrator.yml +6 -0
  47. instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_engine_conftest.yml +4 -0
  48. instant_python-0.19.0/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_sqlalchemy.yml +1 -1
  49. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/source_features.yml +13 -0
  50. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml +6 -0
  51. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/test_features.yml +6 -0
  52. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/main_structure.yml +38 -0
  53. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/source.yml +5 -0
  54. instant_python-0.20.0/instant_python/templates/project_structure/standard_project/test.yml +5 -0
  55. {instant_python-0.19.0 → instant_python-0.20.0}/makefile +11 -4
  56. {instant_python-0.19.0 → instant_python-0.20.0}/mkdocs.yml +1 -0
  57. {instant_python-0.19.0 → instant_python-0.20.0}/pyproject.toml +3 -2
  58. instant_python-0.20.0/schemas/ipy-schema.json +280 -0
  59. instant_python-0.20.0/schemas/main-structure-schema.json +88 -0
  60. {instant_python-0.19.0 → instant_python-0.20.0}/test/config/application/test_config_generator.py +5 -5
  61. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_template_section_combinations.approved.txt +12 -12
  62. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/mothers/config_schema_mother.py +12 -0
  63. instant_python-0.20.0/test/shared/persistence/test_yaml_config_repository.py +50 -0
  64. {instant_python-0.19.0 → instant_python-0.20.0}/uv.lock +63 -1
  65. instant_python-0.19.0/instant_python/__init__.py +0 -1
  66. instant_python-0.19.0/instant_python/config/domain/config_writer.py +0 -9
  67. instant_python-0.19.0/instant_python/config/infra/writer/yaml_config_writer.py +0 -13
  68. instant_python-0.19.0/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -6
  69. instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -39
  70. instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +0 -51
  71. instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -36
  72. instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -39
  73. instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +0 -57
  74. instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -36
  75. instant_python-0.19.0/instant_python/templates/project_structure/macros.j2 +0 -6
  76. instant_python-0.19.0/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -39
  77. instant_python-0.19.0/instant_python/templates/project_structure/standard_project/source.yml.j2 +0 -28
  78. instant_python-0.19.0/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -23
  79. instant_python-0.19.0/scripts/add_dependency.py +0 -24
  80. instant_python-0.19.0/scripts/remove_dependency.py +0 -22
  81. instant_python-0.19.0/test/config/infra/writer/test_yaml_config_writer.py +0 -16
  82. instant_python-0.19.0/test/initialize/infra/persistence/approvaltests_config.json +0 -3
  83. instant_python-0.19.0/test/initialize/infra/persistence/approved_files/TestYamlConfigRepository.test_should_read_existing_config_file.approved.txt +0 -26
  84. instant_python-0.19.0/test/initialize/infra/persistence/test_yaml_config_repository.py +0 -59
  85. instant_python-0.19.0/test/shared/domain/__init__.py +0 -0
  86. instant_python-0.19.0/test/shared/domain/mothers/__init__.py +0 -0
  87. {instant_python-0.19.0 → instant_python-0.20.0}/.github/FUNDING.yml +0 -0
  88. {instant_python-0.19.0 → instant_python-0.20.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  89. {instant_python-0.19.0 → instant_python-0.20.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  90. {instant_python-0.19.0 → instant_python-0.20.0}/.github/pull_request_template.md +0 -0
  91. {instant_python-0.19.0 → instant_python-0.20.0}/.github/workflows/pages.yml +0 -0
  92. {instant_python-0.19.0 → instant_python-0.20.0}/.github/workflows/release.yml +0 -0
  93. {instant_python-0.19.0 → instant_python-0.20.0}/.gitignore +0 -0
  94. {instant_python-0.19.0 → instant_python-0.20.0}/.pre-commit-config.yaml +0 -0
  95. {instant_python-0.19.0 → instant_python-0.20.0}/.python-version +0 -0
  96. {instant_python-0.19.0 → instant_python-0.20.0}/CITATION.cff +0 -0
  97. {instant_python-0.19.0 → instant_python-0.20.0}/LICENSE +0 -0
  98. {instant_python-0.19.0 → instant_python-0.20.0}/README.md +0 -0
  99. {instant_python-0.19.0 → instant_python-0.20.0}/SECURITY.md +0 -0
  100. {instant_python-0.19.0 → instant_python-0.20.0}/codeql-config.yml +0 -0
  101. {instant_python-0.19.0 → instant_python-0.20.0}/docs/assets/favicon.svg +0 -0
  102. {instant_python-0.19.0 → instant_python-0.20.0}/docs/assets/logo.svg +0 -0
  103. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  104. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  105. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  106. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/changes.md.j2 +0 -0
  107. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/first_release.md.j2 +0 -0
  108. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/macros.md.j2 +0 -0
  109. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  110. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/.release_notes.md.j2 +0 -0
  111. {instant_python-0.19.0 → instant_python-0.20.0}/docs/changelog/CHANGELOG.md.j2 +0 -0
  112. {instant_python-0.19.0 → instant_python-0.20.0}/docs/development/contributing.md +0 -0
  113. {instant_python-0.19.0 → instant_python-0.20.0}/docs/development/releases.md +0 -0
  114. {instant_python-0.19.0 → instant_python-0.20.0}/docs/development/security.md +0 -0
  115. {instant_python-0.19.0 → instant_python-0.20.0}/docs/downloads_macro.py +0 -0
  116. {instant_python-0.19.0 → instant_python-0.20.0}/docs/getting_started/first_steps.md +0 -0
  117. {instant_python-0.19.0 → instant_python-0.20.0}/docs/getting_started/installation.md +0 -0
  118. {instant_python-0.19.0 → instant_python-0.20.0}/docs/guide/command_init.md +0 -0
  119. {instant_python-0.19.0 → instant_python-0.20.0}/docs/guide/default_features.md +0 -0
  120. {instant_python-0.19.0 → instant_python-0.20.0}/docs/guide/index.md +0 -0
  121. {instant_python-0.19.0 → instant_python-0.20.0}/docs/home/index.md +0 -0
  122. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/cli/__init__.py +0 -0
  123. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/cli/instant_python_typer.py +0 -0
  124. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/__init__.py +0 -0
  125. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/application/__init__.py +0 -0
  126. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/delivery/__init__.py +0 -0
  127. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/domain/__init__.py +0 -0
  128. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/domain/question_wizard.py +0 -0
  129. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/__init__.py +0 -0
  130. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/__init__.py +0 -0
  131. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
  132. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
  133. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
  134. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/general_step.py +0 -0
  135. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
  136. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
  137. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
  138. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
  139. {instant_python-0.19.0/instant_python/config/infra/writer → instant_python-0.20.0/instant_python/initialize}/__init__.py +0 -0
  140. {instant_python-0.19.0/instant_python/initialize → instant_python-0.20.0/instant_python/initialize/application}/__init__.py +0 -0
  141. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/application/project_initializer.py +0 -0
  142. {instant_python-0.19.0/instant_python/initialize/application → instant_python-0.20.0/instant_python/initialize/delivery}/__init__.py +0 -0
  143. {instant_python-0.19.0/instant_python/initialize/delivery → instant_python-0.20.0/instant_python/initialize/domain}/__init__.py +0 -0
  144. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/env_manager.py +0 -0
  145. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/node.py +0 -0
  146. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/project_formatter.py +0 -0
  147. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/project_renderer.py +0 -0
  148. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/project_structure.py +0 -0
  149. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/project_writer.py +0 -0
  150. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/domain/version_control_configurer.py +0 -0
  151. {instant_python-0.19.0/instant_python/initialize/domain → instant_python-0.20.0/instant_python/initialize/infra}/__init__.py +0 -0
  152. {instant_python-0.19.0/instant_python/initialize/infra → instant_python-0.20.0/instant_python/initialize/infra/env_manager}/__init__.py +0 -0
  153. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/env_manager_factory.py +0 -0
  154. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/pdm_env_manager.py +0 -0
  155. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/system_console.py +0 -0
  156. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/uv_env_manager.py +0 -0
  157. {instant_python-0.19.0/instant_python/initialize/infra/env_manager → instant_python-0.20.0/instant_python/initialize/infra/formatter}/__init__.py +0 -0
  158. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/formatter/ruff_project_formatter.py +0 -0
  159. {instant_python-0.19.0/instant_python/initialize/infra/formatter → instant_python-0.20.0/instant_python/initialize/infra/renderer}/__init__.py +0 -0
  160. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/renderer/jinja_environment.py +0 -0
  161. {instant_python-0.19.0/instant_python/initialize/infra/persistence → instant_python-0.20.0/instant_python/initialize/infra/version_control}/__init__.py +0 -0
  162. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/version_control/git_configurer.py +0 -0
  163. {instant_python-0.19.0/instant_python/initialize/infra/renderer → instant_python-0.20.0/instant_python/initialize/infra/writer}/__init__.py +0 -0
  164. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/initialize/infra/writer/file_system_project_writer.py +0 -0
  165. {instant_python-0.19.0/instant_python/initialize/infra/version_control → instant_python-0.20.0/instant_python/shared}/__init__.py +0 -0
  166. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/application_error.py +0 -0
  167. {instant_python-0.19.0/instant_python/initialize/infra/writer → instant_python-0.20.0/instant_python/shared/domain}/__init__.py +0 -0
  168. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/domain/dependency_config.py +0 -0
  169. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/domain/general_config.py +0 -0
  170. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/domain/git_config.py +0 -0
  171. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/domain/template_config.py +0 -0
  172. {instant_python-0.19.0/instant_python/shared → instant_python-0.20.0/instant_python/shared/infra}/__init__.py +0 -0
  173. {instant_python-0.19.0/instant_python/shared/domain → instant_python-0.20.0/instant_python/shared/infra/persistence}/__init__.py +0 -0
  174. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/supported_built_in_features.py +0 -0
  175. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/supported_licenses.py +0 -0
  176. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/supported_managers.py +0 -0
  177. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/supported_python_versions.py +0 -0
  178. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/shared/supported_templates.py +0 -0
  179. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/.gitignore +0 -0
  180. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  181. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/.python-version +0 -0
  182. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  183. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/LICENSE +0 -0
  184. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/README.md +0 -0
  185. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  186. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
  187. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  188. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  189. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  190. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  191. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  192. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  193. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  194. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  195. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  196. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  197. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  198. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  199. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  200. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
  201. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/base_error.py +0 -0
  202. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  203. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  204. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  205. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  206. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
  207. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  208. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
  209. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  210. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  211. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  212. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
  213. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
  214. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  215. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/ci.yml +0 -0
  216. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  217. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/release.yml +0 -0
  218. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
  219. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  220. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  221. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  222. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
  223. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
  224. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  225. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  226. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
  227. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  228. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  229. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/async_session.py +0 -0
  230. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  231. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  232. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  233. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  234. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  235. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  236. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
  237. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  238. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  239. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
  240. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
  241. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  242. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  243. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  244. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
  245. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
  246. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
  247. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
  248. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
  249. {instant_python-0.19.0 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  250. /instant_python-0.19.0/instant_python/templates/project_structure/gitignore.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/gitignore.yml +0 -0
  251. /instant_python-0.19.0/instant_python/templates/project_structure/mypy.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/mypy.yml +0 -0
  252. /instant_python-0.19.0/instant_python/templates/project_structure/pyproject.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/pyproject.yml +0 -0
  253. /instant_python-0.19.0/instant_python/templates/project_structure/pytest.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/pytest.yml +0 -0
  254. /instant_python-0.19.0/instant_python/templates/project_structure/python_version.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/python_version.yml +0 -0
  255. /instant_python-0.19.0/instant_python/templates/project_structure/citation.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/citation.yml +0 -0
  256. /instant_python-0.19.0/instant_python/templates/project_structure/license.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/license.yml +0 -0
  257. /instant_python-0.19.0/instant_python/templates/project_structure/readme.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/readme.yml +0 -0
  258. /instant_python-0.19.0/instant_python/templates/project_structure/security.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/security.yml +0 -0
  259. /instant_python-0.19.0/instant_python/templates/project_structure/value_objects.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/errors.yml +0 -0
  260. /instant_python-0.19.0/instant_python/templates/project_structure/event_bus_infra.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/events/event_bus_infra.yml +0 -0
  261. /instant_python-0.19.0/instant_python/templates/project_structure/fastapi_app.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_app.yml +0 -0
  262. /instant_python-0.19.0/instant_python/templates/project_structure/fastapi_domain.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_domain.yml +0 -0
  263. /instant_python-0.19.0/instant_python/templates/project_structure/fastapi_infra.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_infra.yml +0 -0
  264. /instant_python-0.19.0/instant_python/templates/project_structure/github_action.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/github_action.yml +0 -0
  265. /instant_python-0.19.0/instant_python/templates/project_structure/github_issues_template.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/github_issues_template.yml +0 -0
  266. /instant_python-0.19.0/instant_python/templates/project_structure/makefile.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/makefile.yml +0 -0
  267. /instant_python-0.19.0/instant_python/templates/project_structure/precommit_hook.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/precommit_hook.yml +0 -0
  268. /instant_python-0.19.0/instant_python/templates/project_structure/logger.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/logger.yml +0 -0
  269. /instant_python-0.19.0/instant_python/templates/project_structure/async_alembic.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_alembic.yml +0 -0
  270. /instant_python-0.19.0/instant_python/templates/project_structure/persistence.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/persistence.yml +0 -0
  271. /instant_python-0.19.0/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/synchronous_sqlalchemy.yml +0 -0
  272. {instant_python-0.19.0 → instant_python-0.20.0}/mypy.ini +0 -0
  273. {instant_python-0.19.0 → instant_python-0.20.0}/test/__init__.py +0 -0
  274. {instant_python-0.19.0 → instant_python-0.20.0}/test/cli/__init__.py +0 -0
  275. {instant_python-0.19.0 → instant_python-0.20.0}/test/cli/test_version_command.py +0 -0
  276. {instant_python-0.19.0 → instant_python-0.20.0}/test/config/__init__.py +0 -0
  277. {instant_python-0.19.0 → instant_python-0.20.0}/test/config/application/__init__.py +0 -0
  278. {instant_python-0.19.0/test/config/infra → instant_python-0.20.0/test/initialize}/__init__.py +0 -0
  279. {instant_python-0.19.0/test/config/infra/writer → instant_python-0.20.0/test/initialize/application}/__init__.py +0 -0
  280. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/application/test_project_initializer.py +0 -0
  281. {instant_python-0.19.0/test/initialize → instant_python-0.20.0/test/initialize/delivery}/__init__.py +0 -0
  282. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approvaltests_config.json +0 -0
  283. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_custom_project_structure.approved.txt +0 -0
  284. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +0 -0
  285. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_git_section_combinations.approved.txt +0 -0
  286. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_predefined_dependencies_and_different_managers.approved.txt +0 -0
  287. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/delivery/test_init_cli.py +0 -0
  288. {instant_python-0.19.0/test/initialize/application → instant_python-0.20.0/test/initialize/domain}/__init__.py +0 -0
  289. {instant_python-0.19.0/test/initialize/delivery → instant_python-0.20.0/test/initialize/domain/mothers}/__init__.py +0 -0
  290. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/domain/mothers/node_mother.py +0 -0
  291. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/domain/mothers/project_structure_mother.py +0 -0
  292. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/domain/test_node.py +0 -0
  293. {instant_python-0.19.0/test/initialize/domain → instant_python-0.20.0/test/initialize/infra}/__init__.py +0 -0
  294. {instant_python-0.19.0/test/initialize/domain/mothers → instant_python-0.20.0/test/initialize/infra/env_manager}/__init__.py +0 -0
  295. {instant_python-0.19.0/test/initialize/infra → instant_python-0.20.0/test/initialize/infra/env_manager/mother}/__init__.py +0 -0
  296. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/env_manager/mother/command_execution_result_mother.py +0 -0
  297. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_pdm_env_manager.py +0 -0
  298. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_system_console.py +0 -0
  299. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_uv_env_manager.py +0 -0
  300. {instant_python-0.19.0/test/initialize/infra/env_manager → instant_python-0.20.0/test/initialize/infra/formatter}/__init__.py +0 -0
  301. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/formatter/test_ruff_project_formatter.py +0 -0
  302. {instant_python-0.19.0/test/initialize/infra/env_manager/mother → instant_python-0.20.0/test/initialize/infra/renderer}/__init__.py +0 -0
  303. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/renderer/test_jinja_environment.py +0 -0
  304. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/renderer/test_jinja_project_renderer.py +0 -0
  305. {instant_python-0.19.0/test/initialize/infra/formatter → instant_python-0.20.0/test/initialize/infra/version_control}/__init__.py +0 -0
  306. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/version_control/test_git_configurer.py +0 -0
  307. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_file_in_file_system.approved.txt +0 -0
  308. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_python_module_in_file_system.approved.txt +0 -0
  309. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_standard_directory_in_file_system.approved.txt +0 -0
  310. {instant_python-0.19.0/test/initialize/infra/persistence → instant_python-0.20.0/test/initialize/infra/writer}/__init__.py +0 -0
  311. {instant_python-0.19.0 → instant_python-0.20.0}/test/initialize/infra/writer/test_file_system_project_writer.py +0 -0
  312. {instant_python-0.19.0 → instant_python-0.20.0}/test/random_generator.py +0 -0
  313. {instant_python-0.19.0 → instant_python-0.20.0}/test/resources/base_ipy_config.yml +0 -0
  314. {instant_python-0.19.0 → instant_python-0.20.0}/test/resources/domain_error_template.py +0 -0
  315. {instant_python-0.19.0 → instant_python-0.20.0}/test/resources/hello_world.j2 +0 -0
  316. /instant_python-0.19.0/test/resources/main_structure.yml.j2 → /instant_python-0.20.0/test/resources/main_structure.yml +0 -0
  317. /instant_python-0.19.0/test/resources/standard_project/main_structure.yml.j2 → /instant_python-0.20.0/test/resources/standard_project/main_structure.yml +0 -0
  318. {instant_python-0.19.0/test/initialize/infra/renderer → instant_python-0.20.0/test/shared}/__init__.py +0 -0
  319. {instant_python-0.19.0/test/initialize/infra/version_control → instant_python-0.20.0/test/shared/domain}/__init__.py +0 -0
  320. {instant_python-0.19.0/test/initialize/infra/writer → instant_python-0.20.0/test/shared/domain/mothers}/__init__.py +0 -0
  321. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/mothers/dependency_config_mother.py +0 -0
  322. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/mothers/general_config_mother.py +0 -0
  323. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/mothers/git_config_mother.py +0 -0
  324. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/mothers/template_config_mother.py +0 -0
  325. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/test_config_schema.py +0 -0
  326. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/test_dependency_config.py +0 -0
  327. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/test_general_config.py +0 -0
  328. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/test_git_config.py +0 -0
  329. {instant_python-0.19.0 → instant_python-0.20.0}/test/shared/domain/test_template_configuration.py +0 -0
  330. {instant_python-0.19.0/test/shared → instant_python-0.20.0/test/shared/persistence}/__init__.py +0 -0
  331. {instant_python-0.19.0 → instant_python-0.20.0}/test/utils.py +0 -0
  332. {instant_python-0.19.0 → instant_python-0.20.0}/tox.ini +0 -0
@@ -19,7 +19,5 @@ runs:
19
19
  shell: bash
20
20
 
21
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
22
+ run: make install
25
23
  shell: bash
@@ -31,7 +31,7 @@ jobs:
31
31
 
32
32
  - name: 🧐 Check linting
33
33
  id: check_lint
34
- run: uvx ruff check --exclude "instant_python/templates,test/**/resources/**" instant_python test
34
+ run: make check-lint
35
35
 
36
36
  format:
37
37
  name: format
@@ -54,7 +54,7 @@ jobs:
54
54
 
55
55
  - name: 🧐 Check code format
56
56
  id: check_format
57
- run: uvx ruff format --check --exclude "instant_python/templates,test/**/resources/**" instant_python test
57
+ run: make check-format
58
58
 
59
59
  analyze-code-quality:
60
60
  name: analyze-code-quality
@@ -2,6 +2,192 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.20.0 (2025-12-05)
6
+
7
+ ### ✨ Features
8
+
9
+ - **schema**: Add JSON schema for custom project template structure to enable syntax and key/value
10
+ detection
11
+ ([`bf918b5`](https://github.com/dimanu-py/instant-python/commit/bf918b5b1efdcb9ddc38786814a5038144ca958b))
12
+
13
+ - **schema**: Add JSON schema for instant-python project configuration to enable syntax and
14
+ key/value detection when modifying ipy config file manually
15
+ ([`2e3d4f7`](https://github.com/dimanu-py/instant-python/commit/2e3d4f786020ead95324784497015e698477a891))
16
+
17
+ - **templates**: Add autostyle command to makefile to automatically format, lint and commit modified
18
+ files
19
+ ([`96c4610`](https://github.com/dimanu-py/instant-python/commit/96c46109c811198b70598df2c9f3e0674f6be1e7))
20
+
21
+ - **initialize**: Implement 'write' method in yaml config repository to be able to write ipy config
22
+ file in working directory
23
+ ([`ca04b4c`](https://github.com/dimanu-py/instant-python/commit/ca04b4c97392970399ed7b8a6e3a86984ed6779b))
24
+
25
+ - **initialize**: Add 'write' method to config repository to be able to use it with config command
26
+ and move it to shared
27
+ ([`e081a34`](https://github.com/dimanu-py/instant-python/commit/e081a342ccac66e45cef0cad728681c5aa9f301d))
28
+
29
+ ### ⚙️ Build System
30
+
31
+ - **makefile**: Add command to makefile to automatically format, lint and commit modified files
32
+ ([`2837703`](https://github.com/dimanu-py/instant-python/commit/28377039628f755b503192aef85723f3e3b4704c))
33
+
34
+ - **pyproject**: Add posthog dependency
35
+ ([`b3df1c0`](https://github.com/dimanu-py/instant-python/commit/b3df1c0587709a39e9e702142bdad4e8e293b07a))
36
+
37
+ - **makefile**: Modify add-dep and remove-dep commands in makefile to not need scripts files
38
+ ([`b9d5286`](https://github.com/dimanu-py/instant-python/commit/b9d528636f5a051c865f4ea45196443ff322b55e))
39
+
40
+ ### ♻️ Refactoring
41
+
42
+ - **templates**: Rename all templates for project structure to remove the '.j2' extension as it is
43
+ not need it
44
+ ([`cde9f87`](https://github.com/dimanu-py/instant-python/commit/cde9f87670273e6711fd08919c525208e7075fd9))
45
+
46
+ - **initialize**: Modify file name for project structure template to not include j2 extension
47
+ ([`e8cd1f1`](https://github.com/dimanu-py/instant-python/commit/e8cd1f1aadb637f0a359783f11f95b164ca4cbd8))
48
+
49
+ - **cli**: Modify main callback to print ipy help if no subcommand is called
50
+ ([`1784a3d`](https://github.com/dimanu-py/instant-python/commit/1784a3d129253cd197640680fbd85351ff074ec8))
51
+
52
+ - **initialize**: Move config repository port and its adapter to shared folder so it can be properly
53
+ shared among commands
54
+ ([`438f89c`](https://github.com/dimanu-py/instant-python/commit/438f89cdf75ff58ce0477e88a54cad55ad4e93ae))
55
+
56
+ - **config**: Remove legacy config writer now that its behavior has been unified in the config
57
+ repository
58
+ ([`3bcd3c9`](https://github.com/dimanu-py/instant-python/commit/3bcd3c9d858e342d9deca9bdc7bcd5db766de94b))
59
+
60
+ - **config**: Extract semantic method to keep use case with the same abstraction level and make it
61
+ more readable
62
+ ([`7077e6a`](https://github.com/dimanu-py/instant-python/commit/7077e6a50a23df5e3d080b89265a935d83d8d68c))
63
+
64
+ - **config**: Modify config generator dependency to receive a config repository instead of a config
65
+ writer
66
+ ([`89ed351`](https://github.com/dimanu-py/instant-python/commit/89ed35135d679a4fb4375eece5329162c454fb91))
67
+
68
+ - **initialize**: Modify 'write' method so it uses absolute config file path instead of creating it
69
+ ([`5acc795`](https://github.com/dimanu-py/instant-python/commit/5acc795ba127292d5144d18da3ba718faf880b9e))
70
+
71
+ - **shared**: Make default config file path absolute from users root folder to avoid incorrect
72
+ destination and relative path errors
73
+ ([`074e4a7`](https://github.com/dimanu-py/instant-python/commit/074e4a76f5319f2d167243935ca449a3ff80ca10))
74
+
75
+
76
+ ## v0.19.1 (2025-11-27)
77
+
78
+ ### 🪲 Bug Fixes
79
+
80
+ - **templates**: Correct indentation level for source and test templates in standard project
81
+ ([`54b36ca`](https://github.com/dimanu-py/instant-python/commit/54b36cac14dc9a12157223207b47236b063262ef))
82
+
83
+ - **templates**: Remove aggregate and value object file from event bus folder structure now that
84
+ these implementation have delegated to sindripy
85
+ ([`13a7780`](https://github.com/dimanu-py/instant-python/commit/13a7780f0263edf83ac5751c26bf6d5f04073b2a))
86
+
87
+ - **templates**: Modify EventAggregate template to use Aggregate from sindripy instead of legacy
88
+ aggregate that doesn't exist anymore
89
+ ([`dcbf2d3`](https://github.com/dimanu-py/instant-python/commit/dcbf2d3f913327a2f909ab48526f32c958e26db2))
90
+
91
+ - **templates**: Include sindripy dependency when event bus feature is selected to be able to use
92
+ the Aggregate implementation
93
+ ([`b5c3000`](https://github.com/dimanu-py/instant-python/commit/b5c30002596fc639316f93d403b4bedc18cb1e7c))
94
+
95
+ ### ♻️ Refactoring
96
+
97
+ - **templates**: Rename value objects template to errors now that it only contains errors and value
98
+ objects are handled with sindripy
99
+ ([`df8458b`](https://github.com/dimanu-py/instant-python/commit/df8458b18497574f48a075550e3d75e0a11e58e1))
100
+
101
+ - **templates**: Move new advanced macros to root of templates folder and use it along project
102
+ structure templates
103
+ ([`736314c`](https://github.com/dimanu-py/instant-python/commit/736314c5612b7d7518e780d8026951372a189755))
104
+
105
+ - **templates**: Remove legacy templates now that they are better organized
106
+ ([`c1b6c44`](https://github.com/dimanu-py/instant-python/commit/c1b6c44a04837f06db6a4db91d1e6d389b352be5))
107
+
108
+ - **templates**: Update main templates for standard project structure using new macros and organized
109
+ templates folder
110
+ ([`4fe22f3`](https://github.com/dimanu-py/instant-python/commit/4fe22f3b4bb4efca55531b52b8612aa29d2a3047))
111
+
112
+ - **templates**: Add advanced macros to be able to reuse render logic for templates and avoid
113
+ conditionals
114
+ ([`76cc909`](https://github.com/dimanu-py/instant-python/commit/76cc9090ef73f7e17ef7736ec64a50a86d6dea65))
115
+
116
+ - **templates**: Separate and modularize structure of standard project template in layers
117
+ ([`7123c85`](https://github.com/dimanu-py/instant-python/commit/7123c85bfbbabecd0ad1245b58ac668546343721))
118
+
119
+ - **templates**: Update main templates for ddd project structure using new macros and organized
120
+ templates folder
121
+ ([`613f361`](https://github.com/dimanu-py/instant-python/commit/613f36175902befddf45d8a0b56ef9069ae30df1))
122
+
123
+ - **templates**: Add advanced macros to be able to reuse render logic for templates and avoid
124
+ conditionals
125
+ ([`f96a178`](https://github.com/dimanu-py/instant-python/commit/f96a1787d978e6e56fae478a26ddf6d858f14da9))
126
+
127
+ - **templates**: Separate and modularize structure of ddd template in layers
128
+ ([`66044d5`](https://github.com/dimanu-py/instant-python/commit/66044d56011e28b695b5a0b7af591415732ad426))
129
+
130
+ - **templates**: Move config files for projects templates to specific folder for better organization
131
+ ([`5bc4e15`](https://github.com/dimanu-py/instant-python/commit/5bc4e15fcbdd6f20eaf69ffe24ae92866175c138))
132
+
133
+ - **templates**: Move github related templates to specific folder for better organization
134
+ ([`ee42c25`](https://github.com/dimanu-py/instant-python/commit/ee42c2556037af6ba69bb0a973cf67c0659b9e0e))
135
+
136
+ - **templates**: Move fastapi templates to specific folders for better organization
137
+ ([`7437c95`](https://github.com/dimanu-py/instant-python/commit/7437c9513f7e963e41f51a28a6ba90a432cef12c))
138
+
139
+ - **templates**: Move documentation templates such as readme, citation and security to specific
140
+ folders for better organization
141
+ ([`3608d27`](https://github.com/dimanu-py/instant-python/commit/3608d2777cd324a51f3d841cd5c92a651d6ee7e5))
142
+
143
+ - **templates**: Modify test structure to include application folder too
144
+ ([`b0bc458`](https://github.com/dimanu-py/instant-python/commit/b0bc45873d3ee57b86282fccba8ddc89b54a1d80))
145
+
146
+ - **templates**: Remove conditional logic to include features in infra tests for clean architecture
147
+ and use render_children_for macro to make it clearer and easier to extend
148
+ ([`87fe7fc`](https://github.com/dimanu-py/instant-python/commit/87fe7fc32b65f8933699402d508a4770f5a0c748))
149
+
150
+ - **templates**: Update test infra template to include mock event bus from template
151
+ ([`20fd887`](https://github.com/dimanu-py/instant-python/commit/20fd88768cd12acaea632bb6af16de37d9a1ae96))
152
+
153
+ - **templates**: Do not include mock event bus in test domain folder for clean architecture template
154
+ ([`20e1d73`](https://github.com/dimanu-py/instant-python/commit/20e1d73cf632f022d8541b3ed625217cb17b15b1))
155
+
156
+ - **templates**: Modify template paths for event features pointing to better organized folders
157
+ ([`35e56ac`](https://github.com/dimanu-py/instant-python/commit/35e56ac685d7d88fe7d0a3b2dcd54c9c409bde8a))
158
+
159
+ - **templates**: Organize events templates inside a specific folder to keep them better organized
160
+ ([`2552a60`](https://github.com/dimanu-py/instant-python/commit/2552a60e49df586ec890a628e51db10002820907))
161
+
162
+ - **templates**: Update template paths in clean architecture project structure to use new organized
163
+ persistence templates
164
+ ([`ad4fced`](https://github.com/dimanu-py/instant-python/commit/ad4fced04cc5c127acbd2b2c96d79e514454d9ac))
165
+
166
+ - **templates**: Organize persistence templates inside a specific folder to keep them better
167
+ organized
168
+ ([`b3ff817`](https://github.com/dimanu-py/instant-python/commit/b3ff8170ad24c280796a3f21dac341bd4e7be95f))
169
+
170
+ - **templates**: Remove legacy templates for clean architecture structure now that new version is
171
+ stable
172
+ ([`d5293fc`](https://github.com/dimanu-py/instant-python/commit/d5293fc4ca28164859521978532554d34f22fa0b))
173
+
174
+ - **templates**: Modify jinja macro to be able to handle cases where one template file has to be
175
+ included in more than once scenario so it's not get created two times
176
+ ([`99e6572`](https://github.com/dimanu-py/instant-python/commit/99e6572e16e9388dc5e3491a1b8bc3dbfc11a25e))
177
+
178
+ - **templates**: Rename old main structure, source and test templates files to mark them as legacy
179
+ but having them as backup
180
+ ([`2ea3614`](https://github.com/dimanu-py/instant-python/commit/2ea361497d722b2eb15ad57d5bdaf2e44a2c1e6f))
181
+
182
+ - **templates**: Separate clean architecture source and test structure in separate folders to handle
183
+ easily each folder and its features
184
+ ([`f92b499`](https://github.com/dimanu-py/instant-python/commit/f92b4992b57ecdf62689b58a044264e298591452))
185
+
186
+ - **templates**: Write advanced macros to render children blocks and built in features for clean
187
+ architecture
188
+ ([`720bf69`](https://github.com/dimanu-py/instant-python/commit/720bf694ebfa12105d58f46549977dc072c786aa))
189
+
190
+
5
191
  ## v0.19.0 (2025-11-24)
6
192
 
7
193
  ### ✨ Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instant-python
3
- Version: 0.19.0
3
+ Version: 0.20.0
4
4
  Summary: Instant boilerplate generation for Python projects
5
5
  Project-URL: documentation, https://dimanu-py.github.io/instant-python/
6
6
  Project-URL: repository, https://github.com/dimanu-py/instant-python/
@@ -220,6 +220,7 @@ Classifier: Topic :: System :: Installation/Setup
220
220
  Classifier: Topic :: System :: Shells
221
221
  Requires-Python: >=3.9
222
222
  Requires-Dist: jinja2>=3.1.6
223
+ Requires-Dist: posthog>=6.9.3
223
224
  Requires-Dist: pyyaml>=6.0.2
224
225
  Requires-Dist: questionary>=2.1.0
225
226
  Requires-Dist: typer>=0.15.1
@@ -9,6 +9,7 @@ project.
9
9
 
10
10
  - [Overview](#overview) - What the config command does
11
11
  - [Usage](#usage) - How to run the config command
12
+ - [JSON Schema Support](#json-schema-support) - IDE autocompletion and validation
12
13
  - [Configuration File Structure](#configuration-file-structure-and-restrictions) - All available options and their restrictions
13
14
  - [General](#general) - Project metadata
14
15
  - [Template](#template) - Project structure and features
@@ -113,6 +114,69 @@ Each dependency can have the following fields and restrictions:
113
114
  | `development` | Whether the dependency is a development dependency. | Must be either `true` or `false`. | No |
114
115
  | `group` | The development dependency group. | Only available if `development` is `true`. | Based on restrictions |
115
116
 
117
+ ## JSON Schema Support
118
+
119
+ `instant-python` provides a JSON Schema to help you write and validate your configuration files with autocompletion and validation in your IDE.
120
+
121
+ ### What is a JSON Schema?
122
+
123
+ A JSON Schema is a specification that defines the structure and validation rules for JSON and YAML files. By using a schema, your IDE can:
124
+
125
+ - **Autocomplete** field names and values
126
+ - **Validate** your configuration in real-time
127
+ - **Show inline documentation** for each field
128
+ - **Detect errors** before running the command
129
+
130
+ ### How to Use the Schema
131
+
132
+ The schema is available at:
133
+ ```
134
+ https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/ipy-schema.json
135
+ ```
136
+
137
+ !!! tip "Schema autodetection"
138
+ If your configuration file is named `ipy.yml`, some IDEs may automatically detect and apply the schema
139
+ from [SchemaStore](https://www.schemastore.org/). However, as it may take some time to updated and listed there,
140
+ we recommend configuring it manually to ensure you are using the latest version.
141
+
142
+ #### For Visual Studio Code
143
+
144
+ Add the following line at the top of your `ipy.yml` file:
145
+
146
+ ```yaml
147
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/ipy-schema.json
148
+
149
+ general:
150
+ slug: my-project
151
+ # ...
152
+ ```
153
+
154
+ Alternatively, you can configure it globally in your VS Code settings (`.vscode/settings.json`):
155
+
156
+ ```json
157
+ {
158
+ "yaml.schemas": {
159
+ "https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/ipy-schema.json": "ipy.yml"
160
+ }
161
+ }
162
+ ```
163
+
164
+ #### For PyCharm / IntelliJ IDEA
165
+
166
+ 1. Open your `ipy.yml` file
167
+ 2. At the top of the file, add:
168
+ ```yaml
169
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/ipy-schema.json
170
+ ```
171
+ 3. PyCharm will automatically detect and use the schema
172
+
173
+ Alternatively, you can configure it manually:
174
+
175
+ 1. Go to **Settings** → **Languages & Frameworks** → **Schemas and DTDs** → **JSON Schema Mappings**
176
+ 2. Click the **+** button to add a new mapping
177
+ 3. Set the **Schema URL** to: `https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/ipy-schema.json`
178
+ 4. Add a file pattern: `ipy.yml`
179
+
116
180
  ## Configuration File Examples
117
181
 
118
182
  ### Without initializing a git repository
@@ -21,15 +21,15 @@ Follow these steps to create and use your first custom template:
21
21
 
22
22
  ```
23
23
  my_templates/
24
- ├── main_structure.yml.j2 (required: defines your project structure)
24
+ ├── main_structure.yml (required: defines your project structure)
25
25
  ├── authentication.py (optional: custom file templates)
26
26
  ├── database.py (optional: more templates)
27
27
  └── config.py (optional: more templates)
28
28
  ```
29
29
 
30
- 2. Define Your Project Structure: create a file named `main_structure.yml.j2` in your template folder.
30
+ 2. Define Your Project Structure: create a file named `main_structure.yml` in your template folder.
31
31
 
32
- !!! warning "File *main_structure.yml.j2* is required"
32
+ !!! warning "File *main_structure.yml* is required"
33
33
  This is the **required** file that defines what your projects will look like.
34
34
 
35
35
  3. (Optional) Add Custom File Templates: create any additional template files (like `authentication.py`, `config.py`, etc.) that
@@ -49,13 +49,13 @@ Your custom template must follow specific rules to generate projects correctly.
49
49
 
50
50
  ### File Naming & Location
51
51
 
52
- - **File name:** Your main structure file **must** be named exactly `main_structure.yml.j2`
52
+ - **File name:** Your main structure file **must** be named exactly `main_structure.yml`
53
53
  - **Location:** This file **must** be at the root of your custom templates folder
54
54
  - **Format:** Must be a YAML file (`.yml` extension)
55
55
 
56
56
  ### Required Elements
57
57
 
58
- - **pyproject.toml:** You **must** include a `pyproject.toml` file in your `main_structure.yml.j2` structure. This
58
+ - **pyproject.toml:** You **must** include a `pyproject.toml` file in your `main_structure.yml` structure. This
59
59
  is required for the dependency manager to work. If missing, `instant-python` will raise an error.
60
60
 
61
61
  ### Structure Definition Format
@@ -99,6 +99,71 @@ When you specify a `template` field for a file:
99
99
 
100
100
  This means you can optionally use built-in templates without having to provide your own.
101
101
 
102
+ ## JSON Schema Support for Custom Templates
103
+
104
+ `instant-python` provides a JSON Schema specifically designed to help you create your `main_structure.yml` file with IDE assistance.
105
+
106
+ ### What is a JSON Schema?
107
+
108
+ A JSON Schema is a specification that defines the structure and validation rules for JSON and YAML files. By using a schema when writing your custom template structure, your IDE can:
109
+
110
+ - **Autocomplete** field names (like `name`, `type`, `python`, `children`, etc.)
111
+ - **Validate** your structure definition in real-time
112
+ - **Show inline documentation** explaining what each field does
113
+ - **Detect errors** before generating your project (like missing required fields or invalid values)
114
+
115
+ ### How to Use the Schema
116
+
117
+ The schema for custom template structures is available at:
118
+ ```
119
+ https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/main-structure-schema.json
120
+ ```
121
+
122
+ !!! tip "Schema autodetection"
123
+ If your configuration file is named `ipy.yml`, some IDEs may automatically detect and apply the schema
124
+ from [SchemaStore](https://www.schemastore.org/). However, as it may take some time to updated and listed there,
125
+ we recommend configuring it manually to ensure you are using the latest version.
126
+
127
+ #### For Visual Studio Code
128
+
129
+ Add the following line at the top of your `main_structure.yml` file:
130
+
131
+ ```yaml
132
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/main-structure-schema.json
133
+
134
+ - name: src
135
+ type: directory
136
+ python: True
137
+ children:
138
+ # ...
139
+ ```
140
+
141
+ Alternatively, you can configure it globally in your VS Code settings (`.vscode/settings.json`) for all your custom templates:
142
+
143
+ ```json
144
+ {
145
+ "yaml.schemas": {
146
+ "https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/main-structure-schema.json": "**/main_structure.yml"
147
+ }
148
+ }
149
+ ```
150
+
151
+ #### For PyCharm / IntelliJ IDEA
152
+
153
+ 1. Open your `main_structure.yml` file
154
+ 2. At the top of the file, add:
155
+ ```yaml
156
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/main-structure-schema.json
157
+ ```
158
+ 3. PyCharm will automatically detect and use the schema
159
+
160
+ Alternatively, you can configure it manually:
161
+
162
+ 1. Go to **Settings** → **Languages & Frameworks** → **Schemas and DTDs** → **JSON Schema Mappings**
163
+ 2. Click the **+** button to add a new mapping
164
+ 3. Set the **Schema URL** to: `https://raw.githubusercontent.com/dimanu-py/instant-python/main/schemas/main-structure-schema.json`
165
+ 4. Add a file pattern: `main_structure.yml`
166
+
102
167
  ## Examples
103
168
 
104
169
  ### Hexagonal Architecture Project
@@ -109,7 +174,7 @@ gitignore, README and pyproject files.
109
174
  !!! important
110
175
  Remember that the _pyproject.toml_ file is always required for `instant-python` to be able to set up the environment of your project.
111
176
 
112
- Create a file named `main_structure.yml.j2` in your templates folder with the following content:
177
+ Create a file named `main_structure.yml` in your templates folder with the following content:
113
178
 
114
179
  ```yaml
115
180
  - name: src
@@ -189,7 +254,7 @@ def authenticate_user(username: str, password: str) -> bool:
189
254
  return username == "admin" and password == "secret"
190
255
  ```
191
256
 
192
- **Step 2:** Reference this template in your `main_structure.yml.j2`:
257
+ **Step 2:** Reference this template in your `main_structure.yml`:
193
258
 
194
259
  ```yaml
195
260
  - name: src