instant-python 0.26.1__tar.gz → 0.27.1__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 (460) hide show
  1. {instant_python-0.26.1 → instant_python-0.27.1}/.github/actions/setup_environment/action.yml +1 -1
  2. {instant_python-0.26.1 → instant_python-0.27.1}/.github/workflows/ci.yml +10 -34
  3. {instant_python-0.26.1 → instant_python-0.27.1}/.github/workflows/release.yml +2 -1
  4. {instant_python-0.26.1 → instant_python-0.27.1}/.pre-commit-config.yaml +2 -2
  5. {instant_python-0.26.1 → instant_python-0.27.1}/CHANGELOG.md +94 -0
  6. {instant_python-0.26.1 → instant_python-0.27.1}/PKG-INFO +1 -1
  7. instant_python-0.27.1/Taskfile.yml +73 -0
  8. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/getting_started/first_steps.md +2 -2
  9. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/getting_started/installation.md +36 -1
  10. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/getting_started/privacy_and_metrics.md +1 -1
  11. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/command_config.md +1 -1
  12. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/default_features.md +2 -5
  13. instant_python-0.27.1/instant_python/__init__.py +1 -0
  14. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/cli/cli.py +11 -16
  15. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/general_step.py +0 -1
  16. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/delivery/cli.py +3 -3
  17. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/env_manager/env_manager_factory.py +1 -3
  18. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/env_manager/uv_env_manager.py +2 -2
  19. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/formatter/ruff_project_formatter.py +1 -1
  20. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/version_control/git_configurer.py +1 -1
  21. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/general_config.py +11 -2
  22. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/supported_managers.py +0 -1
  23. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/.pre-commit-config.yaml +2 -2
  24. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/action.yml +0 -8
  25. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/ci.yml +2 -22
  26. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/release.yml +1 -1
  27. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/pyproject.toml +1 -6
  28. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/scripts/makefile +18 -52
  29. instant_python-0.27.1/instant_python/version/application/version_updater.py +21 -0
  30. instant_python-0.27.1/instant_python/version/delivery/cli.py +40 -0
  31. instant_python-0.27.1/instant_python/version/domain/installation_method.py +8 -0
  32. instant_python-0.27.1/instant_python/version/domain/installation_method_detector.py +9 -0
  33. instant_python-0.27.1/instant_python/version/domain/latest_version.py +13 -0
  34. instant_python-0.27.1/instant_python/version/domain/latest_version_repository.py +9 -0
  35. instant_python-0.27.1/instant_python/version/domain/updater.py +9 -0
  36. instant_python-0.27.1/instant_python/version/domain/updater_resolver.py +10 -0
  37. instant_python-0.27.1/instant_python/version/infra/binary_updater.py +52 -0
  38. instant_python-0.27.1/instant_python/version/infra/pip_updater.py +15 -0
  39. instant_python-0.27.1/instant_python/version/infra/pipx_updater.py +17 -0
  40. instant_python-0.27.1/instant_python/version/infra/py_pi_version_repository.py +14 -0
  41. instant_python-0.27.1/instant_python/version/infra/system_installation_method_detector.py +22 -0
  42. instant_python-0.27.1/instant_python/version/infra/updater_factory.py +24 -0
  43. instant_python-0.27.1/instant_python/version/infra/urllib_http_client.py +15 -0
  44. instant_python-0.27.1/instant_python/version/infra/uv_updater.py +17 -0
  45. {instant_python-0.26.1 → instant_python-0.27.1}/pyproject.toml +1 -1
  46. {instant_python-0.26.1 → instant_python-0.27.1}/schemas/ipy-schema.json +1 -1
  47. {instant_python-0.26.1 → instant_python-0.27.1}/scripts/install.ps1 +9 -3
  48. {instant_python-0.26.1 → instant_python-0.27.1}/scripts/install.sh +11 -3
  49. instant_python-0.27.1/task/deps.yml +38 -0
  50. instant_python-0.27.1/task/dev.yml +50 -0
  51. instant_python-0.27.1/task/docs.yml +7 -0
  52. instant_python-0.27.1/task/test.yml +44 -0
  53. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/application/test_config_generator.py +2 -0
  54. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/step/test_dependencies_step.py +2 -0
  55. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/step/test_git_step.py +2 -0
  56. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/step/test_template_step.py +2 -0
  57. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/test_console_answer_review_formatter.py +1 -0
  58. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/test_questionary_console_wizard.py +5 -8
  59. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/application/test_project_initializer.py +2 -0
  60. instant_python-0.27.1/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +12 -0
  61. instant_python-0.27.1/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_predefined_dependencies_and_different_managers.approved.txt +2 -0
  62. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/domain/test_node.py +2 -0
  63. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/env_manager/test_uv_env_manager.py +4 -2
  64. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/formatter/test_ruff_project_formatter.py +4 -2
  65. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/renderer/test_jinja_environment.py +2 -0
  66. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/renderer/test_jinja_project_renderer.py +2 -0
  67. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/version_control/test_git_configurer.py +4 -2
  68. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/writer/test_file_system_project_writer.py +2 -0
  69. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/application/test_config_snapshot_creator.py +2 -0
  70. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/application/test_usage_metrics_sender.py +2 -0
  71. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/infra/test_post_hog_config.py +1 -0
  72. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/infra/test_post_hog_metrics_reporter.py +2 -0
  73. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/infra/test_user_identity_manager.py +2 -0
  74. instant_python-0.27.1/test/shared/__init__.py +0 -0
  75. instant_python-0.27.1/test/shared/domain/__init__.py +0 -0
  76. instant_python-0.27.1/test/shared/domain/mothers/__init__.py +0 -0
  77. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/mothers/general_config_mother.py +13 -2
  78. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/test_config_schema.py +2 -0
  79. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/test_dependency_config.py +2 -0
  80. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/test_general_config.py +15 -0
  81. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/test_git_config.py +1 -0
  82. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/test_template_configuration.py +2 -0
  83. instant_python-0.27.1/test/shared/infra/__init__.py +0 -0
  84. instant_python-0.27.1/test/shared/infra/mother/__init__.py +0 -0
  85. {instant_python-0.26.1/test/initialize/infra/env_manager → instant_python-0.27.1/test/shared/infra}/mother/command_execution_result_mother.py +1 -1
  86. {instant_python-0.26.1/test/initialize/infra/env_manager → instant_python-0.27.1/test/shared/infra}/test_system_console.py +3 -1
  87. instant_python-0.27.1/test/shared/persistence/__init__.py +0 -0
  88. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/persistence/test_yaml_config_repository.py +2 -0
  89. instant_python-0.27.1/test/version/__init__.py +0 -0
  90. instant_python-0.27.1/test/version/application/__init__.py +0 -0
  91. instant_python-0.27.1/test/version/application/test_version_updater.py +49 -0
  92. instant_python-0.27.1/test/version/delivery/__init__.py +0 -0
  93. instant_python-0.27.1/test/version/delivery/test_version_cli.py +30 -0
  94. instant_python-0.27.1/test/version/infra/__init__.py +0 -0
  95. instant_python-0.27.1/test/version/infra/test_binary_updater.py +68 -0
  96. instant_python-0.27.1/test/version/infra/test_pip_updater.py +31 -0
  97. instant_python-0.27.1/test/version/infra/test_pipx_updater.py +29 -0
  98. instant_python-0.27.1/test/version/infra/test_py_pi_latest_version_repository.py +39 -0
  99. instant_python-0.27.1/test/version/infra/test_system_installation_method_detector.py +62 -0
  100. instant_python-0.27.1/test/version/infra/test_updater_factory.py +32 -0
  101. instant_python-0.27.1/test/version/infra/test_uv_updater.py +29 -0
  102. {instant_python-0.26.1 → instant_python-0.27.1}/uv.lock +107 -110
  103. instant_python-0.26.1/Taskfile.yml +0 -183
  104. instant_python-0.26.1/instant_python/__init__.py +0 -1
  105. instant_python-0.26.1/instant_python/initialize/infra/env_manager/pdm_env_manager.py +0 -66
  106. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -45
  107. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -33
  108. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/insert_template.py +0 -90
  109. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/integration.sh +0 -39
  110. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/local_setup.py +0 -12
  111. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/post-merge.py +0 -40
  112. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -15
  113. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/pre-push.py +0 -6
  114. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -40
  115. instant_python-0.26.1/instant_python/templates/boilerplate/scripts/unit.sh +0 -40
  116. instant_python-0.26.1/test/cli/test_version_command.py +0 -28
  117. instant_python-0.26.1/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +0 -24
  118. instant_python-0.26.1/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_predefined_dependencies_and_different_managers.approved.txt +0 -4
  119. instant_python-0.26.1/test/initialize/infra/env_manager/test_pdm_env_manager.py +0 -95
  120. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/agents/convention_keeper.md +0 -0
  121. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/agents/judge.md +0 -0
  122. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/agents/leader.md +0 -0
  123. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/agents/spec_partner.md +0 -0
  124. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/agents/tdd_craftsman.md +0 -0
  125. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/commands/commit.md +0 -0
  126. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/commands/technical_debt_review.md +0 -0
  127. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/code_review/SKILL.md +0 -0
  128. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/complexity_review/REFERENCE.md +0 -0
  129. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/complexity_review/SKILL.md +0 -0
  130. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/hamburger_method/REFERENCE.md +0 -0
  131. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/hamburger_method/SKILL.md +0 -0
  132. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/micro_steps_coach/REFERENCE.md +0 -0
  133. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/micro_steps_coach/SKILL.md +0 -0
  134. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/mutation_testing/SKILL.md +0 -0
  135. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/security_review/SKILL.md +0 -0
  136. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/story_splitting/REFERENCE.md +0 -0
  137. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/story_splitting/SKILL.md +0 -0
  138. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/test_desiderata/REFERENCE.md +0 -0
  139. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/test_desiderata/SKILL.md +0 -0
  140. {instant_python-0.26.1 → instant_python-0.27.1}/.agents/skills/xp_refactor/SKILL.md +0 -0
  141. {instant_python-0.26.1 → instant_python-0.27.1}/.github/FUNDING.yml +0 -0
  142. {instant_python-0.26.1 → instant_python-0.27.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  143. {instant_python-0.26.1 → instant_python-0.27.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  144. {instant_python-0.26.1 → instant_python-0.27.1}/.github/dependabot.yml +0 -0
  145. {instant_python-0.26.1 → instant_python-0.27.1}/.github/pull_request_template.md +0 -0
  146. {instant_python-0.26.1 → instant_python-0.27.1}/.github/workflows/pages.yml +0 -0
  147. {instant_python-0.26.1 → instant_python-0.27.1}/.gitignore +0 -0
  148. {instant_python-0.26.1 → instant_python-0.27.1}/AGENTS.md +0 -0
  149. {instant_python-0.26.1 → instant_python-0.27.1}/CITATION.cff +0 -0
  150. {instant_python-0.26.1 → instant_python-0.27.1}/LICENSE +0 -0
  151. {instant_python-0.26.1 → instant_python-0.27.1}/README.md +0 -0
  152. {instant_python-0.26.1 → instant_python-0.27.1}/SECURITY.md +0 -0
  153. {instant_python-0.26.1 → instant_python-0.27.1}/codeql-config.yml +0 -0
  154. {instant_python-0.26.1 → instant_python-0.27.1}/docs/agents/convention_guidelines.md +0 -0
  155. {instant_python-0.26.1 → instant_python-0.27.1}/docs/agents/leader_workflow.md +0 -0
  156. {instant_python-0.26.1 → instant_python-0.27.1}/docs/agents/spec_guidelines.md +0 -0
  157. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/changelog_header.md.j2 +0 -0
  158. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/changelog_init.md.j2 +0 -0
  159. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/changelog_update.md.j2 +0 -0
  160. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/changes.md.j2 +0 -0
  161. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/first_release.md.j2 +0 -0
  162. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/macros.md.j2 +0 -0
  163. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
  164. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/.release_notes.md.j2 +0 -0
  165. {instant_python-0.26.1 → instant_python-0.27.1}/docs/changelog/CHANGELOG.md.j2 +0 -0
  166. {instant_python-0.26.1 → instant_python-0.27.1}/docs/conventions/testing/assertion-helper-methods.md +0 -0
  167. {instant_python-0.26.1 → instant_python-0.27.1}/docs/conventions/testing/common-test-variables-in-setup-method.md +0 -0
  168. {instant_python-0.26.1 → instant_python-0.27.1}/docs/conventions/testing/tdd-outside-in.md +0 -0
  169. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/assets/favicon.svg +0 -0
  170. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/assets/logo.svg +0 -0
  171. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/development/contributing.md +0 -0
  172. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/development/releases.md +0 -0
  173. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/development/security.md +0 -0
  174. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/downloads_macro.py +0 -0
  175. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/command_init.md +0 -0
  176. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/custom_projects.md +0 -0
  177. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/index.md +0 -0
  178. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/guide/template_reference.md +0 -0
  179. {instant_python-0.26.1 → instant_python-0.27.1}/docs/documentation/home/index.md +0 -0
  180. {instant_python-0.26.1 → instant_python-0.27.1}/docs/specs/0001-metrics-middleware-refactor.md +0 -0
  181. {instant_python-0.26.1 → instant_python-0.27.1}/docs/specs/0002-new-tool-management-system.md +0 -0
  182. {instant_python-0.26.1 → instant_python-0.27.1}/docs/specs/0003-interactive-configuration-wizard-ux.md +0 -0
  183. {instant_python-0.26.1 → instant_python-0.27.1}/docs/specs/technical-debt-review.md +0 -0
  184. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/cli/__init__.py +0 -0
  185. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/cli/instant_python_typer.py +0 -0
  186. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/__init__.py +0 -0
  187. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/application/__init__.py +0 -0
  188. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/application/config_generator.py +0 -0
  189. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/delivery/__init__.py +0 -0
  190. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/delivery/cli.py +0 -0
  191. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/domain/__init__.py +0 -0
  192. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/domain/answers_review_formatter.py +0 -0
  193. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/domain/question_wizard.py +0 -0
  194. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/__init__.py +0 -0
  195. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/__init__.py +0 -0
  196. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/console_answers_review_formatter.py +0 -0
  197. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
  198. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
  199. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
  200. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
  201. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
  202. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
  203. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
  204. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/__init__.py +0 -0
  205. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/application/__init__.py +0 -0
  206. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/application/project_initializer.py +0 -0
  207. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/delivery/__init__.py +0 -0
  208. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/__init__.py +0 -0
  209. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/env_manager.py +0 -0
  210. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/node.py +0 -0
  211. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/project_formatter.py +0 -0
  212. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/project_renderer.py +0 -0
  213. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/project_structure.py +0 -0
  214. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/project_writer.py +0 -0
  215. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/domain/version_control_configurer.py +0 -0
  216. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/__init__.py +0 -0
  217. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/env_manager/__init__.py +0 -0
  218. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/formatter/__init__.py +0 -0
  219. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/renderer/__init__.py +0 -0
  220. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/renderer/jinja_environment.py +0 -0
  221. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/renderer/jinja_project_renderer.py +0 -0
  222. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/version_control/__init__.py +0 -0
  223. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/writer/__init__.py +0 -0
  224. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/initialize/infra/writer/file_system_project_writer.py +0 -0
  225. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/__init__.py +0 -0
  226. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/application/__init__.py +0 -0
  227. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/application/config_snapshot_creator.py +0 -0
  228. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/application/usage_metrics_sender.py +0 -0
  229. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/delivery/__init__.py +0 -0
  230. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/delivery/metrics_middleware.py +0 -0
  231. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/domain/__init__.py +0 -0
  232. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/domain/config_snapshot.py +0 -0
  233. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/domain/error_metrics_event.py +0 -0
  234. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/domain/metrics_reporter.py +0 -0
  235. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/domain/usage_metrics_data.py +0 -0
  236. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/infra/__init__.py +0 -0
  237. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/infra/post_hog_config.py +0 -0
  238. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/infra/post_hog_metrics_reporter.py +0 -0
  239. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/metrics/infra/user_identity_manager.py +0 -0
  240. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/__init__.py +0 -0
  241. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/application_error.py +0 -0
  242. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/__init__.py +0 -0
  243. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/config_repository.py +0 -0
  244. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/config_schema.py +0 -0
  245. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/dependency_config.py +0 -0
  246. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/git_config.py +0 -0
  247. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/domain/template_config.py +0 -0
  248. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/infra/__init__.py +0 -0
  249. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/infra/persistence/__init__.py +0 -0
  250. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/infra/persistence/yaml_config_repository.py +0 -0
  251. {instant_python-0.26.1/instant_python/initialize/infra/env_manager → instant_python-0.27.1/instant_python/shared/infra}/system_console.py +0 -0
  252. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/supported_built_in_features.py +0 -0
  253. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/supported_licenses.py +0 -0
  254. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/supported_python_versions.py +0 -0
  255. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/shared/supported_templates.py +0 -0
  256. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/.gitignore +0 -0
  257. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/.python-version +0 -0
  258. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/CITATION.cff +0 -0
  259. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/LICENSE +0 -0
  260. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/README.md +0 -0
  261. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/SECURITY.md +0 -0
  262. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/AGENTS.md +0 -0
  263. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/agents/convention_keeper.md +0 -0
  264. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/agents/judge.md +0 -0
  265. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/agents/leader.md +0 -0
  266. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/agents/spec_partner.md +0 -0
  267. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/agents/tdd_craftsman.md +0 -0
  268. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/commands/commit.md +0 -0
  269. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/commands/technical_debt_review.md +0 -0
  270. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/convention_guidelines.md +0 -0
  271. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/leader_workflow.md +0 -0
  272. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/code_review/SKILL.md +0 -0
  273. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/complexity_review/REFERENCE.md +0 -0
  274. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/complexity_review/SKILL.md +0 -0
  275. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/hamburger_method/REFERENCE.md +0 -0
  276. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/hamburger_method/SKILL.md +0 -0
  277. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/micro_steps_coach/REFERENCE.md +0 -0
  278. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/micro_steps_coach/SKILL.md +0 -0
  279. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/mutation_testing/SKILL.md +0 -0
  280. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/security_review/SKILL.md +0 -0
  281. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/story_splitting/REFERENCE.md +0 -0
  282. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/story_splitting/SKILL.md +0 -0
  283. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/test_desiderata/REFERENCE.md +0 -0
  284. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/test_desiderata/SKILL.md +0 -0
  285. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/skills/xp_refactor/SKILL.md +0 -0
  286. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/spec_guidelines.md +0 -0
  287. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/tasks.json +0 -0
  288. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/agents/tdd_outside_in.md +0 -0
  289. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
  290. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
  291. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
  292. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
  293. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
  294. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
  295. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
  296. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
  297. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
  298. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
  299. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
  300. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
  301. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
  302. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
  303. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
  304. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
  305. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/base_error.py +0 -0
  306. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
  307. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
  308. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
  309. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
  310. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
  311. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
  312. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
  313. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
  314. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
  315. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
  316. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
  317. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
  318. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/dependabot.yml +0 -0
  319. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
  320. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/github/pages.yml +0 -0
  321. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
  322. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
  323. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
  324. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
  325. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/mkdocs.yml +0 -0
  326. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/mypy.ini +0 -0
  327. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
  328. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
  329. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
  330. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
  331. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
  332. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
  333. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/async_session.py +0 -0
  334. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
  335. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
  336. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
  337. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
  338. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
  339. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/base.py +0 -0
  340. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
  341. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
  342. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
  343. {instant_python-0.26.1/test → instant_python-0.27.1/instant_python/templates/boilerplate/scripts}/__init__.py +0 -0
  344. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/agents/agents.yml +0 -0
  345. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/application.yml +0 -0
  346. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml +0 -0
  347. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/domain.yml +0 -0
  348. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/infra.yml +0 -0
  349. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml +0 -0
  350. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml +0 -0
  351. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml +0 -0
  352. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml +0 -0
  353. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/main_structure.yml +0 -0
  354. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/source.yml +0 -0
  355. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/clean_architecture/test.yml +0 -0
  356. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/config_files/gitignore.yml +0 -0
  357. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/config_files/mypy.yml +0 -0
  358. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/config_files/pyproject.yml +0 -0
  359. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/config_files/python_version.yml +0 -0
  360. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/documentation/citation.yml +0 -0
  361. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/documentation/documentation.yml +0 -0
  362. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/documentation/license.yml +0 -0
  363. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/documentation/readme.yml +0 -0
  364. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/documentation/security.yml +0 -0
  365. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/bounded_context.yml +0 -0
  366. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml +0 -0
  367. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml +0 -0
  368. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml +0 -0
  369. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml +0 -0
  370. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml +0 -0
  371. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml +0 -0
  372. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml +0 -0
  373. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml +0 -0
  374. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml +0 -0
  375. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/source.yml +0 -0
  376. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/domain_driven_design/test.yml +0 -0
  377. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/errors.yml +0 -0
  378. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/events/event_bus_domain.yml +0 -0
  379. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/events/event_bus_infra.yml +0 -0
  380. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/events/mock_event_bus.yml +0 -0
  381. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/fastapi/fastapi_app.yml +0 -0
  382. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/fastapi/fastapi_domain.yml +0 -0
  383. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/fastapi/fastapi_infra.yml +0 -0
  384. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/github/github_action.yml +0 -0
  385. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/github/github_issues_template.yml +0 -0
  386. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/github/makefile.yml +0 -0
  387. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/github/precommit_hook.yml +0 -0
  388. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/logger.yml +0 -0
  389. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/macros.j2 +0 -0
  390. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/alembic_migrator.yml +0 -0
  391. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/async_alembic.yml +0 -0
  392. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/async_engine_conftest.yml +0 -0
  393. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/async_sqlalchemy.yml +0 -0
  394. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/persistence.yml +0 -0
  395. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/persistence/synchronous_sqlalchemy.yml +0 -0
  396. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/layers/source_features.yml +0 -0
  397. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml +0 -0
  398. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/layers/test_features.yml +0 -0
  399. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/main_structure.yml +0 -0
  400. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/source.yml +0 -0
  401. {instant_python-0.26.1 → instant_python-0.27.1}/instant_python/templates/project_structure/standard_project/test.yml +0 -0
  402. {instant_python-0.26.1/test/cli → instant_python-0.27.1/instant_python/version}/__init__.py +0 -0
  403. {instant_python-0.26.1/test/config → instant_python-0.27.1/instant_python/version/application}/__init__.py +0 -0
  404. {instant_python-0.26.1/test/config/application → instant_python-0.27.1/instant_python/version/delivery}/__init__.py +0 -0
  405. {instant_python-0.26.1/test/config/infra → instant_python-0.27.1/instant_python/version/domain}/__init__.py +0 -0
  406. {instant_python-0.26.1/test/config/infra/question_wizard → instant_python-0.27.1/instant_python/version/infra}/__init__.py +0 -0
  407. {instant_python-0.26.1 → instant_python-0.27.1}/mise.toml +0 -0
  408. {instant_python-0.26.1 → instant_python-0.27.1}/mkdocs.yml +0 -0
  409. {instant_python-0.26.1 → instant_python-0.27.1}/mypy.ini +0 -0
  410. {instant_python-0.26.1 → instant_python-0.27.1}/opencode.json +0 -0
  411. {instant_python-0.26.1 → instant_python-0.27.1}/schemas/main-structure-schema.json +0 -0
  412. {instant_python-0.26.1/test/config/infra/question_wizard/step → instant_python-0.27.1/test}/__init__.py +0 -0
  413. {instant_python-0.26.1/test/initialize → instant_python-0.27.1/test/config}/__init__.py +0 -0
  414. {instant_python-0.26.1/test/initialize → instant_python-0.27.1/test/config}/application/__init__.py +0 -0
  415. {instant_python-0.26.1/test/initialize/delivery → instant_python-0.27.1/test/config/infra}/__init__.py +0 -0
  416. {instant_python-0.26.1/test/initialize/domain → instant_python-0.27.1/test/config/infra/question_wizard}/__init__.py +0 -0
  417. {instant_python-0.26.1 → instant_python-0.27.1}/test/config/infra/question_wizard/fake_questionary.py +0 -0
  418. {instant_python-0.26.1/test/initialize/domain/mothers → instant_python-0.27.1/test/config/infra/question_wizard/step}/__init__.py +0 -0
  419. {instant_python-0.26.1/test/initialize/infra → instant_python-0.27.1/test/initialize}/__init__.py +0 -0
  420. {instant_python-0.26.1/test/initialize/infra/env_manager → instant_python-0.27.1/test/initialize/application}/__init__.py +0 -0
  421. {instant_python-0.26.1/test/initialize/infra/env_manager/mother → instant_python-0.27.1/test/initialize/delivery}/__init__.py +0 -0
  422. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/delivery/approvaltests_config.json +0 -0
  423. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_custom_project_structure.approved.txt +0 -0
  424. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_git_section_combinations.approved.txt +0 -0
  425. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_template_section_combinations.approved.txt +0 -0
  426. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/delivery/test_init_cli.py +0 -0
  427. {instant_python-0.26.1/test/initialize/infra/formatter → instant_python-0.27.1/test/initialize/domain}/__init__.py +0 -0
  428. {instant_python-0.26.1/test/initialize/infra/renderer → instant_python-0.27.1/test/initialize/domain/mothers}/__init__.py +0 -0
  429. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/domain/mothers/node_mother.py +0 -0
  430. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/domain/mothers/project_structure_mother.py +0 -0
  431. {instant_python-0.26.1/test/initialize/infra/version_control → instant_python-0.27.1/test/initialize/infra}/__init__.py +0 -0
  432. {instant_python-0.26.1/test/initialize/infra/writer → instant_python-0.27.1/test/initialize/infra/env_manager}/__init__.py +0 -0
  433. {instant_python-0.26.1/test/metrics → instant_python-0.27.1/test/initialize/infra/formatter}/__init__.py +0 -0
  434. {instant_python-0.26.1/test/metrics/application → instant_python-0.27.1/test/initialize/infra/renderer}/__init__.py +0 -0
  435. {instant_python-0.26.1/test/metrics/domain → instant_python-0.27.1/test/initialize/infra/version_control}/__init__.py +0 -0
  436. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_file_in_file_system.approved.txt +0 -0
  437. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_python_module_in_file_system.approved.txt +0 -0
  438. {instant_python-0.26.1 → instant_python-0.27.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_standard_directory_in_file_system.approved.txt +0 -0
  439. {instant_python-0.26.1/test/metrics/infra → instant_python-0.27.1/test/initialize/infra/writer}/__init__.py +0 -0
  440. {instant_python-0.26.1/test/shared → instant_python-0.27.1/test/metrics}/__init__.py +0 -0
  441. {instant_python-0.26.1/test/shared/domain → instant_python-0.27.1/test/metrics/application}/__init__.py +0 -0
  442. {instant_python-0.26.1/test/shared/domain/mothers → instant_python-0.27.1/test/metrics/domain}/__init__.py +0 -0
  443. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/domain/config_snapshot_mother.py +0 -0
  444. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/domain/error_metrics_event_mother.py +0 -0
  445. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/domain/usage_metrics_event_mother.py +0 -0
  446. {instant_python-0.26.1/test/shared/persistence → instant_python-0.27.1/test/metrics/infra}/__init__.py +0 -0
  447. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/infra/cassettes/error_posthog_reporter.yml +0 -0
  448. {instant_python-0.26.1 → instant_python-0.27.1}/test/metrics/infra/cassettes/success_posthog_reporter.yml +0 -0
  449. {instant_python-0.26.1 → instant_python-0.27.1}/test/random_generator.py +0 -0
  450. {instant_python-0.26.1 → instant_python-0.27.1}/test/resources/base_ipy_config.yml +0 -0
  451. {instant_python-0.26.1 → instant_python-0.27.1}/test/resources/domain_error_template.py +0 -0
  452. {instant_python-0.26.1 → instant_python-0.27.1}/test/resources/hello_world.j2 +0 -0
  453. {instant_python-0.26.1 → instant_python-0.27.1}/test/resources/main_structure.yml +0 -0
  454. {instant_python-0.26.1 → instant_python-0.27.1}/test/resources/standard_project/main_structure.yml +0 -0
  455. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/mothers/config_schema_mother.py +0 -0
  456. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/mothers/dependency_config_mother.py +0 -0
  457. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/mothers/git_config_mother.py +0 -0
  458. {instant_python-0.26.1 → instant_python-0.27.1}/test/shared/domain/mothers/template_config_mother.py +0 -0
  459. {instant_python-0.26.1 → instant_python-0.27.1}/test/utils.py +0 -0
  460. {instant_python-0.26.1 → instant_python-0.27.1}/tox.ini +0 -0
@@ -22,5 +22,5 @@ runs:
22
22
  python-version: ${{ inputs.python-version }}
23
23
 
24
24
  - name: 📦 Install dependencies
25
- run: task install
25
+ run: task deps:sync-all
26
26
  shell: bash
@@ -34,30 +34,11 @@ jobs:
34
34
 
35
35
  - name: 🧐 Check linting
36
36
  id: check_lint
37
- run: task check-lint
38
-
39
- format:
40
- name: format
41
- runs-on: ubuntu-latest
42
- steps:
43
- - name: 🛡️ Harden runner
44
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
45
- with:
46
- egress-policy: audit
47
-
48
- - name: 📥 Checkout the repository
49
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
- with:
51
- ref: ${{ github.head_ref }}
52
- fetch-depth: 0
53
- persist-credentials: false
54
-
55
- - name: 🛠️ Setup environment
56
- uses: ./.github/actions/setup_environment
37
+ run: task lint
57
38
 
58
39
  - name: 🧐 Check code format
59
40
  id: check_format
60
- run: task check-format
41
+ run: task format
61
42
 
62
43
  analyze-code-quality:
63
44
  name: analyze-code-quality
@@ -160,20 +141,15 @@ jobs:
160
141
  - name: 🛠️ Setup environment
161
142
  uses: ./.github/actions/setup_environment
162
143
 
163
- - name: 📦 Install test dependencies
164
- run: uv pip install pytest pytest-cov
144
+ - name: 🏃 Run unit tests
145
+ run: task tests:unit
165
146
 
166
- - name: 🏃 Run tests
167
- run: uv run pytest --cov --cov-report=xml --cov-branch test -ra -s
147
+ - name: 🏃 Run integration tests
148
+ run: task tests:integration
149
+
150
+ - name: 🏃 Run acceptance tests
151
+ run: task tests:acceptance
168
152
 
169
- - name: 📥 Upload coverage report to Codecov
170
- uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
171
- with:
172
- files: coverage.xml
173
- flags: unittests
174
- name: codecov-coverage
175
- token: ${{ secrets.CODECOV_TOKEN }}
176
- slug: dimanu-py/instant-python
177
153
 
178
154
  tox-test:
179
155
  name: tox
@@ -200,4 +176,4 @@ jobs:
200
176
  3.13
201
177
 
202
178
  - name: 🏃 Run tox
203
- run: task tox
179
+ run: task test:tox
@@ -71,7 +71,7 @@ jobs:
71
71
  uses: ./.github/actions/setup_environment
72
72
 
73
73
  - name: 🏃 Build package
74
- run: task build
74
+ run: task dev:build
75
75
 
76
76
  - name: 🚀 Publish
77
77
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -125,6 +125,7 @@ jobs:
125
125
  - name: 🏃 Build binary
126
126
  env:
127
127
  CARGO_BUILD_TARGET: ${{ matrix.target }}
128
+ PYAPP_PASS_LOCATION: "true"
128
129
  run: uvx hatch build -t binary
129
130
 
130
131
  - name: 📦 Rename binary for release
@@ -64,7 +64,7 @@ repos:
64
64
  language: system
65
65
  pass_filenames: false
66
66
  stages:
67
- - pre-push
67
+ - pre-commit
68
68
 
69
69
  - id: format
70
70
  name: 🎨 Code Formatter
@@ -72,4 +72,4 @@ repos:
72
72
  language: system
73
73
  pass_filenames: false
74
74
  stages:
75
- - pre-push
75
+ - pre-commit
@@ -2,6 +2,100 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.27.1 (2026-09-12)
6
+
7
+ ### 🪲 Bug Fixes
8
+
9
+ - **version**: Add pyapp location when installing instant python through a binary so update command
10
+ can locate the binary and run `self update` correctly
11
+ ([`a99c1e5`](https://github.com/dimanu-py/instant-python/commit/a99c1e52e218cc71b0bd8c6f855d8c46b1da8ef8))
12
+
13
+ ### ♻️ Refactoring
14
+
15
+ - **version**: Add guidance to update instant python when current version is lower than latest
16
+ version
17
+ ([`68ebfde`](https://github.com/dimanu-py/instant-python/commit/68ebfde3e11aecc2f38919ae99ee167ac262df47))
18
+
19
+
20
+ ## v0.27.0 (2026-09-12)
21
+
22
+ ### ✨ Features
23
+
24
+ - **version**: Implement upgrade method that autodectes installation method and upgrades instant
25
+ python to latest version or pinned version
26
+ ([`00243ab`](https://github.com/dimanu-py/instant-python/commit/00243ab382b720b65b4bd67077174f1bf24dea9c))
27
+
28
+ - **cli**: Override cli show_warning logic to be able to print in console user warnings
29
+ ([`b546636`](https://github.com/dimanu-py/instant-python/commit/b5466368f5f3a5fc61533ab9575ff7feea37e9ef))
30
+
31
+ - **config**: Send a warning to the user informing that pdm is no longer supported and it has been
32
+ replaced with uv by default
33
+ ([`c3b73f2`](https://github.com/dimanu-py/instant-python/commit/c3b73f29fadbcce919eee9f1d901d85754e97e40))
34
+
35
+ - **cli**: Remove old --version flag from main app
36
+ ([`8329314`](https://github.com/dimanu-py/instant-python/commit/8329314cc180f91d13f1debaae79358992bd39a1))
37
+
38
+ - **version**: Fetch latest version from pypi
39
+ ([`194cbf0`](https://github.com/dimanu-py/instant-python/commit/194cbf0c3d3832b7bba996546a46a03eacfdc92e))
40
+
41
+ - **version**: Return unknown latest version when it's not reachable
42
+ ([`1628464`](https://github.com/dimanu-py/instant-python/commit/162846462b80494021a6ff00c908a39c3114049a))
43
+
44
+ - **version**: Return latest version
45
+ ([`56f9e5e`](https://github.com/dimanu-py/instant-python/commit/56f9e5e9b09f38bcb069fab8b7cc7e58b8c8ed1e))
46
+
47
+ - **version**: Create new version command to see current installed version of instant python and
48
+ latest version
49
+ ([`d941fe2`](https://github.com/dimanu-py/instant-python/commit/d941fe22c4f34fdcbe0ed53bd9a76b48c36152ed))
50
+
51
+ - **schema**: Remove pdm dependency manager from ipy json schema
52
+ ([`80d960a`](https://github.com/dimanu-py/instant-python/commit/80d960a14a58f2671ad8f316f0a852f4d32aa6c3))
53
+
54
+ - **config**: Set uv as the default dependency manager and add backward compatibility with pdm
55
+ ([`1b30207`](https://github.com/dimanu-py/instant-python/commit/1b302070439df79e39ab107b81f5a721425088e4))
56
+
57
+ - **config**: Remove dependency manager question from wizard
58
+ ([`cbc2a96`](https://github.com/dimanu-py/instant-python/commit/cbc2a963b6dcb62e6d5dd8b2e8ceb780fb349fbd))
59
+
60
+ - **config**: Remove pdm env manager as an option to handle python project
61
+ ([`050e00e`](https://github.com/dimanu-py/instant-python/commit/050e00e8b4a0fa688833a36f55b336a4540ae09b))
62
+
63
+ ### 🪲 Bug Fixes
64
+
65
+ - **cli**: Import correctly version app
66
+ ([`1af30fb`](https://github.com/dimanu-py/instant-python/commit/1af30fbb3c80956e87d7e1fe24f1511eec3f1e11))
67
+
68
+ ### ⚙️ Build System
69
+
70
+ - Update binary installation scripts to allow passing a specific version to pin
71
+ ([`440082a`](https://github.com/dimanu-py/instant-python/commit/440082a371bbdd54ee13a30b53da526dae17122e))
72
+
73
+ - Update installation script to verify binary is installed with new version command
74
+ ([`43d7de9`](https://github.com/dimanu-py/instant-python/commit/43d7de9fc29283d46a8efe1d11931f7df79e3e50))
75
+
76
+ ### ♻️ Refactoring
77
+
78
+ - **templates**: Update pre commit template to run format and lint commands instead of check to
79
+ apply automatically fixes in case of fails
80
+ ([`d3ca2e3`](https://github.com/dimanu-py/instant-python/commit/d3ca2e323ef558d33dde037baada64ed79d85eb8))
81
+
82
+ - **templates**: Remove pdm dependency manager from all templates and put uv by default
83
+ ([`c625c0d`](https://github.com/dimanu-py/instant-python/commit/c625c0db9367b7536e1568ba20ad7d2c1020411e))
84
+
85
+ - **version**: Simplify version command by removing unnecessary use case that acted as a middleman
86
+ ([`385900b`](https://github.com/dimanu-py/instant-python/commit/385900babadd75032c501650abbe1b6f408d391e))
87
+
88
+ - **initialize**: Move system console to shared module to reuse it for update command
89
+ ([`93b7cce`](https://github.com/dimanu-py/instant-python/commit/93b7cceab2ddbb966cb44da2ebb66c5d8e0a2e44))
90
+
91
+ - **initialize**: Inject directly UvEnvManager in init command cli instead of using env manager
92
+ factory
93
+ ([`5966466`](https://github.com/dimanu-py/instant-python/commit/5966466d084c6d0c162d3152d50751175c9517f7))
94
+
95
+ - **initialize**: Remove console field in UvEnvManager as optional
96
+ ([`f9e6b00`](https://github.com/dimanu-py/instant-python/commit/f9e6b002634b6be0d1420ecc5bb40f0fd39b4355))
97
+
98
+
5
99
  ## v0.26.1 (2026-09-08)
6
100
 
7
101
  ### 🪲 Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: instant-python
3
- Version: 0.26.1
3
+ Version: 0.27.1
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/
@@ -0,0 +1,73 @@
1
+ version: '3'
2
+
3
+ silent: true
4
+
5
+ vars:
6
+ BROWSER: '{{.BROWSER | default "open"}}'
7
+ MUTATE_PATH: '{{.MUTATE_PATH | default "instant_python"}}'
8
+
9
+ includes:
10
+ dev:
11
+ taskfile: task/dev.yml
12
+ aliases: [development]
13
+
14
+ test:
15
+ taskfile: task/test.yml
16
+ aliases: [tests]
17
+
18
+ deps:
19
+ taskfile: task/deps.yml
20
+ aliases: [dep]
21
+
22
+ docs:
23
+ taskfile: task/docs.yml
24
+ aliases: [doc]
25
+
26
+
27
+ tasks:
28
+ # ── Default ──────────────────────────────────────────────────────────────────
29
+ default:
30
+ desc: Show this help.
31
+ cmds:
32
+ - task --list-all
33
+
34
+ help:
35
+ desc: Show this help
36
+ cmds:
37
+ - task --list
38
+
39
+ # ── Code Quality ─────────────────────────────────────────────────────────────
40
+ type-check:
41
+ desc: Run mypy type checking
42
+ cmds:
43
+ - printf "\n⌛ Running type checking with mypy...\n"
44
+ - uv run mypy
45
+
46
+ lint:
47
+ desc: Apply ruff linting fix
48
+ cmds:
49
+ - printf "\n⌛ Applying linting fixes...\n"
50
+ - uvx ruff check --fix instant_python test
51
+
52
+ format:
53
+ desc: Apply ruff format fix
54
+ cmds:
55
+ - printf "\n⌛ Formatting project code...\n"
56
+ - uvx ruff format instant_python test
57
+ watch:
58
+ desc: Run all test with every change.
59
+ cmds:
60
+ - uv run ptw --runner "pytest -n auto test -ra"
61
+
62
+ # ── Security ─────────────────────────────────────────────────────────────────
63
+ audit:
64
+ desc: It audits dependencies and source code
65
+ cmds:
66
+ - printf "\n⌛ Running security audit...\n\n"
67
+ - uv run -m pip_audit --progress-spinner off --ignore-vuln GHSA-4xh5-x5gv-qwph
68
+
69
+ secrets:
70
+ desc: It checks for secrets in the source code
71
+ cmds:
72
+ - printf "\n⌛ Checking secrets...\n\n"
73
+ - uv run -m pre_commit run gitleaks --all-files
@@ -41,7 +41,7 @@ of the main options you will be asked:
41
41
  | Author | The author of the project. |
42
42
  | License | The license of the project. |
43
43
  | Python Version | The Python version to use in the project. |
44
- | Project Environment Manager | The project manager to use (choose between `uv` or `pdm`). |
44
+ | Project Environment Manager | The project manager used to handle the project environment (`uv`). |
45
45
  | Default Template | Choose a default template to use as a base for your project structure. |
46
46
  | Built in Features | Choose additional ready to use implementations to include in your project. |
47
47
  | Git Initialization | Whether to initialize a Git repository in the project folder. |
@@ -74,7 +74,7 @@ section to learn more about the features that `instant-python` provides and how
74
74
  ### Common Questions
75
75
 
76
76
  **Can I add more dependencies after creating my project?**
77
- → Yes! You can use your project manager (`uv` or `pdm`) to add dependencies after creation.
77
+ → Yes! You can use `uv` to add dependencies after creation.
78
78
 
79
79
  **How do I use a different project structure?**
80
80
  → See the [Custom Projects] guide to create your own project structure.
@@ -25,6 +25,13 @@ By default the binary is installed to `~/.local/bin`. You can override this with
25
25
  IPY_BIN_DIR="$HOME/bin" curl -LsSf https://raw.githubusercontent.com/dimanu-py/instant-python/main/scripts/install.sh | sh
26
26
  ```
27
27
 
28
+ By default the latest release is installed. To install a specific version instead, set the `IPY_VERSION` environment
29
+ variable:
30
+
31
+ ```bash
32
+ IPY_VERSION="1.2.3" curl -LsSf https://raw.githubusercontent.com/dimanu-py/instant-python/main/scripts/install.sh | sh
33
+ ```
34
+
28
35
  **Windows**
29
36
 
30
37
  ```powershell
@@ -32,7 +39,12 @@ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/dim
32
39
  ```
33
40
 
34
41
  This adds `%USERPROFILE%\.local\bin` to your user `PATH` automatically; restart your terminal afterwards so it picks up the
35
- change. You can override the install directory with the `IPY_BIN_DIR` environment variable.
42
+ change. You can override the install directory with the `IPY_BIN_DIR` environment variable, and pin a specific version
43
+ with `IPY_VERSION`:
44
+
45
+ ```powershell
46
+ powershell -ExecutionPolicy ByPass -c "$env:IPY_VERSION='1.2.3'; irm https://raw.githubusercontent.com/dimanu-py/instant-python/main/scripts/install.ps1 | iex"
47
+ ```
36
48
 
37
49
  !!! note "Supported platforms"
38
50
  The install script currently provides prebuilt binaries for macOS (Apple Silicon), Linux (x86_64 and arm64), and Windows
@@ -77,6 +89,29 @@ pip install instant-python
77
89
 
78
90
  A guide to install and configure pyenv can be found [here](https://github.com/pyenv/pyenv?tab=readme-ov-file#installation)
79
91
 
92
+ ## Updating
93
+
94
+ Whichever method you used to install `instant-python`, you can update it with:
95
+
96
+ ```bash
97
+ ipy update
98
+ ```
99
+
100
+ `ipy update` detects how `instant-python` was installed and runs the matching upgrade command for you: the install
101
+ script's self-update for binary installs, `uv tool upgrade`, `pipx upgrade`, or `pip install --upgrade`. You don't need
102
+ to remember which method you used.
103
+
104
+ To install a specific version instead of the latest one, pass `--version`:
105
+
106
+ ```bash
107
+ ipy update --version 1.2.3
108
+ ```
109
+
110
+ !!! note "Binary installations"
111
+ For binary installs, updating to the latest version uses the binary's own self-update mechanism, so no download
112
+ script is re-run. Passing `--version` instead re-runs the install script pinned to that release, the same way the
113
+ `IPY_VERSION` environment variable works above.
114
+
80
115
  ## Next steps
81
116
 
82
117
  Now that you have installed `instant-python` you can advance to the [first steps](first_steps.md)
@@ -30,7 +30,7 @@ When you successfully run an `ipy` command, we collect:
30
30
  | `operating_system` | Your operating system | `Linux`, `Darwin`, `Windows` |
31
31
  | `command` | The command you executed | `config`, `init` |
32
32
  | `python_version` | The Python version you configured | `3.12` |
33
- | `dependency_manager` | The package manager you selected | `pdm`, `uv` |
33
+ | `dependency_manager` | The package manager you selected | `uv` |
34
34
  | `template` | The project template you chose | `domain_driven_design`, `clean_architecture` |
35
35
  | `built_in_features` | List of features you enabled | `["makefile", "value_objects"]` |
36
36
 
@@ -69,7 +69,7 @@ It has the following fields and restrictions:
69
69
  | `author` | The author of the project. | | Yes |
70
70
  | `license` | The license of the project. | Must be one of: `MIT`, `Apache` or `GPL`. | Yes |
71
71
  | `python_version` | The Python version to use in the project. | Must be one of: `3.10`, `3.11`, `3.12` or `3.13`. | Yes |
72
- | `dependency_manager` | The project manager to use. | Must be either `uv` or `pdm`. | Yes |
72
+ | `dependency_manager` | The project manager to use. | Must be either `uv`. | Yes |
73
73
 
74
74
  ### Template
75
75
 
@@ -6,12 +6,9 @@ the generated project.
6
6
 
7
7
  ## Development Environment Manager
8
8
 
9
- Choose between two of the most popular environments and project manager for Python:
9
+ `instant-python` uses [_uv_](https://docs.astral.sh/uv) to handle your project environment and Python version.
10
10
 
11
- - [_uv_](https://docs.astral.sh/uv)
12
- - [_pdm_](https://pdm-project.org/en/latest/)
13
-
14
- Instant Python will automatically download the selected manager if it's not installed, and create a virtual environment. This will
11
+ `instant-python` will automatically download `uv` if it's not installed, and create a virtual environment. This will
15
12
  allow you to install your dependencies and run tasks out of the box.
16
13
 
17
14
  ## Git Repository
@@ -0,0 +1 @@
1
+ __version__ = "0.27.1"
@@ -1,44 +1,39 @@
1
- from typing import Annotated
1
+ import warnings
2
2
 
3
3
  import typer
4
4
  from rich.console import Console
5
5
  from rich.panel import Panel
6
6
 
7
- from instant_python import __version__
8
7
  from instant_python.cli.instant_python_typer import InstantPythonTyper
9
8
  from instant_python.config.delivery import cli as config
10
9
  from instant_python.initialize.delivery import cli as init
11
10
  from instant_python.metrics.delivery.metrics_middleware import MetricsMiddleware
12
11
  from instant_python.shared.application_error import ApplicationError
12
+ from instant_python.version.delivery import cli as version
13
13
 
14
14
  app = InstantPythonTyper(cls=MetricsMiddleware)
15
15
  console = Console()
16
16
 
17
17
 
18
- def version_callback(value: bool) -> None:
19
- if value:
20
- console.print(f"instant-python {__version__}")
21
- raise typer.Exit()
18
+ def _show_warning(message: Warning | str, *_args: object, **_kwargs: object) -> None:
19
+ warning_panel = Panel(str(message), title="Warning", border_style="yellow")
20
+ console.print(warning_panel)
21
+
22
+
23
+ warnings.showwarning = _show_warning
24
+ warnings.simplefilter("always", DeprecationWarning)
22
25
 
23
26
 
24
27
  @app.callback(invoke_without_command=True)
25
28
  def main(
26
29
  ctx: typer.Context,
27
- version: Annotated[
28
- bool | None,
29
- typer.Option(
30
- "--version",
31
- "-V",
32
- help="Show the application version",
33
- callback=version_callback,
34
- is_eager=True,
35
- ),
36
- ] = None,
37
30
  ) -> None:
38
31
  if ctx.invoked_subcommand is None:
39
32
  console.print(ctx.get_help())
40
33
 
41
34
 
35
+ app.add_typer(version.app)
36
+
42
37
  app.add_typer(init.app)
43
38
  app.add_typer(config.app)
44
39
 
@@ -24,7 +24,6 @@ class GeneralStep(Step):
24
24
  self._ask_author_name()
25
25
  self._ask_license()
26
26
  self._ask_python_version()
27
- self._ask_dependency_manager()
28
27
 
29
28
  return {self._KEY: self._answers}
30
29
 
@@ -3,14 +3,14 @@ from pathlib import Path
3
3
  import typer
4
4
 
5
5
  from instant_python.initialize.application.project_initializer import ProjectInitializer
6
- from instant_python.initialize.infra.env_manager.env_manager_factory import EnvManagerFactory
7
- from instant_python.initialize.infra.env_manager.system_console import SystemConsole
6
+ from instant_python.initialize.infra.env_manager.uv_env_manager import UvEnvManager
8
7
  from instant_python.initialize.infra.formatter.ruff_project_formatter import RuffProjectFormatter
9
8
  from instant_python.initialize.infra.renderer.jinja_environment import JinjaEnvironment
10
9
  from instant_python.initialize.infra.renderer.jinja_project_renderer import JinjaProjectRenderer
11
10
  from instant_python.initialize.infra.version_control.git_configurer import GitConfigurer
12
11
  from instant_python.initialize.infra.writer.file_system_project_writer import FileSystemProjectWriter
13
12
  from instant_python.shared.infra.persistence.yaml_config_repository import YamlConfigRepository
13
+ from instant_python.shared.infra.system_console import SystemConsole
14
14
 
15
15
  app = typer.Typer()
16
16
 
@@ -32,7 +32,7 @@ def create_new_project(
32
32
  project_initializer = ProjectInitializer(
33
33
  renderer=JinjaProjectRenderer(env=JinjaEnvironment(user_template_path=custom_templates_path)),
34
34
  writer=FileSystemProjectWriter(),
35
- env_manager=EnvManagerFactory.create(dependency_manager=config.dependency_manager, console=console),
35
+ env_manager=UvEnvManager(console=console),
36
36
  version_control_configurer=GitConfigurer(console=console),
37
37
  formatter=RuffProjectFormatter(console=console),
38
38
  )
@@ -1,8 +1,7 @@
1
1
  from instant_python.initialize.domain.env_manager import EnvManager
2
- from instant_python.initialize.infra.env_manager.pdm_env_manager import PdmEnvManager
3
- from instant_python.initialize.infra.env_manager.system_console import SystemConsole
4
2
  from instant_python.initialize.infra.env_manager.uv_env_manager import UvEnvManager
5
3
  from instant_python.shared.application_error import ApplicationError
4
+ from instant_python.shared.infra.system_console import SystemConsole
6
5
  from instant_python.shared.supported_managers import SupportedManagers
7
6
 
8
7
 
@@ -11,7 +10,6 @@ class EnvManagerFactory:
11
10
  def create(dependency_manager: str, console: SystemConsole) -> EnvManager:
12
11
  managers = {
13
12
  SupportedManagers.UV: UvEnvManager,
14
- SupportedManagers.PDM: PdmEnvManager,
15
13
  }
16
14
  try:
17
15
  return managers[SupportedManagers(dependency_manager)](console=console)
@@ -2,12 +2,12 @@ import sys
2
2
  from pathlib import Path
3
3
 
4
4
  from instant_python.initialize.domain.env_manager import EnvManager
5
- from instant_python.initialize.infra.env_manager.system_console import SystemConsole
6
5
  from instant_python.shared.domain.dependency_config import DependencyConfig
6
+ from instant_python.shared.infra.system_console import SystemConsole
7
7
 
8
8
 
9
9
  class UvEnvManager(EnvManager):
10
- def __init__(self, console: SystemConsole | None = None) -> None:
10
+ def __init__(self, console: SystemConsole) -> None:
11
11
  self._console = console
12
12
  self._system_os = sys.platform
13
13
  self._uv = self._set_uv_executable_based_on_os()
@@ -1,5 +1,5 @@
1
1
  from instant_python.initialize.domain.project_formatter import ProjectFormatter
2
- from instant_python.initialize.infra.env_manager.system_console import SystemConsole
2
+ from instant_python.shared.infra.system_console import SystemConsole
3
3
 
4
4
 
5
5
  class RuffProjectFormatter(ProjectFormatter):
@@ -1,6 +1,6 @@
1
1
  from instant_python.initialize.domain.version_control_configurer import VersionControlConfigurer
2
- from instant_python.initialize.infra.env_manager.system_console import SystemConsole
3
2
  from instant_python.shared.domain.git_config import GitConfig
3
+ from instant_python.shared.infra.system_console import SystemConsole
4
4
 
5
5
 
6
6
  class GitConfigurer(VersionControlConfigurer):
@@ -1,5 +1,6 @@
1
1
  import re
2
- from dataclasses import asdict, dataclass
2
+ import warnings
3
+ from dataclasses import asdict, dataclass, field
3
4
 
4
5
  from instant_python.shared.application_error import ApplicationError
5
6
  from instant_python.shared.supported_licenses import SupportedLicenses
@@ -16,7 +17,7 @@ class GeneralConfig:
16
17
  author: str
17
18
  license: str
18
19
  python_version: str
19
- dependency_manager: str
20
+ dependency_manager: str = field(default=SupportedManagers.UV.value)
20
21
 
21
22
  def __post_init__(self) -> None:
22
23
  self.version = str(self.version)
@@ -44,6 +45,14 @@ class GeneralConfig:
44
45
 
45
46
  def _ensure_dependency_manager_is_supported(self) -> None:
46
47
  supported_dependency_managers = SupportedManagers.get_supported_managers()
48
+ if self.dependency_manager == "pdm":
49
+ warnings.warn(
50
+ "`pdm` is no longer supported as a dependency manager and has been replaced with `uv`. "
51
+ "Update your ipy.yml file to remove this warning.",
52
+ DeprecationWarning,
53
+ stacklevel=2,
54
+ )
55
+ self.dependency_manager = SupportedManagers.UV.value
47
56
  if self.dependency_manager not in supported_dependency_managers:
48
57
  raise InvalidDependencyManagerValue(self.dependency_manager, supported_dependency_managers)
49
58
 
@@ -3,7 +3,6 @@ from enum import Enum
3
3
 
4
4
  class SupportedManagers(str, Enum):
5
5
  UV = "uv"
6
- PDM = "pdm"
7
6
 
8
7
  @classmethod
9
8
  def get_supported_managers(cls) -> list[str]:
@@ -58,14 +58,14 @@ repos:
58
58
  hooks:
59
59
  - id: lint
60
60
  name: 🧹 Code Linter
61
- entry: make check-lint
61
+ entry: make lint
62
62
  language: system
63
63
  stages:
64
64
  - pre-push
65
65
 
66
66
  - id: format
67
67
  name: 🎨 Code Formatter
68
- entry: make check-format
68
+ entry: make format
69
69
  language: system
70
70
  stages:
71
71
  - pre-push
@@ -20,16 +20,8 @@ runs:
20
20
 
21
21
  - name: 📦 Install dependencies
22
22
  run: |
23
- {% if general.dependency_manager == "uv" %}
24
23
  uv sync --all-groups
25
- {% elif general.dependency_manager == "pdm" %}
26
- pdm install
27
- {% endif %}
28
24
  {% if "precommit_hook" in template.built_in_features %}
29
- {% if general.dependency_manager == "uv" %}
30
25
  uv run -m pre_commit install
31
- {% elif general.dependency_manager == "pdm" %}
32
- pdm run pre-commit install
33
- {% endif %}
34
26
  {% endif %}
35
27
  shell: bash
@@ -31,30 +31,10 @@ jobs:
31
31
  uses: ./.github/actions/python_setup
32
32
 
33
33
  - name: 🧐 Check linting
34
- run: make check-lint
35
-
36
- format:
37
- name: format
38
- runs-on: ubuntu-latest
39
- steps:
40
- - name: 🛡️ Harden runner
41
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
42
- with:
43
- egress-policy: audit
44
-
45
- - name: 📥 Checkout the repository
46
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
47
- with:
48
- ref: {% raw %}${{ github.head_ref }}{% endraw %}
49
-
50
- fetch-depth: 0
51
- persist-credentials: false
52
-
53
- - name: 🛠️ Setup environment
54
- uses: ./.github/actions/python_setup
34
+ run: make lint
55
35
 
56
36
  - name: 🧐 Check code format
57
- run: make check-format
37
+ run: make format
58
38
 
59
39
  typing:
60
40
  runs-on: ubuntu-latest