FastAPI-fastkit 1.1.5__tar.gz → 1.2.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 (284) hide show
  1. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/PKG-INFO +38 -8
  2. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/README.md +34 -5
  3. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/pyproject.toml +21 -10
  4. fastapi_fastkit-1.2.1/src/fastapi_fastkit/__init__.py +1 -0
  5. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/inspector.py +170 -12
  6. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/interactive/__init__.py +51 -0
  7. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/interactive/config_builder.py +186 -0
  8. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/interactive/prompts.py +528 -0
  9. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/interactive/selectors.py +241 -0
  10. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/interactive/validators.py +163 -0
  11. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/main.py +112 -0
  12. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +68 -7
  13. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/project_builder/__init__.py +17 -0
  14. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/project_builder/config_generator.py +594 -0
  15. fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +210 -0
  16. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/cli.py +235 -20
  17. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/core/settings.py +74 -0
  18. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +2 -1
  19. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +1 -0
  20. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +2 -1
  21. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +1 -0
  22. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +2 -1
  23. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +1 -0
  24. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +2 -1
  25. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +1 -0
  26. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +2 -1
  27. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +1 -0
  28. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +2 -1
  29. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +1 -0
  30. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +2 -1
  31. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +1 -0
  32. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +2 -1
  33. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +1 -0
  34. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/test_inspector.py +508 -115
  35. fastapi_fastkit-1.2.1/tests/test_backends/test_interactive_config_builder.py +435 -0
  36. fastapi_fastkit-1.2.1/tests/test_backends/test_interactive_prompts.py +188 -0
  37. fastapi_fastkit-1.2.1/tests/test_backends/test_interactive_selectors.py +231 -0
  38. fastapi_fastkit-1.2.1/tests/test_backends/test_interactive_validators.py +579 -0
  39. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/test_main.py +60 -12
  40. fastapi_fastkit-1.2.1/tests/test_backends/test_package_managers.py +1358 -0
  41. fastapi_fastkit-1.2.1/tests/test_backends/test_project_builder_config_generator.py +411 -0
  42. fastapi_fastkit-1.2.1/tests/test_backends/test_project_builder_dependency_collector.py +503 -0
  43. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_cli_operations/test_cli.py +19 -2
  44. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_cli_operations/test_cli_extended.py +107 -8
  45. fastapi_fastkit-1.2.1/tests/test_cli_operations/test_cli_interactive_integration.py +282 -0
  46. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_core.py +10 -0
  47. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_utils.py +2 -4
  48. fastapi_fastkit-1.1.5/src/fastapi_fastkit/__init__.py +0 -1
  49. fastapi_fastkit-1.1.5/tests/test_backends/test_package_managers.py +0 -469
  50. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/LICENSE +0 -0
  51. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/__main__.py +0 -0
  52. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/__init__.py +0 -0
  53. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
  54. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/base.py +0 -0
  55. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/factory.py +0 -0
  56. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +0 -0
  57. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +0 -0
  58. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +0 -0
  59. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/backend/transducer.py +0 -0
  60. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/core/__init__.py +0 -0
  61. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/core/exceptions.py +0 -0
  62. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
  63. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/README.md +0 -0
  64. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
  65. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
  66. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
  67. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +0 -0
  68. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
  69. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
  70. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
  71. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
  72. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
  73. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.py-tpl +0 -0
  74. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
  75. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
  76. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +0 -0
  77. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
  78. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +0 -0
  79. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
  80. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/config.py-tpl +0 -0
  81. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
  82. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/items.py-tpl +0 -0
  83. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +0 -0
  84. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
  85. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
  86. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
  87. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/items.py-tpl +0 -0
  88. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
  89. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -0
  90. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
  91. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
  92. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
  93. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
  94. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/format.sh-tpl +0 -0
  95. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
  96. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
  97. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/test.sh-tpl +0 -0
  98. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
  99. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.py-tpl +0 -0
  100. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/__init__.py-tpl +0 -0
  101. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/__init__.py-tpl +0 -0
  102. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +0 -0
  103. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/__init__.py-tpl +0 -0
  104. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +0 -0
  105. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/__init__.py-tpl +0 -0
  106. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +0 -0
  107. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/__init__.py-tpl +0 -0
  108. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/items.py-tpl +0 -0
  109. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/__init__.py-tpl +0 -0
  110. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
  111. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +0 -0
  112. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +0 -0
  113. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/__init__.py-tpl +0 -0
  114. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
  115. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/__init__.py-tpl +0 -0
  116. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +0 -0
  117. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/items.py-tpl +0 -0
  118. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/__init__.py-tpl +0 -0
  119. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
  120. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/__init__.py-tpl +0 -0
  121. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -0
  122. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
  123. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
  124. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
  125. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
  126. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/format.sh-tpl +0 -0
  127. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
  128. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
  129. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/test.sh-tpl +0 -0
  130. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
  131. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.py-tpl +0 -0
  132. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/__init__.py-tpl +0 -0
  133. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/__init__.py-tpl +0 -0
  134. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +0 -0
  135. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/__init__.py-tpl +0 -0
  136. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +0 -0
  137. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/__init__.py-tpl +0 -0
  138. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/config.py-tpl +0 -0
  139. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/__init__.py-tpl +0 -0
  140. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +0 -0
  141. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/main.py-tpl +0 -0
  142. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/__init__.py-tpl +0 -0
  143. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
  144. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/__init__.py-tpl +0 -0
  145. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/items.py-tpl +0 -0
  146. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/__init__.py-tpl +0 -0
  147. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +0 -0
  148. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/test_items.py-tpl +0 -0
  149. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
  150. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
  151. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +0 -0
  152. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +0 -0
  153. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/format.sh-tpl +0 -0
  154. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
  155. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
  156. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/test.sh-tpl +0 -0
  157. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
  158. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.py-tpl +0 -0
  159. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/__init__.py-tpl +0 -0
  160. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/__init__.py-tpl +0 -0
  161. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +0 -0
  162. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/__init__.py-tpl +0 -0
  163. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +0 -0
  164. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/__init__.py-tpl +0 -0
  165. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/config.py-tpl +0 -0
  166. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/__init__.py-tpl +0 -0
  167. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +0 -0
  168. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/main.py-tpl +0 -0
  169. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/__init__.py-tpl +0 -0
  170. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
  171. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/__init__.py-tpl +0 -0
  172. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +0 -0
  173. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/__init__.py-tpl +0 -0
  174. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +0 -0
  175. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/test_items.py-tpl +0 -0
  176. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
  177. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
  178. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +0 -0
  179. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
  180. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl +0 -0
  181. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/__init__.py-tpl +0 -0
  182. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/__init__.py-tpl +0 -0
  183. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +0 -0
  184. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +0 -0
  185. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/__init__.py-tpl +0 -0
  186. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -0
  187. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -0
  188. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +0 -0
  189. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +0 -0
  190. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
  191. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
  192. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
  193. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
  194. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +0 -0
  195. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.py-tpl +0 -0
  196. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
  197. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
  198. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +0 -0
  199. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
  200. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +0 -0
  201. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +0 -0
  202. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
  203. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +0 -0
  204. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
  205. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +0 -0
  206. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +0 -0
  207. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp/__init__.py-tpl +0 -0
  208. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp/router.py-tpl +0 -0
  209. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
  210. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +0 -0
  211. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
  212. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +0 -0
  213. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -0
  214. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -0
  215. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -0
  216. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +0 -0
  217. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
  218. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +0 -0
  219. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
  220. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
  221. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
  222. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +0 -0
  223. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
  224. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
  225. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
  226. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
  227. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
  228. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.py-tpl +0 -0
  229. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/__init__.py-tpl +0 -0
  230. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +0 -0
  231. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +0 -0
  232. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +0 -0
  233. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +0 -0
  234. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
  235. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +0 -0
  236. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
  237. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/__init__.py-tpl +0 -0
  238. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +0 -0
  239. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/__init__.py-tpl +0 -0
  240. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +0 -0
  241. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +0 -0
  242. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/__init__.py-tpl +0 -0
  243. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +0 -0
  244. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +0 -0
  245. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
  246. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +0 -0
  247. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
  248. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
  249. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
  250. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
  251. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
  252. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
  253. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +0 -0
  254. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/test_items.py-tpl +0 -0
  255. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
  256. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
  257. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl +0 -0
  258. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +0 -0
  259. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -0
  260. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
  261. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
  262. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
  263. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +0 -0
  264. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
  265. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
  266. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
  267. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
  268. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/py.typed +0 -0
  269. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/utils/__init__.py +0 -0
  270. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/utils/logging.py +0 -0
  271. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/src/fastapi_fastkit/utils/main.py +0 -0
  272. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/__init__.py +0 -0
  273. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/conftest.py +0 -0
  274. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/__init__.py +0 -0
  275. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/test_configure.py +0 -0
  276. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/test_console_sizing.py +0 -0
  277. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_backends/test_transducer.py +0 -0
  278. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_cli_operations/__init__.py +0 -0
  279. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_rich/__init__.py +0 -0
  280. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_rich/test_rich.py +0 -0
  281. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_templates/__init__.py +0 -0
  282. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_templates/template_configs.yaml +0 -0
  283. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_templates/test_all_templates.py +0 -0
  284. {fastapi_fastkit-1.1.5 → fastapi_fastkit-1.2.1}/tests/test_templates/test_config_based_templates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FastAPI-fastkit
