instant-python 0.19.1__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 (323) hide show
  1. {instant_python-0.19.1 → instant_python-0.20.0}/.github/actions/python_setup/action.yml +1 -3
  2. {instant_python-0.19.1 → instant_python-0.20.0}/.github/workflows/ci.yml +2 -2
  3. {instant_python-0.19.1 → instant_python-0.20.0}/CHANGELOG.md +71 -0
  4. {instant_python-0.19.1 → instant_python-0.20.0}/PKG-INFO +2 -1
  5. {instant_python-0.19.1 → instant_python-0.20.0}/docs/guide/command_config.md +64 -0
  6. {instant_python-0.19.1 → 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.1 → instant_python-0.20.0}/instant_python/cli/cli.py +4 -1
  10. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/application/config_generator.py +8 -5
  11. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/delivery/cli.py +2 -2
  12. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/delivery/cli.py +1 -1
  13. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/renderer/jinja_project_renderer.py +1 -1
  14. {instant_python-0.19.1/instant_python/initialize → instant_python-0.20.0/instant_python/shared}/domain/config_repository.py +4 -0
  15. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/domain/config_schema.py +1 -1
  16. {instant_python-0.19.1/instant_python/initialize → instant_python-0.20.0/instant_python/shared}/infra/persistence/yaml_config_repository.py +6 -1
  17. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/makefile +7 -0
  18. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml +1 -1
  19. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/domain.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/domain.yml +3 -3
  20. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/infra.yml +5 -5
  21. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml +2 -2
  22. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/main_structure.yml +18 -18
  23. instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/source.yml +9 -0
  24. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/test.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/test.yml +4 -4
  25. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml +1 -1
  26. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml +2 -2
  27. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml +3 -3
  28. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/infra.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml +5 -5
  29. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml +3 -3
  30. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml +2 -2
  31. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/main_structure.yml +18 -18
  32. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/source.yml +3 -3
  33. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/test.yml +2 -2
  34. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/project_structure/macros.j2 +2 -2
  35. instant_python-0.20.0/instant_python/templates/project_structure/persistence/alembic_migrator.yml +6 -0
  36. instant_python-0.19.1/instant_python/templates/project_structure/persistence/async_sqlalchemy.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_sqlalchemy.yml +1 -1
  37. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/source_features.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/source_features.yml +9 -9
  38. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml +1 -1
  39. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/test_features.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/layers/test_features.yml +2 -2
  40. instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/main_structure.yml +18 -18
  41. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/source.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/source.yml +1 -1
  42. instant_python-0.19.1/instant_python/templates/project_structure/standard_project/test.yml.j2 → instant_python-0.20.0/instant_python/templates/project_structure/standard_project/test.yml +1 -1
  43. {instant_python-0.19.1 → instant_python-0.20.0}/makefile +11 -4
  44. {instant_python-0.19.1 → instant_python-0.20.0}/mkdocs.yml +1 -0
  45. {instant_python-0.19.1 → instant_python-0.20.0}/pyproject.toml +3 -2
  46. instant_python-0.20.0/schemas/ipy-schema.json +280 -0
  47. instant_python-0.20.0/schemas/main-structure-schema.json +88 -0
  48. {instant_python-0.19.1 → instant_python-0.20.0}/test/config/application/test_config_generator.py +5 -5
  49. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_template_section_combinations.approved.txt +12 -12
  50. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/mothers/config_schema_mother.py +12 -0
  51. instant_python-0.20.0/test/shared/persistence/test_yaml_config_repository.py +50 -0
  52. {instant_python-0.19.1 → instant_python-0.20.0}/uv.lock +63 -1
  53. instant_python-0.19.1/instant_python/__init__.py +0 -1
  54. instant_python-0.19.1/instant_python/config/domain/config_writer.py +0 -9
  55. instant_python-0.19.1/instant_python/config/infra/writer/yaml_config_writer.py +0 -13
  56. instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +0 -9
  57. instant_python-0.19.1/instant_python/templates/project_structure/persistence/alembic_migrator.yml.j2 +0 -6
  58. instant_python-0.19.1/scripts/add_dependency.py +0 -24
  59. instant_python-0.19.1/scripts/remove_dependency.py +0 -22
  60. instant_python-0.19.1/test/config/infra/writer/test_yaml_config_writer.py +0 -16
  61. instant_python-0.19.1/test/initialize/infra/persistence/approvaltests_config.json +0 -3
  62. instant_python-0.19.1/test/initialize/infra/persistence/approved_files/TestYamlConfigRepository.test_should_read_existing_config_file.approved.txt +0 -26
  63. instant_python-0.19.1/test/initialize/infra/persistence/test_yaml_config_repository.py +0 -59
  64. instant_python-0.19.1/test/shared/domain/__init__.py +0 -0
  65. instant_python-0.19.1/test/shared/domain/mothers/__init__.py +0 -0
  66. {instant_python-0.19.1 → instant_python-0.20.0}/.github/FUNDING.yml +0 -0
  67. {instant_python-0.19.1 → instant_python-0.20.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  68. {instant_python-0.19.1 → instant_python-0.20.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  69. {instant_python-0.19.1 → instant_python-0.20.0}/.github/pull_request_template.md +0 -0
  70. {instant_python-0.19.1 → instant_python-0.20.0}/.github/workflows/pages.yml +0 -0
  71. {instant_python-0.19.1 → instant_python-0.20.0}/.github/workflows/release.yml +0 -0
  72. {instant_python-0.19.1 → instant_python-0.20.0}/.gitignore +0 -0
  73. {instant_python-0.19.1 → instant_python-0.20.0}/.pre-commit-config.yaml +0 -0
  74. {instant_python-0.19.1 → instant_python-0.20.0}/.python-version +0 -0
  75. {instant_python-0.19.1 → instant_python-0.20.0}/CITATION.cff +0 -0
  76. {instant_python-0.19.1 → instant_python-0.20.0}/LICENSE +0 -0
  77. {instant_python-0.19.1 → instant_python-0.20.0}/README.md +0 -0
  78. {instant_python-0.19.1 → instant_python-0.20.0}/SECURITY.md +0 -0
  79. {instant_python-0.19.1 → instant_python-0.20.0}/codeql-config.yml +0 -0
  80. {instant_python-0.19.1 → instant_python-0.20.0}/docs/assets/favicon.svg +0 -0
  81. {instant_python-0.19.1 → instant_python-0.20.0}/docs/assets/logo.svg +0 -0
  82. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  83. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  84. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  85. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/changes.md.j2 +0 -0
  86. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/first_release.md.j2 +0 -0
  87. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/macros.md.j2 +0 -0
  88. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  89. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/.release_notes.md.j2 +0 -0
  90. {instant_python-0.19.1 → instant_python-0.20.0}/docs/changelog/CHANGELOG.md.j2 +0 -0
  91. {instant_python-0.19.1 → instant_python-0.20.0}/docs/development/contributing.md +0 -0
  92. {instant_python-0.19.1 → instant_python-0.20.0}/docs/development/releases.md +0 -0
  93. {instant_python-0.19.1 → instant_python-0.20.0}/docs/development/security.md +0 -0
  94. {instant_python-0.19.1 → instant_python-0.20.0}/docs/downloads_macro.py +0 -0
  95. {instant_python-0.19.1 → instant_python-0.20.0}/docs/getting_started/first_steps.md +0 -0
  96. {instant_python-0.19.1 → instant_python-0.20.0}/docs/getting_started/installation.md +0 -0
  97. {instant_python-0.19.1 → instant_python-0.20.0}/docs/guide/command_init.md +0 -0
  98. {instant_python-0.19.1 → instant_python-0.20.0}/docs/guide/default_features.md +0 -0
  99. {instant_python-0.19.1 → instant_python-0.20.0}/docs/guide/index.md +0 -0
  100. {instant_python-0.19.1 → instant_python-0.20.0}/docs/home/index.md +0 -0
  101. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/cli/__init__.py +0 -0
  102. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/cli/instant_python_typer.py +0 -0
  103. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/__init__.py +0 -0
  104. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/application/__init__.py +0 -0
  105. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/delivery/__init__.py +0 -0
  106. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/domain/__init__.py +0 -0
  107. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/domain/question_wizard.py +0 -0
  108. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/__init__.py +0 -0
  109. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/__init__.py +0 -0
  110. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
  111. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
  112. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
  113. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/general_step.py +0 -0
  114. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
  115. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
  116. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
  117. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
  118. {instant_python-0.19.1/instant_python/config/infra/writer → instant_python-0.20.0/instant_python/initialize}/__init__.py +0 -0
  119. {instant_python-0.19.1/instant_python/initialize → instant_python-0.20.0/instant_python/initialize/application}/__init__.py +0 -0
  120. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/application/project_initializer.py +0 -0
  121. {instant_python-0.19.1/instant_python/initialize/application → instant_python-0.20.0/instant_python/initialize/delivery}/__init__.py +0 -0
  122. {instant_python-0.19.1/instant_python/initialize/delivery → instant_python-0.20.0/instant_python/initialize/domain}/__init__.py +0 -0
  123. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/env_manager.py +0 -0
  124. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/node.py +0 -0
  125. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/project_formatter.py +0 -0
  126. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/project_renderer.py +0 -0
  127. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/project_structure.py +0 -0
  128. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/project_writer.py +0 -0
  129. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/domain/version_control_configurer.py +0 -0
  130. {instant_python-0.19.1/instant_python/initialize/domain → instant_python-0.20.0/instant_python/initialize/infra}/__init__.py +0 -0
  131. {instant_python-0.19.1/instant_python/initialize/infra → instant_python-0.20.0/instant_python/initialize/infra/env_manager}/__init__.py +0 -0
  132. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/env_manager_factory.py +0 -0
  133. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/pdm_env_manager.py +0 -0
  134. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/system_console.py +0 -0
  135. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/env_manager/uv_env_manager.py +0 -0
  136. {instant_python-0.19.1/instant_python/initialize/infra/env_manager → instant_python-0.20.0/instant_python/initialize/infra/formatter}/__init__.py +0 -0
  137. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/formatter/ruff_project_formatter.py +0 -0
  138. {instant_python-0.19.1/instant_python/initialize/infra/formatter → instant_python-0.20.0/instant_python/initialize/infra/renderer}/__init__.py +0 -0
  139. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/renderer/jinja_environment.py +0 -0
  140. {instant_python-0.19.1/instant_python/initialize/infra/persistence → instant_python-0.20.0/instant_python/initialize/infra/version_control}/__init__.py +0 -0
  141. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/version_control/git_configurer.py +0 -0
  142. {instant_python-0.19.1/instant_python/initialize/infra/renderer → instant_python-0.20.0/instant_python/initialize/infra/writer}/__init__.py +0 -0
  143. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/initialize/infra/writer/file_system_project_writer.py +0 -0
  144. {instant_python-0.19.1/instant_python/initialize/infra/version_control → instant_python-0.20.0/instant_python/shared}/__init__.py +0 -0
  145. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/application_error.py +0 -0
  146. {instant_python-0.19.1/instant_python/initialize/infra/writer → instant_python-0.20.0/instant_python/shared/domain}/__init__.py +0 -0
  147. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/domain/dependency_config.py +0 -0
  148. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/domain/general_config.py +0 -0
  149. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/domain/git_config.py +0 -0
  150. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/domain/template_config.py +0 -0
  151. {instant_python-0.19.1/instant_python/shared → instant_python-0.20.0/instant_python/shared/infra}/__init__.py +0 -0
  152. {instant_python-0.19.1/instant_python/shared/domain → instant_python-0.20.0/instant_python/shared/infra/persistence}/__init__.py +0 -0
  153. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/supported_built_in_features.py +0 -0
  154. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/supported_licenses.py +0 -0
  155. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/supported_managers.py +0 -0
  156. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/supported_python_versions.py +0 -0
  157. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/shared/supported_templates.py +0 -0
  158. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/.gitignore +0 -0
  159. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
  160. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/.python-version +0 -0
  161. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  162. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/LICENSE +0 -0
  163. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/README.md +0 -0
  164. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  165. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
  166. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  167. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  168. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  169. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  170. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
  171. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  172. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  173. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  174. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  175. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  176. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  177. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  178. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  179. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  180. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
  181. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/base_error.py +0 -0
  182. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  183. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  184. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  185. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  186. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
  187. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  188. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
  189. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  190. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  191. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  192. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
  193. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
  194. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  195. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/ci.yml +0 -0
  196. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  197. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/github/release.yml +0 -0
  198. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
  199. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  200. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  201. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  202. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
  203. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
  204. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  205. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  206. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
  207. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  208. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  209. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/async_session.py +0 -0
  210. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  211. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  212. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  213. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  214. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  215. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  216. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
  217. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  218. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  219. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/pyproject.toml +0 -0
  220. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
  221. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
  222. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
  223. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
  224. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
  225. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
  226. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
  227. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
  228. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
  229. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
  230. {instant_python-0.19.1 → instant_python-0.20.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
  231. /instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/application.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/application.yml +0 -0
  232. /instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml +0 -0
  233. /instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml +0 -0
  234. /instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml +0 -0
  235. /instant_python-0.19.1/instant_python/templates/project_structure/config_files/gitignore.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/gitignore.yml +0 -0
  236. /instant_python-0.19.1/instant_python/templates/project_structure/config_files/mypy.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/mypy.yml +0 -0
  237. /instant_python-0.19.1/instant_python/templates/project_structure/config_files/pyproject.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/pyproject.yml +0 -0
  238. /instant_python-0.19.1/instant_python/templates/project_structure/config_files/pytest.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/pytest.yml +0 -0
  239. /instant_python-0.19.1/instant_python/templates/project_structure/config_files/python_version.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/config_files/python_version.yml +0 -0
  240. /instant_python-0.19.1/instant_python/templates/project_structure/documentation/citation.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/citation.yml +0 -0
  241. /instant_python-0.19.1/instant_python/templates/project_structure/documentation/license.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/license.yml +0 -0
  242. /instant_python-0.19.1/instant_python/templates/project_structure/documentation/readme.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/readme.yml +0 -0
  243. /instant_python-0.19.1/instant_python/templates/project_structure/documentation/security.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/documentation/security.yml +0 -0
  244. /instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/bounded_context.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/bounded_context.yml +0 -0
  245. /instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml +0 -0
  246. /instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml +0 -0
  247. /instant_python-0.19.1/instant_python/templates/project_structure/errors.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/errors.yml +0 -0
  248. /instant_python-0.19.1/instant_python/templates/project_structure/events/event_bus_domain.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/events/event_bus_domain.yml +0 -0
  249. /instant_python-0.19.1/instant_python/templates/project_structure/events/event_bus_infra.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/events/event_bus_infra.yml +0 -0
  250. /instant_python-0.19.1/instant_python/templates/project_structure/events/mock_event_bus.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/events/mock_event_bus.yml +0 -0
  251. /instant_python-0.19.1/instant_python/templates/project_structure/fastapi/fastapi_app.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_app.yml +0 -0
  252. /instant_python-0.19.1/instant_python/templates/project_structure/fastapi/fastapi_domain.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_domain.yml +0 -0
  253. /instant_python-0.19.1/instant_python/templates/project_structure/fastapi/fastapi_infra.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/fastapi/fastapi_infra.yml +0 -0
  254. /instant_python-0.19.1/instant_python/templates/project_structure/github/github_action.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/github_action.yml +0 -0
  255. /instant_python-0.19.1/instant_python/templates/project_structure/github/github_issues_template.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/github_issues_template.yml +0 -0
  256. /instant_python-0.19.1/instant_python/templates/project_structure/github/makefile.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/makefile.yml +0 -0
  257. /instant_python-0.19.1/instant_python/templates/project_structure/github/precommit_hook.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/github/precommit_hook.yml +0 -0
  258. /instant_python-0.19.1/instant_python/templates/project_structure/logger.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/logger.yml +0 -0
  259. /instant_python-0.19.1/instant_python/templates/project_structure/persistence/async_alembic.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_alembic.yml +0 -0
  260. /instant_python-0.19.1/instant_python/templates/project_structure/persistence/async_engine_conftest.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/async_engine_conftest.yml +0 -0
  261. /instant_python-0.19.1/instant_python/templates/project_structure/persistence/persistence.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/persistence.yml +0 -0
  262. /instant_python-0.19.1/instant_python/templates/project_structure/persistence/synchronous_sqlalchemy.yml.j2 → /instant_python-0.20.0/instant_python/templates/project_structure/persistence/synchronous_sqlalchemy.yml +0 -0
  263. {instant_python-0.19.1 → instant_python-0.20.0}/mypy.ini +0 -0
  264. {instant_python-0.19.1 → instant_python-0.20.0}/test/__init__.py +0 -0
  265. {instant_python-0.19.1 → instant_python-0.20.0}/test/cli/__init__.py +0 -0
  266. {instant_python-0.19.1 → instant_python-0.20.0}/test/cli/test_version_command.py +0 -0
  267. {instant_python-0.19.1 → instant_python-0.20.0}/test/config/__init__.py +0 -0
  268. {instant_python-0.19.1 → instant_python-0.20.0}/test/config/application/__init__.py +0 -0
  269. {instant_python-0.19.1/test/config/infra → instant_python-0.20.0/test/initialize}/__init__.py +0 -0
  270. {instant_python-0.19.1/test/config/infra/writer → instant_python-0.20.0/test/initialize/application}/__init__.py +0 -0
  271. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/application/test_project_initializer.py +0 -0
  272. {instant_python-0.19.1/test/initialize → instant_python-0.20.0/test/initialize/delivery}/__init__.py +0 -0
  273. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/approvaltests_config.json +0 -0
  274. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_custom_project_structure.approved.txt +0 -0
  275. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +0 -0
  276. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_git_section_combinations.approved.txt +0 -0
  277. {instant_python-0.19.1 → 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
  278. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/delivery/test_init_cli.py +0 -0
  279. {instant_python-0.19.1/test/initialize/application → instant_python-0.20.0/test/initialize/domain}/__init__.py +0 -0
  280. {instant_python-0.19.1/test/initialize/delivery → instant_python-0.20.0/test/initialize/domain/mothers}/__init__.py +0 -0
  281. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/domain/mothers/node_mother.py +0 -0
  282. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/domain/mothers/project_structure_mother.py +0 -0
  283. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/domain/test_node.py +0 -0
  284. {instant_python-0.19.1/test/initialize/domain → instant_python-0.20.0/test/initialize/infra}/__init__.py +0 -0
  285. {instant_python-0.19.1/test/initialize/domain/mothers → instant_python-0.20.0/test/initialize/infra/env_manager}/__init__.py +0 -0
  286. {instant_python-0.19.1/test/initialize/infra → instant_python-0.20.0/test/initialize/infra/env_manager/mother}/__init__.py +0 -0
  287. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/env_manager/mother/command_execution_result_mother.py +0 -0
  288. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_pdm_env_manager.py +0 -0
  289. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_system_console.py +0 -0
  290. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/env_manager/test_uv_env_manager.py +0 -0
  291. {instant_python-0.19.1/test/initialize/infra/env_manager → instant_python-0.20.0/test/initialize/infra/formatter}/__init__.py +0 -0
  292. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/formatter/test_ruff_project_formatter.py +0 -0
  293. {instant_python-0.19.1/test/initialize/infra/env_manager/mother → instant_python-0.20.0/test/initialize/infra/renderer}/__init__.py +0 -0
  294. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/renderer/test_jinja_environment.py +0 -0
  295. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/renderer/test_jinja_project_renderer.py +0 -0
  296. {instant_python-0.19.1/test/initialize/infra/formatter → instant_python-0.20.0/test/initialize/infra/version_control}/__init__.py +0 -0
  297. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/version_control/test_git_configurer.py +0 -0
  298. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_file_in_file_system.approved.txt +0 -0
  299. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_python_module_in_file_system.approved.txt +0 -0
  300. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_standard_directory_in_file_system.approved.txt +0 -0
  301. {instant_python-0.19.1/test/initialize/infra/persistence → instant_python-0.20.0/test/initialize/infra/writer}/__init__.py +0 -0
  302. {instant_python-0.19.1 → instant_python-0.20.0}/test/initialize/infra/writer/test_file_system_project_writer.py +0 -0
  303. {instant_python-0.19.1 → instant_python-0.20.0}/test/random_generator.py +0 -0
  304. {instant_python-0.19.1 → instant_python-0.20.0}/test/resources/base_ipy_config.yml +0 -0
  305. {instant_python-0.19.1 → instant_python-0.20.0}/test/resources/domain_error_template.py +0 -0
  306. {instant_python-0.19.1 → instant_python-0.20.0}/test/resources/hello_world.j2 +0 -0
  307. /instant_python-0.19.1/test/resources/main_structure.yml.j2 → /instant_python-0.20.0/test/resources/main_structure.yml +0 -0
  308. /instant_python-0.19.1/test/resources/standard_project/main_structure.yml.j2 → /instant_python-0.20.0/test/resources/standard_project/main_structure.yml +0 -0
  309. {instant_python-0.19.1/test/initialize/infra/renderer → instant_python-0.20.0/test/shared}/__init__.py +0 -0
  310. {instant_python-0.19.1/test/initialize/infra/version_control → instant_python-0.20.0/test/shared/domain}/__init__.py +0 -0
  311. {instant_python-0.19.1/test/initialize/infra/writer → instant_python-0.20.0/test/shared/domain/mothers}/__init__.py +0 -0
  312. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/mothers/dependency_config_mother.py +0 -0
  313. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/mothers/general_config_mother.py +0 -0
  314. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/mothers/git_config_mother.py +0 -0
  315. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/mothers/template_config_mother.py +0 -0
  316. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/test_config_schema.py +0 -0
  317. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/test_dependency_config.py +0 -0
  318. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/test_general_config.py +0 -0
  319. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/test_git_config.py +0 -0
  320. {instant_python-0.19.1 → instant_python-0.20.0}/test/shared/domain/test_template_configuration.py +0 -0
  321. {instant_python-0.19.1/test/shared → instant_python-0.20.0/test/shared/persistence}/__init__.py +0 -0
  322. {instant_python-0.19.1 → instant_python-0.20.0}/test/utils.py +0 -0
  323. {instant_python-0.19.1 → 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,77 @@
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
+
5
76
  ## v0.19.1 (2025-11-27)
6
77
 
7
78
  ### 🪲 Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instant-python
3
- Version: 0.19.1
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