3
- Version: 1.1.5
3
+ Version: 1.2.1
4
4
  Summary: Fast, easy-to-use starter kit for new users of Python and FastAPI
5
5
  Author-Email: bnbong <bbbong9@gmail.com>
6
6
  License: MIT
@@ -12,12 +12,13 @@ Requires-Python: >=3.12
12
12
  Requires-Dist: click>=8.1.7
13
13
  Requires-Dist: rich>=13.9.2
14
14
  Provides-Extra: dev
15
- Requires-Dist: pytest>=8.3.3; extra == "dev"
15
+ Requires-Dist: pytest>=9.0.3; extra == "dev"
16
16
  Requires-Dist: pytest-cov>=6.2.1; extra == "dev"
17
- Requires-Dist: black>=24.10.0; extra == "dev"
17
+ Requires-Dist: black>=26.3.1; extra == "dev"
18
18
  Requires-Dist: pre-commit>=4.0.1; extra == "dev"
19
19
  Requires-Dist: mypy>=1.12.0; extra == "dev"
20
20
  Requires-Dist: isort>=5.13.2; extra == "dev"
21
+ Requires-Dist: pygments>=2.20.0; extra == "dev"
21
22
  Description-Content-Type: text/markdown
22
23
 
23
24
  <p align="center">
@@ -33,26 +34,33 @@ Description-Content-Type: text/markdown
33
34
  <a href="https://github.com/bnbong/FastAPI-fastkit/releases" target="_blank">
34
35
  <img src="https://img.shields.io/github/v/release/bnbong/FastAPI-fastkit" alt="GitHub Release">
35
36
  </a>
37
+ <a href="https://codecov.io/gh/bnbong/FastAPI-fastkit" >
38
+ <img src="https://codecov.io/gh/bnbong/FastAPI-fastkit/graph/badge.svg?token=WS0B6WWD8K"/>
39
+ </a>
40
+ <a href="https://pepy.tech/project/fastapi-fastkit">
41
+ <img src="https://static.pepy.tech/personalized-badge/fastapi-fastkit?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
42
+ </a>
36
43
  </p>
37
44
 
38
45
  ---
39
46
 
40
47
  This project was created to speed up the configuration of the development environment needed to develop Python-based web apps for new users of Python and [FastAPI](https://github.com/fastapi/fastapi).
41
48
 
42
- This project was inspired by the `SpringBoot initializer` & Python Django's `django-admin` cli operation.
49
+ This project was inspired by the `SpringBoot initializer` & Python Django's `django-admin` CLI operation.
43
50
 
44
51
  ## Key Features
45
52
 
46
53
  - **⚡ Immediate FastAPI project creation** : Super-fast FastAPI workspace & project creation via CLI, inspired by `django-admin` feature of [Python Django](https://github.com/django/django)
47
- - **🎨 Prettier CLI outputs** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
48
- - **📋 Standards-based FastAPI project templates** : All FastAPI-fastkit templates are based on Python standards and FastAPI's common use patterns
54
+ - **✨ Interactive project builder**: Guided step-by-step feature selection for databases, authentication, caching, monitoring, and more with auto-generated code
55
+ - **🎨 Prettier CLI output** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
56
+ - **📋 Standards-based FastAPI project templates** : Templates follow Python standards and common FastAPI patterns.
49
57
  - **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
50
58
  - **🚀 Multiple project templates** : Choose from various pre-configured templates for different use cases (async CRUD, Docker, PostgreSQL, etc.)
51
59
  - **📦 Multiple package manager support** : Choose your preferred Python package manager (pip, uv, pdm, poetry) for dependency management
52
60
 
53
61
  ## Installation
54
62
 
55
- Install `FastAPI-fastkit` at your Python environment.
63
+ Install `FastAPI-fastkit` in your Python environment.
56
64
 
57
65
  ```console
58
66
  $ pip install FastAPI-fastkit
@@ -76,6 +84,28 @@ fastkit init [OPTIONS]
76
84
  - `--package-manager` [pip|uv|pdm|poetry]
77
85
  - Stack selection: `minimal` | `standard` | `full` (interactive)
78
86
 
87
+ ### Create a project with interactive mode
88
+ ```console
89
+ fastkit init --interactive
90
+ ```
91
+ - What it does: Guided step-by-step project setup with intelligent feature selection
92
+ - Features:
93
+ - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
94
+ - **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
95
+ - **Background tasks**: Celery, Dramatiq
96
+ - **Caching**: Redis, fastapi-cache2
97
+ - **Monitoring**: Loguru, OpenTelemetry, Prometheus
98
+ - **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
99
+ - **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
100
+ - **Deployment**: Docker, docker-compose with auto-generated configs
101
+ - **Package manager**: pip, uv, pdm, poetry
102
+ - **Custom packages**: Add your own dependencies
103
+ - Auto-generates:
104
+ - `main.py` with selected features integrated
105
+ - Database and authentication configuration files
106
+ - Docker deployment files (Dockerfile, docker-compose.yml)
107
+ - Test configuration (pytest with coverage)
108
+
79
109
  ### Create a project from a template
80
110
  ```console
81
111
  fastkit startdemo [TEMPLATE] [OPTIONS]
@@ -166,7 +196,7 @@ For detailed contribution guidelines, development setup, and project standards,
166
196
 
167
197
  FastAPI-fastkit aims to provide a fast and easy-to-use starter kit for new users of Python and FastAPI.
168
198
 
169
- This idea was initiated with the aim of helping FastAPI newcomers learn from the beginning, which aligns with the production significance of the FastAPI-cli package added with the [FastAPI 0.111.0 version update](https://github.com/fastapi/fastapi/releases/tag/0.111.0).
199
+ This idea was initiated with the aim of helping FastAPI newcomers learn from the beginning, which aligns with the production significance of the FastAPI CLI package added with the [FastAPI 0.111.0 version update](https://github.com/fastapi/fastapi/releases/tag/0.111.0).
170
200
 
171
201
  As someone who has been using and loving FastAPI for a long time, I wanted to develop a project that could help fulfill [the wonderful motivation](https://github.com/fastapi/fastapi/pull/11522#issuecomment-2264639417) that FastAPI developer [tiangolo](https://github.com/tiangolo) has expressed.
172
202
 
@@ -11,26 +11,33 @@
11
11
  <a href="https://github.com/bnbong/FastAPI-fastkit/releases" target="_blank">
12
12
  <img src="https://img.shields.io/github/v/release/bnbong/FastAPI-fastkit" alt="GitHub Release">
13
13
  </a>
14
+ <a href="https://codecov.io/gh/bnbong/FastAPI-fastkit" >
15
+ <img src="https://codecov.io/gh/bnbong/FastAPI-fastkit/graph/badge.svg?token=WS0B6WWD8K"/>
16
+ </a>
17
+ <a href="https://pepy.tech/project/fastapi-fastkit">
18
+ <img src="https://static.pepy.tech/personalized-badge/fastapi-fastkit?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
19
+ </a>
14
20
  </p>
15
21
 
16
22
  ---
17
23
 
18
24
  This project was created to speed up the configuration of the development environment needed to develop Python-based web apps for new users of Python and [FastAPI](https://github.com/fastapi/fastapi).
19
25
 
20
- This project was inspired by the `SpringBoot initializer` & Python Django's `django-admin` cli operation.
26
+ This project was inspired by the `SpringBoot initializer` & Python Django's `django-admin` CLI operation.
21
27
 
22
28
  ## Key Features
23
29
 
24
30
  - **⚡ Immediate FastAPI project creation** : Super-fast FastAPI workspace & project creation via CLI, inspired by `django-admin` feature of [Python Django](https://github.com/django/django)
25
- - **🎨 Prettier CLI outputs** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
26
- - **📋 Standards-based FastAPI project templates** : All FastAPI-fastkit templates are based on Python standards and FastAPI's common use patterns
31
+ - **✨ Interactive project builder**: Guided step-by-step feature selection for databases, authentication, caching, monitoring, and more with auto-generated code
32
+ - **🎨 Prettier CLI output** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
33
+ - **📋 Standards-based FastAPI project templates** : Templates follow Python standards and common FastAPI patterns.
27
34
  - **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
28
35
  - **🚀 Multiple project templates** : Choose from various pre-configured templates for different use cases (async CRUD, Docker, PostgreSQL, etc.)
29
36
  - **📦 Multiple package manager support** : Choose your preferred Python package manager (pip, uv, pdm, poetry) for dependency management
30
37
 
31
38
  ## Installation
32
39
 
33
- Install `FastAPI-fastkit` at your Python environment.
40
+ Install `FastAPI-fastkit` in your Python environment.
34
41
 
35
42
  ```console
36
43
  $ pip install FastAPI-fastkit
@@ -54,6 +61,28 @@ fastkit init [OPTIONS]
54
61
  - `--package-manager` [pip|uv|pdm|poetry]
55
62
  - Stack selection: `minimal` | `standard` | `full` (interactive)
56
63
 
64
+ ### Create a project with interactive mode
65
+ ```console
66
+ fastkit init --interactive
67
+ ```
68
+ - What it does: Guided step-by-step project setup with intelligent feature selection
69
+ - Features:
70
+ - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
71
+ - **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
72
+ - **Background tasks**: Celery, Dramatiq
73
+ - **Caching**: Redis, fastapi-cache2
74
+ - **Monitoring**: Loguru, OpenTelemetry, Prometheus
75
+ - **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
76
+ - **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
77
+ - **Deployment**: Docker, docker-compose with auto-generated configs
78
+ - **Package manager**: pip, uv, pdm, poetry
79
+ - **Custom packages**: Add your own dependencies
80
+ - Auto-generates:
81
+ - `main.py` with selected features integrated
82
+ - Database and authentication configuration files
83
+ - Docker deployment files (Dockerfile, docker-compose.yml)
84
+ - Test configuration (pytest with coverage)
85
+
57
86
  ### Create a project from a template
58
87
  ```console
59
88
  fastkit startdemo [TEMPLATE] [OPTIONS]
@@ -144,7 +173,7 @@ For detailed contribution guidelines, development setup, and project standards,
144
173
 
145
174
  FastAPI-fastkit aims to provide a fast and easy-to-use starter kit for new users of Python and FastAPI.
146
175
 
147
- This idea was initiated with the aim of helping FastAPI newcomers learn from the beginning, which aligns with the production significance of the FastAPI-cli package added with the [FastAPI 0.111.0 version update](https://github.com/fastapi/fastapi/releases/tag/0.111.0).
176
+ This idea was initiated with the aim of helping FastAPI newcomers learn from the beginning, which aligns with the production significance of the FastAPI CLI package added with the [FastAPI 0.111.0 version update](https://github.com/fastapi/fastapi/releases/tag/0.111.0).
148
177
 
149
178
  As someone who has been using and loving FastAPI for a long time, I wanted to develop a project that could help fulfill [the wonderful motivation](https://github.com/fastapi/fastapi/pull/11522#issuecomment-2264639417) that FastAPI developer [tiangolo](https://github.com/tiangolo) has expressed.
150
179
 
@@ -11,7 +11,7 @@ dependencies = [
11
11
  ]
12
12
  requires-python = ">=3.12"
13
13
  readme = "README.md"
14
- version = "1.1.5"
14
+ version = "1.2.1"
15
15
 
16
16
  [project.license]
17
17
  text = "MIT"
@@ -24,12 +24,13 @@ Changelog = "https://bnbong.github.io/FastAPI-fastkit/changelog/"
24
24
 
25
25
  [project.optional-dependencies]
26
26
  dev = [
27
- "pytest>=8.3.3",
27
+ "pytest>=9.0.3",
28
28
  "pytest-cov>=6.2.1",
29
- "black>=24.10.0",
29
+ "black>=26.3.1",
30
30
  "pre-commit>=4.0.1",
31
31
  "mypy>=1.12.0",
32
32
  "isort>=5.13.2",
33
+ "pygments>=2.20.0",
33
34
  ]
34
35
 
35
36
  [project.scripts]
@@ -41,13 +42,6 @@ requires = [
41
42
  ]
42
43
  build-backend = "pdm.backend"
43
44
 
44
- [tool.pdm]
45
- distribution = true
46
-
47
- [tool.pdm.version]
48
- source = "file"
49
- path = "src/fastapi_fastkit/__init__.py"
50
-
51
45
  [tool.pytest.ini_options]
52
46
  testpaths = [
53
47
  "tests",
@@ -76,6 +70,13 @@ module = "fastapi_fastkit.core"
76
70
  ignore_missing_imports = true
77
71
  check_untyped_defs = false
78
72
 
73
+ [tool.pdm]
74
+ distribution = true
75
+
76
+ [tool.pdm.version]
77
+ source = "file"
78
+ path = "src/fastapi_fastkit/__init__.py"
79
+
79
80
  [tool.coverage.run]
80
81
  source = [
81
82
  "src/fastapi_fastkit",
@@ -117,4 +118,14 @@ docs = [
117
118
  "mkdocs>=1.6.1",
118
119
  "mkdocs-material>=9.6.15",
119
120
  "mdx-include>=1.4.2",
121
+ "mkdocs-static-i18n>=1.3.0",
122
+ "pyyaml>=6.0.3",
123
+ "types-PyYAML>=6.0.12.20250915",
124
+ "pygments>=2.20.0",
125
+ "requests>=2.33.0",
126
+ "pymdown-extensions>=10.17.2",
127
+ ]
128
+ translation = [
129
+ "openai>=2.8.1",
130
+ "anthropic>=0.74.0",
120
131
  ]
@@ -0,0 +1 @@
1
+ __version__ = 'v1.2.1'
@@ -26,13 +26,12 @@ import sys
26
26
  from pathlib import Path
27
27
  from typing import Any, Callable, Dict, List, Optional, Tuple
28
28
 
29
- import yaml # type: ignore
29
+ import yaml
30
30
 
31
31
  from fastapi_fastkit.backend.main import (
32
32
  create_venv,
33
33
  find_template_core_modules,
34
34
  inject_project_metadata,
35
- install_dependencies,
36
35
  install_dependencies_with_manager,
37
36
  )
38
37
  from fastapi_fastkit.backend.transducer import copy_and_convert_template
@@ -50,17 +49,38 @@ class TemplateInspector:
50
49
  Uses context manager protocol for proper resource cleanup.
51
50
  """
52
51
 
53
- def __init__(self, template_path: str):
52
+ def __init__(self, template_path: str, temp_base_dir: Optional[str] = None):
54
53
  self.template_path = Path(template_path)
55
54
  self.errors: List[str] = []
56
55
  self.warnings: List[str] = []
57
- self.temp_dir = os.path.join(os.path.dirname(__file__), "temp")
56
+ template_name = Path(template_path).name
57
+
58
+ # use temp_base_dir or fall back to backend directory (temp)
59
+ if temp_base_dir:
60
+ self.temp_dir = os.path.join(temp_base_dir, f"temp_{template_name}")
61
+ else:
62
+ self.temp_dir = os.path.join(
63
+ os.path.dirname(__file__), f"temp_{template_name}"
64
+ )
65
+
58
66
  self._cleanup_needed = False
59
67
  self.template_config: Optional[Dict[str, Any]] = None
60
68
 
61
69
  def __enter__(self) -> "TemplateInspector":
62
70
  """Enter context manager - create temp directory and copy template."""
63
71
  try:
72
+ # Clean up any existing temp directory for this template
73
+ if os.path.exists(self.temp_dir):
74
+ debug_log(
75
+ f"Cleaning up existing temp directory: {self.temp_dir}", "info"
76
+ )
77
+ try:
78
+ shutil.rmtree(self.temp_dir)
79
+ except OSError as e:
80
+ debug_log(
81
+ f"Failed to cleanup existing temp directory: {e}", "warning"
82
+ )
83
+
64
84
  os.makedirs(self.temp_dir, exist_ok=True)
65
85
  copy_and_convert_template(str(self.template_path), self.temp_dir)
66
86
 
@@ -81,18 +101,142 @@ class TemplateInspector:
81
101
  self._cleanup()
82
102
 
83
103
  def _cleanup(self) -> None:
84
- """Cleanup temp directory if it exists and cleanup is needed."""
104
+ """Cleanup temp directory."""
85
105
  if self._cleanup_needed and os.path.exists(self.temp_dir):
106
+ temp_dir_path = self.temp_dir
86
107
  try:
87
- shutil.rmtree(self.temp_dir)
88
- debug_log(f"Cleaned up temp directory {self.temp_dir}", "debug")
89
- except OSError as e:
108
+ self._cleanup_docker_services()
109
+
110
+ import time
111
+
112
+ time.sleep(3)
113
+
114
+ self._force_cleanup_directory(temp_dir_path)
115
+
116
+ except Exception as e:
90
117
  debug_log(
91
- f"Failed to cleanup temp directory {self.temp_dir}: {e}", "warning"
118
+ f"Warning: Unexpected error during cleanup of {temp_dir_path}: {e}",
119
+ "warning",
92
120
  )
121
+ try:
122
+ self._force_cleanup_directory(temp_dir_path)
123
+ except Exception:
124
+ pass
93
125
  finally:
94
126
  self._cleanup_needed = False
95
127
 
128
+ def _force_cleanup_directory(self, directory_path: str) -> None:
129
+ """Force cleanup of directory with multiple strategies."""
130
+ import stat
131
+ import time
132
+
133
+ max_retries = 5
134
+ for attempt in range(max_retries):
135
+ try:
136
+ shutil.rmtree(directory_path)
137
+ debug_log(
138
+ f"Successfully cleaned up temp directory: {directory_path}", "info"
139
+ )
140
+ return
141
+ except (OSError, PermissionError) as e:
142
+ if attempt < max_retries - 1:
143
+ debug_log(
144
+ f"Attempt {attempt + 1} failed to cleanup {directory_path}: {e}",
145
+ "warning",
146
+ )
147
+
148
+ try:
149
+ self._fix_directory_permissions(directory_path)
150
+ shutil.rmtree(directory_path)
151
+ debug_log(
152
+ f"Successfully cleaned up temp directory after permission fix: {directory_path}",
153
+ "info",
154
+ )
155
+ return
156
+ except Exception:
157
+ pass
158
+
159
+ try:
160
+ self._remove_directory_contents(directory_path)
161
+ os.rmdir(directory_path)
162
+ debug_log(
163
+ f"Successfully cleaned up temp directory by removing contents: {directory_path}",
164
+ "info",
165
+ )
166
+ return
167
+ except Exception:
168
+ pass
169
+
170
+ time.sleep(2)
171
+ else:
172
+ debug_log(
173
+ f"Failed to cleanup temp directory after {max_retries} attempts: {directory_path}",
174
+ "warning",
175
+ )
176
+ try:
177
+ import subprocess
178
+
179
+ if os.name == "nt": # Windows
180
+ subprocess.run(
181
+ ["rmdir", "/s", "/q", directory_path],
182
+ check=False,
183
+ shell=True,
184
+ )
185
+ else: # Unix-like
186
+ subprocess.run(["rm", "-rf", directory_path], check=False)
187
+ debug_log(
188
+ f"Force cleanup completed for: {directory_path}", "info"
189
+ )
190
+ except Exception:
191
+ debug_log(
192
+ f"All cleanup attempts failed for: {directory_path}",
193
+ "warning",
194
+ )
195
+
196
+ def _fix_directory_permissions(self, directory_path: str) -> None:
197
+ """Fix directory permissions to allow removal."""
198
+ import os
199
+ import stat
200
+
201
+ def fix_permissions(path: str) -> None:
202
+ try:
203
+ os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
204
+ except Exception:
205
+ pass
206
+
207
+ # Fix permissions for directory and all contents
208
+ fix_permissions(directory_path)
209
+ for root, dirs, files in os.walk(directory_path):
210
+ fix_permissions(root)
211
+ for d in dirs:
212
+ fix_permissions(os.path.join(root, d))
213
+ for f in files:
214
+ fix_permissions(os.path.join(root, f))
215
+
216
+ def _remove_directory_contents(self, directory_path: str) -> None:
217
+ """Remove directory contents file by file."""
218
+ import os
219
+ import stat
220
+
221
+ for root, dirs, files in os.walk(directory_path, topdown=False):
222
+ # Remove files first
223
+ for file in files:
224
+ file_path = os.path.join(root, file)
225
+ try:
226
+ os.chmod(file_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
227
+ os.remove(file_path)
228
+ except Exception:
229
+ pass
230
+
231
+ # Remove directories
232
+ for dir_name in dirs:
233
+ dir_path = os.path.join(root, dir_name)
234
+ try:
235
+ os.chmod(dir_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
236
+ os.rmdir(dir_path)
237
+ except Exception:
238
+ pass
239
+
96
240
  def _load_template_config(self) -> Optional[Dict[str, Any]]:
97
241
  """Load template configuration from template-config.yml if available."""
98
242
  config_file = os.path.join(self.temp_dir, "template-config.yml")
@@ -1036,12 +1180,23 @@ class TemplateInspector:
1036
1180
  try:
1037
1181
  debug_log("Cleaning up Docker services", "info")
1038
1182
  subprocess.run(
1039
- ["docker-compose", "down", "-v"],
1183
+ ["docker-compose", "down", "-v", "--remove-orphans"],
1040
1184
  cwd=self.temp_dir,
1041
1185
  capture_output=True,
1042
1186
  text=True,
1043
1187
  timeout=60,
1044
1188
  )
1189
+
1190
+ try:
1191
+ subprocess.run(
1192
+ ["docker", "system", "prune", "-f"],
1193
+ capture_output=True,
1194
+ text=True,
1195
+ timeout=30,
1196
+ )
1197
+ except Exception:
1198
+ pass
1199
+
1045
1200
  except Exception as e:
1046
1201
  debug_log(f"Failed to cleanup Docker services: {e}", "warning")
1047
1202
 
@@ -1086,11 +1241,14 @@ class TemplateInspector:
1086
1241
  }
1087
1242
 
1088
1243
 
1089
- def inspect_fastapi_template(template_path: str) -> Dict[str, Any]:
1244
+ def inspect_fastapi_template(
1245
+ template_path: str, temp_base_dir: Optional[str] = None
1246
+ ) -> Dict[str, Any]:
1090
1247
  """
1091
1248
  Convenience function to inspect a FastAPI template.
1092
1249
 
1093
1250
  :param template_path: Path to the template to inspect
1251
+ :param temp_base_dir: Base directory for temporary files (defaults to backend directory)
1094
1252
  :return: Inspection report dictionary
1095
1253
  """
1096
1254
  template_name = Path(template_path).name
@@ -1098,7 +1256,7 @@ def inspect_fastapi_template(template_path: str) -> Dict[str, Any]:
1098
1256
  f"Starting template inspection for {template_name} at {template_path}", "info"
1099
1257
  )
1100
1258
 
1101
- with TemplateInspector(template_path) as inspector:
1259
+ with TemplateInspector(template_path, temp_base_dir) as inspector:
1102
1260
  is_valid = inspector.inspect_template()
1103
1261
  report = inspector.get_report()
1104
1262
 
@@ -0,0 +1,51 @@
1
+ # --------------------------------------------------------------------------
2
+ # Interactive module for FastAPI-fastkit
3
+ #
4
+ # Provides interactive prompts and configuration building for dynamic
5
+ # project creation.
6
+ #
7
+ # @author bnbong bbbong9@gmail.com
8
+ # --------------------------------------------------------------------------
9
+ from .config_builder import InteractiveConfigBuilder
10
+ from .prompts import (
11
+ prompt_additional_features,
12
+ prompt_authentication_selection,
13
+ prompt_basic_info,
14
+ prompt_caching_selection,
15
+ prompt_custom_packages,
16
+ prompt_database_selection,
17
+ prompt_deployment_options,
18
+ prompt_monitoring_selection,
19
+ prompt_package_manager_selection,
20
+ prompt_template_selection,
21
+ prompt_testing_selection,
22
+ prompt_utilities_selection,
23
+ )
24
+ from .selectors import confirm_selections, multi_select_prompt, render_selection_table
25
+ from .validators import (
26
+ sanitize_custom_packages,
27
+ validate_feature_compatibility,
28
+ validate_package_name,
29
+ )
30
+
31
+ __all__ = [
32
+ "InteractiveConfigBuilder",
33
+ "prompt_basic_info",
34
+ "prompt_template_selection",
35
+ "prompt_database_selection",
36
+ "prompt_authentication_selection",
37
+ "prompt_additional_features",
38
+ "prompt_testing_selection",
39
+ "prompt_deployment_options",
40
+ "prompt_custom_packages",
41
+ "prompt_caching_selection",
42
+ "prompt_monitoring_selection",
43
+ "prompt_utilities_selection",
44
+ "prompt_package_manager_selection",
45
+ "render_selection_table",
46
+ "multi_select_prompt",
47
+ "confirm_selections",
48
+ "validate_package_name",
49
+ "validate_feature_compatibility",
50
+ "sanitize_custom_packages",
51
+ ]