FastAPI-fastkit 1.4.0__tar.gz → 1.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/PKG-INFO +31 -11
  2. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/README.md +29 -10
  3. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/pyproject.toml +7 -3
  4. fastapi_fastkit-1.5.0/src/fastapi_fastkit/__init__.py +1 -0
  5. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/context.py +4 -0
  6. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/core.py +5 -1
  7. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/docker.py +150 -15
  8. fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/inspection/lint.py +103 -0
  9. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/smoke.py +67 -13
  10. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/strategies.py +32 -1
  11. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/main.py +35 -40
  12. fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/route_generators.py +163 -0
  13. fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/route_wiring.py +117 -0
  14. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/transducer.py +101 -2
  15. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/cli.py +13 -2
  16. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/settings.py +3 -3
  17. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl +1 -1
  18. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl +1 -1
  19. {fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel → fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/src/app/api/router.py-tpl +1 -1
  20. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +1 -1
  21. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +16 -4
  22. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +1 -1
  23. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +1 -1
  24. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +2 -3
  25. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +5 -9
  26. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +2 -3
  27. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +9 -9
  28. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +2 -2
  29. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +1 -1
  30. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +2 -0
  31. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/__init__.py-tpl +10 -0
  32. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/models.py-tpl +11 -0
  33. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/repository.py-tpl +50 -0
  34. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/router.py-tpl +66 -0
  35. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/schemas.py-tpl +16 -0
  36. fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/service.py-tpl +47 -0
  37. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/jwt.py.j2 +6 -6
  38. fastapi_fastkit-1.5.0/tests/test_backends/test_inspection_docker.py +579 -0
  39. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspector.py +149 -1
  40. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspector_checks.py +168 -10
  41. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_config_builder.py +2 -2
  42. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_validators.py +1 -1
  43. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_builder_config_generator.py +2 -2
  44. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_builder_dependency_collector.py +4 -4
  45. fastapi_fastkit-1.5.0/tests/test_backends/test_route_generators.py +633 -0
  46. fastapi_fastkit-1.5.0/tests/test_backends/test_route_wiring.py +50 -0
  47. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_transducer.py +169 -0
  48. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_config_options.py +38 -11
  49. fastapi_fastkit-1.4.0/src/fastapi_fastkit/__init__.py +0 -1
  50. fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/lint.py +0 -89
  51. fastapi_fastkit-1.4.0/tests/test_backends/test_inspection_docker.py +0 -268
  52. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/LICENSE +0 -0
  53. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/__main__.py +0 -0
  54. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/__init__.py +0 -0
  55. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/__init__.py +0 -0
  56. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/checks.py +0 -0
  57. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/consistency.py +0 -0
  58. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/freshness.py +0 -0
  59. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/fsutils.py +0 -0
  60. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/report.py +0 -0
  61. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspector.py +0 -0
  62. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/__init__.py +0 -0
  63. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/config_builder.py +0 -0
  64. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/prompts.py +0 -0
  65. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/selectors.py +0 -0
  66. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
  67. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
  68. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/base.py +0 -0
  69. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/factory.py +0 -0
  70. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +0 -0
  71. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +0 -0
  72. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +0 -0
  73. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +0 -0
  74. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/__init__.py +0 -0
  75. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/config_generator.py +0 -0
  76. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/config_schema.py +0 -0
  77. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -0
  78. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/preset_layout.py +0 -0
  79. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/scaffolder.py +0 -0
  80. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/__init__.py +0 -0
  81. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/exceptions.py +0 -0
  82. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
  83. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/README.md +0 -0
  84. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
  85. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
  86. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
  87. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +0 -0
  88. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +0 -0
  89. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -0
  90. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
  91. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
  92. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
  93. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
  94. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
  95. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
  96. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
  97. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +0 -0
  98. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
  99. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +0 -0
  100. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
  101. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/config.py-tpl +0 -0
  102. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
  103. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/items.py-tpl +0 -0
  104. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +0 -0
  105. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
  106. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
  107. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
  108. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/items.py-tpl +0 -0
  109. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
  110. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -0
  111. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
  112. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.env-tpl +0 -0
  113. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.gitignore-tpl +0 -0
  114. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/Dockerfile-tpl +0 -0
  115. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl +0 -0
  116. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/alembic.ini-tpl +0 -0
  117. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/format.sh-tpl +0 -0
  118. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/lint.sh-tpl +0 -0
  119. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/run-server.sh-tpl +0 -0
  120. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/test.sh-tpl +0 -0
  121. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/__init__.py-tpl +0 -0
  122. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/__init__.py-tpl +0 -0
  123. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/README-tpl +0 -0
  124. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/env.py-tpl +0 -0
  125. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/script.py.mako-tpl +0 -0
  126. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/versions/0001_initial_auth_schema.py-tpl +0 -0
  127. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/__init__.py-tpl +0 -0
  128. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/deps.py-tpl +0 -0
  129. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/health.py-tpl +0 -0
  130. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/router.py-tpl +0 -0
  131. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/__init__.py-tpl +0 -0
  132. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/config.py-tpl +0 -0
  133. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/security.py-tpl +0 -0
  134. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/__init__.py-tpl +0 -0
  135. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/session.py-tpl +0 -0
  136. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/__init__.py-tpl +0 -0
  137. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/__init__.py-tpl +0 -0
  138. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/models.py-tpl +0 -0
  139. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/repository.py-tpl +0 -0
  140. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/router.py-tpl +0 -0
  141. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/schemas.py-tpl +0 -0
  142. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/service.py-tpl +0 -0
  143. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/__init__.py-tpl +0 -0
  144. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/models.py-tpl +0 -0
  145. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/repository.py-tpl +0 -0
  146. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/router.py-tpl +0 -0
  147. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/schemas.py-tpl +0 -0
  148. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/service.py-tpl +0 -0
  149. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/main.py-tpl +0 -0
  150. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/template-config.yml-tpl +0 -0
  151. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/__init__.py-tpl +0 -0
  152. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/conftest.py-tpl +0 -0
  153. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_auth.py-tpl +0 -0
  154. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_health.py-tpl +0 -0
  155. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_users.py-tpl +0 -0
  156. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
  157. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
  158. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
  159. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +0 -0
  160. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -0
  161. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/format.sh-tpl +0 -0
  162. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
  163. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
  164. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/test.sh-tpl +0 -0
  165. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
  166. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/__init__.py-tpl +0 -0
  167. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/__init__.py-tpl +0 -0
  168. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +0 -0
  169. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/__init__.py-tpl +0 -0
  170. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +0 -0
  171. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/__init__.py-tpl +0 -0
  172. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +0 -0
  173. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/__init__.py-tpl +0 -0
  174. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/items.py-tpl +0 -0
  175. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/__init__.py-tpl +0 -0
  176. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
  177. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +0 -0
  178. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +0 -0
  179. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/__init__.py-tpl +0 -0
  180. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
  181. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/__init__.py-tpl +0 -0
  182. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +0 -0
  183. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/items.py-tpl +0 -0
  184. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/__init__.py-tpl +0 -0
  185. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
  186. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/__init__.py-tpl +0 -0
  187. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -0
  188. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
  189. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
  190. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
  191. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
  192. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +0 -0
  193. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -0
  194. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/format.sh-tpl +0 -0
  195. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
  196. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
  197. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/test.sh-tpl +0 -0
  198. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
  199. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/__init__.py-tpl +0 -0
  200. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/__init__.py-tpl +0 -0
  201. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +0 -0
  202. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/__init__.py-tpl +0 -0
  203. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +0 -0
  204. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/__init__.py-tpl +0 -0
  205. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/config.py-tpl +0 -0
  206. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/__init__.py-tpl +0 -0
  207. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +0 -0
  208. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/main.py-tpl +0 -0
  209. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/__init__.py-tpl +0 -0
  210. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
  211. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/__init__.py-tpl +0 -0
  212. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/items.py-tpl +0 -0
  213. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/__init__.py-tpl +0 -0
  214. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +0 -0
  215. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/test_items.py-tpl +0 -0
  216. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
  217. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
  218. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +0 -0
  219. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +0 -0
  220. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +0 -0
  221. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -0
  222. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/format.sh-tpl +0 -0
  223. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
  224. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
  225. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/test.sh-tpl +0 -0
  226. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
  227. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/__init__.py-tpl +0 -0
  228. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/__init__.py-tpl +0 -0
  229. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +0 -0
  230. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/__init__.py-tpl +0 -0
  231. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +0 -0
  232. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/__init__.py-tpl +0 -0
  233. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/config.py-tpl +0 -0
  234. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/__init__.py-tpl +0 -0
  235. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +0 -0
  236. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/main.py-tpl +0 -0
  237. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/__init__.py-tpl +0 -0
  238. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
  239. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/__init__.py-tpl +0 -0
  240. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +0 -0
  241. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/__init__.py-tpl +0 -0
  242. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +0 -0
  243. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/test_items.py-tpl +0 -0
  244. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +0 -0
  245. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +0 -0
  246. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +0 -0
  247. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +0 -0
  248. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +0 -0
  249. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/format.sh-tpl +0 -0
  250. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +0 -0
  251. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +0 -0
  252. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +0 -0
  253. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/__init__.py-tpl +0 -0
  254. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/__init__.py-tpl +0 -0
  255. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/__init__.py-tpl +0 -0
  256. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +0 -0
  257. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/__init__.py-tpl +0 -0
  258. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +0 -0
  259. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/__init__.py-tpl +0 -0
  260. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +0 -0
  261. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/__init__.py-tpl +0 -0
  262. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +0 -0
  263. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +0 -0
  264. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +0 -0
  265. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +0 -0
  266. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +0 -0
  267. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +0 -0
  268. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl +0 -0
  269. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +0 -0
  270. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +0 -0
  271. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
  272. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
  273. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +0 -0
  274. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +0 -0
  275. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -0
  276. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
  277. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/__init__.py-tpl +0 -0
  278. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/__init__.py-tpl +0 -0
  279. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +0 -0
  280. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +0 -0
  281. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/__init__.py-tpl +0 -0
  282. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -0
  283. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -0
  284. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.env-tpl +0 -0
  285. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.gitignore-tpl +0 -0
  286. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/Dockerfile-tpl +0 -0
  287. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl +0 -0
  288. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl +0 -0
  289. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl +0 -0
  290. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/chat.sh-tpl +0 -0
  291. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/format.sh-tpl +0 -0
  292. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/lint.sh-tpl +0 -0
  293. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/run-server.sh-tpl +0 -0
  294. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/test.sh-tpl +0 -0
  295. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/__init__.py-tpl +0 -0
  296. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/__init__.py-tpl +0 -0
  297. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/__init__.py-tpl +0 -0
  298. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/chat.py-tpl +0 -0
  299. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/deps.py-tpl +0 -0
  300. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/health.py-tpl +0 -0
  301. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/router.py-tpl +0 -0
  302. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/__init__.py-tpl +0 -0
  303. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/config.py-tpl +0 -0
  304. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/__init__.py-tpl +0 -0
  305. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/agent.py-tpl +0 -0
  306. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/client.py-tpl +0 -0
  307. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/tools.py-tpl +0 -0
  308. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/main.py-tpl +0 -0
  309. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/__init__.py-tpl +0 -0
  310. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/base.py-tpl +0 -0
  311. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/in_memory.py-tpl +0 -0
  312. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/__init__.py-tpl +0 -0
  313. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/chat.py-tpl +0 -0
  314. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/template-config.yml-tpl +0 -0
  315. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/__init__.py-tpl +0 -0
  316. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/conftest.py-tpl +0 -0
  317. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_chat.py-tpl +0 -0
  318. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_health.py-tpl +0 -0
  319. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_memory.py-tpl +0 -0
  320. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_tools.py-tpl +0 -0
  321. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
  322. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
  323. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
  324. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
  325. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
  326. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
  327. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +0 -0
  328. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
  329. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +0 -0
  330. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
  331. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
  332. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +0 -0
  333. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server/__init__.py-tpl +0 -0
  334. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server/router.py-tpl +0 -0
  335. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
  336. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +0 -0
  337. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
  338. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +0 -0
  339. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -0
  340. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -0
  341. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -0
  342. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
  343. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +0 -0
  344. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
  345. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
  346. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
  347. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +0 -0
  348. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -0
  349. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +0 -0
  350. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
  351. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
  352. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
  353. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
  354. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
  355. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/__init__.py-tpl +0 -0
  356. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +0 -0
  357. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +0 -0
  358. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +0 -0
  359. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +0 -0
  360. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
  361. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +0 -0
  362. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
  363. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/__init__.py-tpl +0 -0
  364. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +0 -0
  365. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/__init__.py-tpl +0 -0
  366. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +0 -0
  367. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +0 -0
  368. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/__init__.py-tpl +0 -0
  369. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +0 -0
  370. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +0 -0
  371. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
  372. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +0 -0
  373. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
  374. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
  375. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
  376. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
  377. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
  378. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
  379. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +0 -0
  380. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/test_items.py-tpl +0 -0
  381. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.env-tpl +0 -0
  382. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.gitignore-tpl +0 -0
  383. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
  384. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +0 -0
  385. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -0
  386. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
  387. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +0 -0
  388. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/__init__.py-tpl +0 -0
  389. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -0
  390. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
  391. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.env-tpl +0 -0
  392. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.gitignore-tpl +0 -0
  393. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/Dockerfile-tpl +0 -0
  394. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl +0 -0
  395. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/alembic.ini-tpl +0 -0
  396. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl +0 -0
  397. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl +0 -0
  398. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/format.sh-tpl +0 -0
  399. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/lint.sh-tpl +0 -0
  400. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/migrate.sh-tpl +0 -0
  401. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/run-server.sh-tpl +0 -0
  402. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/test.sh-tpl +0 -0
  403. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/__init__.py-tpl +0 -0
  404. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/__init__.py-tpl +0 -0
  405. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/README-tpl +0 -0
  406. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/env.py-tpl +0 -0
  407. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/script.py.mako-tpl +0 -0
  408. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/versions/0001_create_items_table.py-tpl +0 -0
  409. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/__init__.py-tpl +0 -0
  410. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/health.py-tpl +0 -0
  411. {fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel}/src/app/api/router.py-tpl +0 -0
  412. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/__init__.py-tpl +0 -0
  413. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/config.py-tpl +0 -0
  414. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/__init__.py-tpl +0 -0
  415. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/base.py-tpl +0 -0
  416. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/pagination.py-tpl +0 -0
  417. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/__init__.py-tpl +0 -0
  418. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/base.py-tpl +0 -0
  419. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/session.py-tpl +0 -0
  420. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/__init__.py-tpl +0 -0
  421. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/__init__.py-tpl +0 -0
  422. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/crud.py-tpl +0 -0
  423. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/models.py-tpl +0 -0
  424. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/router.py-tpl +0 -0
  425. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/main.py-tpl +0 -0
  426. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/template-config.yml-tpl +0 -0
  427. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/__init__.py-tpl +0 -0
  428. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/conftest.py-tpl +0 -0
  429. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_crud_base.py-tpl +0 -0
  430. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_health.py-tpl +0 -0
  431. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_items.py-tpl +0 -0
  432. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
  433. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
  434. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +0 -0
  435. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
  436. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
  437. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
  438. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
  439. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/README.md +0 -0
  440. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/fastapi_users.py.j2 +0 -0
  441. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/oauth2.py.j2 +0 -0
  442. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/session.py.j2 +0 -0
  443. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/mongodb.py.j2 +0 -0
  444. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/redis.py.j2 +0 -0
  445. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/sqlalchemy.py.j2 +0 -0
  446. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/docker/docker_compose.j2 +0 -0
  447. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/docker/dockerfile.j2 +0 -0
  448. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/cache.py.j2 +0 -0
  449. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/pagination.py.j2 +0 -0
  450. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/tasks_celery.py.j2 +0 -0
  451. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/tasks_dramatiq.py.j2 +0 -0
  452. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/websocket.py.j2 +0 -0
  453. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/header.j2 +0 -0
  454. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/logging/structured.py.j2 +0 -0
  455. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/async_tasks.j2 +0 -0
  456. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/caching.j2 +0 -0
  457. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/fastapi_users.j2 +0 -0
  458. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/jwt.j2 +0 -0
  459. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/loguru.j2 +0 -0
  460. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/mongodb.j2 +0 -0
  461. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/oauth2.j2 +0 -0
  462. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/opentelemetry.j2 +0 -0
  463. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/pagination.j2 +0 -0
  464. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/prometheus.j2 +0 -0
  465. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/rate_limiting.j2 +0 -0
  466. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/session_auth.j2 +0 -0
  467. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/sqlalchemy.j2 +0 -0
  468. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/structured_logging.j2 +0 -0
  469. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/websocket.j2 +0 -0
  470. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/caching.j2 +0 -0
  471. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/mongodb.j2 +0 -0
  472. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/prometheus.j2 +0 -0
  473. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/sqlalchemy.j2 +0 -0
  474. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/async_tasks.j2 +0 -0
  475. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/caching.j2 +0 -0
  476. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/cors.j2 +0 -0
  477. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/oauth2.j2 +0 -0
  478. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/opentelemetry.j2 +0 -0
  479. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/pagination.j2 +0 -0
  480. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/rate_limiting.j2 +0 -0
  481. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/session_auth.j2 +0 -0
  482. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/structured_logging.j2 +0 -0
  483. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/websocket.j2 +0 -0
  484. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main.py.j2 +0 -0
  485. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/alembic_ini.j2 +0 -0
  486. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/env.py.j2 +0 -0
  487. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/initial_revision.py.j2 +0 -0
  488. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/migrate_sh.j2 +0 -0
  489. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/script.py.mako.j2 +0 -0
  490. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tasks/celery_worker.py.j2 +0 -0
  491. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tasks/dramatiq_worker.py.j2 +0 -0
  492. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/factories.py.j2 +0 -0
  493. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/pytest_ini.j2 +0 -0
  494. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/test_factories.py.j2 +0 -0
  495. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/test_main.py.j2 +0 -0
  496. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/devcontainer.j2 +0 -0
  497. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/github_actions.j2 +0 -0
  498. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/makefile.j2 +0 -0
  499. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/pre_commit.j2 +0 -0
  500. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/ruff_toml.j2 +0 -0
  501. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/py.typed +0 -0
  502. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/__init__.py +0 -0
  503. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/config_file.py +0 -0
  504. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/logging.py +0 -0
  505. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/main.py +0 -0
  506. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/__init__.py +0 -0
  507. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/conftest.py +0 -0
  508. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/__init__.py +0 -0
  509. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_configure.py +0 -0
  510. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_console_sizing.py +0 -0
  511. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspection_fsutils.py +0 -0
  512. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_prompts.py +0 -0
  513. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_selectors.py +0 -0
  514. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_main.py +0 -0
  515. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_package_managers.py +0 -0
  516. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_preset_layout.py +0 -0
  517. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_metadata.py +0 -0
  518. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_safety_regressions.py +0 -0
  519. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_scaffolder.py +0 -0
  520. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/__init__.py +0 -0
  521. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli.py +0 -0
  522. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_error_paths.py +0 -0
  523. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_extended.py +0 -0
  524. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_interactive_integration.py +0 -0
  525. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_config_file.py +0 -0
  526. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_core.py +0 -0
  527. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_rich/__init__.py +0 -0
  528. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_rich/test_rich.py +0 -0
  529. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/__init__.py +0 -0
  530. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/template_configs.yaml +0 -0
  531. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_all_templates.py +0 -0
  532. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_config_based_templates.py +0 -0
  533. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_domain_starter_e2e.py +0 -0
  534. {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FastAPI-fastkit
3
- Version: 1.4.0
3
+ Version: 1.5.0
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
@@ -20,6 +20,7 @@ Requires-Dist: pre-commit>=4.0.1; extra == "dev"
20
20
  Requires-Dist: mypy>=1.12.0; extra == "dev"
21
21
  Requires-Dist: isort>=5.13.2; extra == "dev"
22
22
  Requires-Dist: pygments>=2.20.0; extra == "dev"
23
+ Requires-Dist: virtualenv>=21.7.13; extra == "dev"
23
24
  Requires-Dist: types-pyyaml>=6.0.12.20260408; extra == "dev"
24
25
  Description-Content-Type: text/markdown
25
26
 
@@ -82,7 +83,9 @@ $ pip install FastAPI-fastkit
82
83
  ```console
83
84
  fastkit init [OPTIONS]
84
85
  ```
85
- - What it does: Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
86
+ > [!TIP]
87
+ > Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
88
+
86
89
  - Key options:
87
90
  - `--project-name`, `--author`, `--author-email`, `--description`
88
91
  - `--package-manager` [pip|uv|pdm|poetry]
@@ -98,7 +101,9 @@ fastkit init [OPTIONS]
98
101
  ```console
99
102
  fastkit init --interactive
100
103
  ```
101
- - What it does: Guided step-by-step project setup with intelligent feature selection
104
+ > [!TIP]
105
+ > Guided step-by-step project setup with intelligent feature selection
106
+
102
107
  - Features:
103
108
  - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
104
109
  - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
@@ -114,7 +119,7 @@ fastkit init --interactive
114
119
  - **Deployment**: Docker, docker-compose with auto-generated configs
115
120
  - **Package manager**: pip, uv, pdm, poetry
116
121
  - **Custom packages**: Add your own dependencies
117
- - Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
122
+ - Auto-generates (varies by preset - see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
118
123
  - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
119
124
  - Database and authentication configuration files at preset-specific paths
120
125
  - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
@@ -127,7 +132,9 @@ fastkit init --interactive
127
132
  ```console
128
133
  fastkit startdemo [TEMPLATE] [OPTIONS]
129
134
  ```
130
- - What it does: Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
135
+ > [!TIP]
136
+ > Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
137
+
131
138
  - Key options:
132
139
  - `--project-name`, `--author`, `--author-email`, `--description`
133
140
  - `--package-manager` [pip|uv|pdm|poetry]
@@ -135,12 +142,6 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
135
142
  - Refuses to run if the target project directory already exists (`--dry-run` excepted)
136
143
  - Tip: List available templates with `fastkit list-templates`
137
144
 
138
- New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
139
- `fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
140
- `fastapi-llm-agent` (streaming Claude agent with a tool loop).
141
- `fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
142
- work, but are no longer recommended starting points.
143
-
144
145
  ### Add a new route
145
146
  ```console
146
147
  fastkit addroute <project_name> <route_name>
@@ -160,6 +161,25 @@ fastkit runserver [OPTIONS]
160
161
  fastkit list-templates
161
162
  ```
162
163
 
164
+ Available templates:
165
+
166
+ | Template | Description | Notes |
167
+ |---|---|---|
168
+ | [`fastapi-default`](src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl) | Simple FastAPI project with a classic layered layout | Good first choice |
169
+ | [`fastapi-empty`](src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl) | Minimal FastAPI template | Base for `minimal` preset |
170
+ | [`fastapi-single-module`](src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl) | Single-file FastAPI app | Base for `single-module` preset |
171
+ | [`fastapi-domain-starter`](src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl) | Domain-oriented, pyproject-first starter for medium-sized APIs | Base for `domain-starter` preset |
172
+ | [`fastapi-auth-jwt`](src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl) | JWT authentication with refresh-token rotation, argon2 hashing and scopes | New in v1.4.0 |
173
+ | [`fastapi-sqlmodel`](src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl) | Async SQLModel + Alembic migrations + generic CRUD with pagination | New in v1.4.0 |
174
+ | [`fastapi-llm-agent`](src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl) | Streaming Claude chat agent (SSE) with a tool-call loop | New in v1.4.0 |
175
+ | [`fastapi-mcp`](src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl) | FastAPI app exposed as an MCP server | |
176
+ | [`fastapi-psql-orm`](src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl) | Item management API with PostgreSQL, SQLModel, Alembic and docker-compose | Requires Docker |
177
+ | [`fastapi-custom-response`](src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl) | Item management API with a custom response envelope, error handling and pagination | |
178
+ | [`fastapi-async-crud`](src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl) | Async item management API | **Deprecated** — use `fastapi-sqlmodel` |
179
+ | [`fastapi-dockerized`](src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl) | Dockerized item management API | **Deprecated** — use `fastapi-default` with the Docker option in `init --interactive` |
180
+
181
+ Deprecated templates still work but are no longer recommended starting points. See [Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/) for a decision guide.
182
+
163
183
  ### Delete a project
164
184
  ```console
165
185
  fastkit deleteproject <project_name>
@@ -57,7 +57,9 @@ $ pip install FastAPI-fastkit
57
57
  ```console
58
58
  fastkit init [OPTIONS]
59
59
  ```
60
- - What it does: Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
60
+ > [!TIP]
61
+ > Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
62
+
61
63
  - Key options:
62
64
  - `--project-name`, `--author`, `--author-email`, `--description`
63
65
  - `--package-manager` [pip|uv|pdm|poetry]
@@ -73,7 +75,9 @@ fastkit init [OPTIONS]
73
75
  ```console
74
76
  fastkit init --interactive
75
77
  ```
76
- - What it does: Guided step-by-step project setup with intelligent feature selection
78
+ > [!TIP]
79
+ > Guided step-by-step project setup with intelligent feature selection
80
+
77
81
  - Features:
78
82
  - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
79
83
  - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
@@ -89,7 +93,7 @@ fastkit init --interactive
89
93
  - **Deployment**: Docker, docker-compose with auto-generated configs
90
94
  - **Package manager**: pip, uv, pdm, poetry
91
95
  - **Custom packages**: Add your own dependencies
92
- - Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
96
+ - Auto-generates (varies by preset - see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
93
97
  - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
94
98
  - Database and authentication configuration files at preset-specific paths
95
99
  - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
@@ -102,7 +106,9 @@ fastkit init --interactive
102
106
  ```console
103
107
  fastkit startdemo [TEMPLATE] [OPTIONS]
104
108
  ```
105
- - What it does: Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
109
+ > [!TIP]
110
+ > Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
111
+
106
112
  - Key options:
107
113
  - `--project-name`, `--author`, `--author-email`, `--description`
108
114
  - `--package-manager` [pip|uv|pdm|poetry]
@@ -110,12 +116,6 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
110
116
  - Refuses to run if the target project directory already exists (`--dry-run` excepted)
111
117
  - Tip: List available templates with `fastkit list-templates`
112
118
 
113
- New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
114
- `fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
115
- `fastapi-llm-agent` (streaming Claude agent with a tool loop).
116
- `fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
117
- work, but are no longer recommended starting points.
118
-
119
119
  ### Add a new route
120
120
  ```console
121
121
  fastkit addroute <project_name> <route_name>
@@ -135,6 +135,25 @@ fastkit runserver [OPTIONS]
135
135
  fastkit list-templates
136
136
  ```
137
137
 
138
+ Available templates:
139
+
140
+ | Template | Description | Notes |
141
+ |---|---|---|
142
+ | [`fastapi-default`](src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl) | Simple FastAPI project with a classic layered layout | Good first choice |
143
+ | [`fastapi-empty`](src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl) | Minimal FastAPI template | Base for `minimal` preset |
144
+ | [`fastapi-single-module`](src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl) | Single-file FastAPI app | Base for `single-module` preset |
145
+ | [`fastapi-domain-starter`](src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl) | Domain-oriented, pyproject-first starter for medium-sized APIs | Base for `domain-starter` preset |
146
+ | [`fastapi-auth-jwt`](src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl) | JWT authentication with refresh-token rotation, argon2 hashing and scopes | New in v1.4.0 |
147
+ | [`fastapi-sqlmodel`](src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl) | Async SQLModel + Alembic migrations + generic CRUD with pagination | New in v1.4.0 |
148
+ | [`fastapi-llm-agent`](src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl) | Streaming Claude chat agent (SSE) with a tool-call loop | New in v1.4.0 |
149
+ | [`fastapi-mcp`](src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl) | FastAPI app exposed as an MCP server | |
150
+ | [`fastapi-psql-orm`](src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl) | Item management API with PostgreSQL, SQLModel, Alembic and docker-compose | Requires Docker |
151
+ | [`fastapi-custom-response`](src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl) | Item management API with a custom response envelope, error handling and pagination | |
152
+ | [`fastapi-async-crud`](src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl) | Async item management API | **Deprecated** — use `fastapi-sqlmodel` |
153
+ | [`fastapi-dockerized`](src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl) | Dockerized item management API | **Deprecated** — use `fastapi-default` with the Docker option in `init --interactive` |
154
+
155
+ Deprecated templates still work but are no longer recommended starting points. See [Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/) for a decision guide.
156
+
138
157
  ### Delete a project
139
158
  ```console
140
159
  fastkit deleteproject <project_name>
@@ -12,7 +12,7 @@ dependencies = [
12
12
  ]
13
13
  requires-python = ">=3.12"
14
14
  readme = "README.md"
15
- version = "1.4.0"
15
+ version = "1.5.0"
16
16
 
17
17
  [project.license]
18
18
  text = "MIT"
@@ -32,6 +32,7 @@ dev = [
32
32
  "mypy>=1.12.0",
33
33
  "isort>=5.13.2",
34
34
  "pygments>=2.20.0",
35
+ "virtualenv>=21.7.13",
35
36
  "types-pyyaml>=6.0.12.20260408",
36
37
  ]
37
38
 
@@ -128,16 +129,19 @@ directory = "htmlcov"
128
129
  [dependency-groups]
129
130
  docs = [
130
131
  "mkdocs>=1.6.1",
131
- "mkdocs-material>=9.6.15",
132
+ "mkdocs-material>=9.7.7",
132
133
  "mdx-include>=1.4.2",
133
134
  "mkdocs-static-i18n>=1.3.0",
134
135
  "pyyaml>=6.0.3",
135
136
  "types-PyYAML>=6.0.12.20250915",
136
137
  "pygments>=2.20.0",
137
138
  "requests>=2.33.0",
138
- "pymdown-extensions>=10.17.2",
139
+ "idna>=3.15",
140
+ "urllib3>=2.8.0",
141
+ "pymdown-extensions>=11.0.1",
139
142
  ]
140
143
  translation = [
141
144
  "openai>=2.8.1",
142
145
  "anthropic>=0.74.0",
146
+ "anyio>=4.14.2",
143
147
  ]
@@ -0,0 +1 @@
1
+ __version__ = 'v1.5.0'
@@ -43,6 +43,10 @@ class InspectionContext:
43
43
  warnings: List[str] = field(default_factory=list)
44
44
  #: Populated by a test strategy so later checks can reuse the environment.
45
45
  venv_path: Optional[str] = None
46
+ #: Populated when a test strategy already exercised the app's HTTP surface
47
+ #: (the Docker strategy probes the running container), so the Smoke Test
48
+ #: step reuses that verdict instead of booting a second server.
49
+ smoke_result: Optional[bool] = None
46
50
 
47
51
  def add_error(self, message: str) -> None:
48
52
  """Record a fatal finding."""
@@ -252,8 +252,12 @@ class TemplateInspector:
252
252
  ("Configuration Consistency", self._check_configuration_consistency),
253
253
  ("FastAPI Implementation", self._check_fastapi_implementation),
254
254
  ("Placeholder Substitution", self._check_no_placeholder_residue),
255
- ("Template Tests", self._test_template),
255
+ # Compile Check is a pure static check: it runs before the (much
256
+ # heavier) Template Tests so a syntax error is reported without
257
+ # waiting for an environment, and so it never observes files a
258
+ # containerised test run left behind.
256
259
  ("Compile Check", self._check_compileall),
260
+ ("Template Tests", self._test_template),
257
261
  ("Type Check", self._check_mypy),
258
262
  ("Smoke Test", self._check_smoke_test),
259
263
  ("Dependency Freshness", self._check_dependency_freshness),
@@ -7,6 +7,7 @@
7
7
  # @author bnbong
8
8
  # --------------------------------------------------------------------------
9
9
  import json
10
+ import os
10
11
  import subprocess
11
12
  import time
12
13
  from typing import Any, Dict, List, Optional, Sequence
@@ -14,6 +15,12 @@ from typing import Any, Dict, List, Optional, Sequence
14
15
  from fastapi_fastkit.utils.logging import debug_log
15
16
 
16
17
  COMPOSE_COMMAND = "docker-compose"
18
+ #: Fallback for hosts that only ship the ``docker compose`` CLI plugin.
19
+ COMPOSE_PLUGIN_COMMAND = ["docker", "compose"]
20
+ #: Resolved compose invocation, switched by :meth:`DockerCompose.is_available`.
21
+ _compose_prefix: List[str] = [COMPOSE_COMMAND]
22
+ #: Throwaway image used to give bind-mounted files back to the host user.
23
+ RECLAIM_IMAGE = "alpine:3.20"
17
24
  SHORT_TIMEOUT = 10
18
25
  STATUS_TIMEOUT = 30
19
26
  CLEANUP_TIMEOUT = 60
@@ -43,27 +50,49 @@ class DockerCompose:
43
50
  debug_log(f"Command {' '.join(args)} failed: {e}", "warning")
44
51
  return None
45
52
 
53
+ @staticmethod
54
+ def compose_command() -> List[str]:
55
+ """Return the compose invocation resolved by :meth:`is_available`."""
56
+ return list(_compose_prefix)
57
+
46
58
  def _compose(
47
59
  self, args: Sequence[str], timeout: int
48
60
  ) -> Optional[subprocess.CompletedProcess[str]]:
49
61
  """Run a docker-compose subcommand against the configured compose file."""
50
62
  return self._run(
51
- [COMPOSE_COMMAND, "-f", self.compose_file, *args], timeout=timeout
63
+ [*self.compose_command(), "-f", self.compose_file, *args], timeout=timeout
52
64
  )
53
65
 
66
+ @staticmethod
67
+ def _probe(command: Sequence[str]) -> bool:
68
+ """Return whether ``command`` exits successfully."""
69
+ try:
70
+ result = subprocess.run(
71
+ list(command), capture_output=True, text=True, timeout=SHORT_TIMEOUT
72
+ )
73
+ except (subprocess.TimeoutExpired, OSError):
74
+ return False
75
+ return result.returncode == 0
76
+
54
77
  @staticmethod
55
78
  def is_available() -> bool:
56
- """Check that both docker and docker-compose respond."""
57
- for command in (["docker", "--version"], [COMPOSE_COMMAND, "--version"]):
58
- try:
59
- result = subprocess.run(
60
- command, capture_output=True, text=True, timeout=SHORT_TIMEOUT
61
- )
62
- except (subprocess.TimeoutExpired, OSError):
63
- return False
64
- if result.returncode != 0:
65
- return False
66
- return True
79
+ """Check that docker responds and a compose implementation exists.
80
+
81
+ ``docker-compose`` stays the preferred command; hosts that only ship
82
+ the ``docker compose`` CLI plugin fall back to it.
83
+ """
84
+ global _compose_prefix
85
+
86
+ if not DockerCompose._probe(["docker", "--version"]):
87
+ return False
88
+ if DockerCompose._probe([COMPOSE_COMMAND, "--version"]):
89
+ _compose_prefix = [COMPOSE_COMMAND]
90
+ return True
91
+ if DockerCompose._probe([*COMPOSE_PLUGIN_COMMAND, "version"]):
92
+ debug_log("Falling back to the 'docker compose' CLI plugin", "info")
93
+ _compose_prefix = list(COMPOSE_PLUGIN_COMMAND)
94
+ return True
95
+ return False
67
96
 
68
97
  def _services(self, timeout: int) -> List[Dict[str, Any]]:
69
98
  """Return the parsed ``docker-compose ps --format json`` entries."""
@@ -71,8 +100,34 @@ class DockerCompose:
71
100
  if result is None or result.returncode != 0:
72
101
  return []
73
102
 
103
+ # Compose sometimes interleaves ``time="..." level=warning`` log lines
104
+ # with the JSON payload, so only JSON-looking lines are considered.
105
+ payload = "\n".join(
106
+ line
107
+ for line in result.stdout.splitlines()
108
+ if line.strip().startswith(("[", "{"))
109
+ ).strip()
110
+ if not payload:
111
+ return []
112
+
113
+ # Compose < v2.21 prints a single JSON array, newer versions print one
114
+ # JSON object per line (NDJSON).
115
+ try:
116
+ document = json.loads(payload)
117
+ except json.JSONDecodeError:
118
+ return DockerCompose._parse_json_lines(payload)
119
+
120
+ if isinstance(document, dict):
121
+ return [document]
122
+ if isinstance(document, list):
123
+ return [entry for entry in document if isinstance(entry, dict)]
124
+ return []
125
+
126
+ @staticmethod
127
+ def _parse_json_lines(payload: str) -> List[Dict[str, Any]]:
128
+ """Parse NDJSON output, skipping malformed or non-object lines."""
74
129
  services: List[Dict[str, Any]] = []
75
- for line in result.stdout.strip().split("\n"):
130
+ for line in payload.split("\n"):
76
131
  if not line.strip():
77
132
  continue
78
133
  try:
@@ -109,7 +164,7 @@ class DockerCompose:
109
164
  """Build and start the compose services in the background."""
110
165
  result = self._compose(["up", "-d", "--build"], timeout=timeout)
111
166
  if result is None:
112
- raise subprocess.TimeoutExpired(COMPOSE_COMMAND, timeout)
167
+ raise subprocess.TimeoutExpired(" ".join(self.compose_command()), timeout)
113
168
  return result
114
169
 
115
170
  def wait_until_healthy(self, timeout: int) -> None:
@@ -166,6 +221,50 @@ class DockerCompose:
166
221
  debug_log("All required services are running", "info")
167
222
  return None
168
223
 
224
+ def published_port(self, service_hint: str = "app") -> Optional[int]:
225
+ """Return the host port the app container publishes, if any.
226
+
227
+ ``docker-compose ps --format json`` reports a ``Publishers`` list per
228
+ service; an entry with a non-zero ``PublishedPort`` is a port bound on
229
+ the host, which is what a smoke test can reach. Services whose name
230
+ contains ``service_hint`` are preferred, so a database that happens to
231
+ publish a port is never mistaken for the application.
232
+ """
233
+ services = self._services(timeout=STATUS_TIMEOUT)
234
+ if not services:
235
+ return None
236
+
237
+ def _matches(service: Dict[str, Any]) -> bool:
238
+ name = f"{service.get('Service', '')} {service.get('Name', '')}"
239
+ return service_hint in name
240
+
241
+ for candidate in (
242
+ [entry for entry in services if _matches(entry)],
243
+ services,
244
+ ):
245
+ for service in candidate:
246
+ port = self._first_published_port(service)
247
+ if port is not None:
248
+ return port
249
+ return None
250
+
251
+ @staticmethod
252
+ def _first_published_port(service: Dict[str, Any]) -> Optional[int]:
253
+ """Extract the first host-bound port from one ``ps`` entry."""
254
+ publishers = service.get("Publishers")
255
+ if not isinstance(publishers, list):
256
+ return None
257
+ for publisher in publishers:
258
+ if not isinstance(publisher, dict):
259
+ continue
260
+ try:
261
+ port = int(publisher.get("PublishedPort", 0))
262
+ except (TypeError, ValueError):
263
+ continue
264
+ if port > 0:
265
+ return port
266
+ return None
267
+
169
268
  def exec_tests(
170
269
  self, use_test_script: bool
171
270
  ) -> Optional[subprocess.CompletedProcess[str]]:
@@ -176,10 +275,46 @@ class DockerCompose:
176
275
  command = ["exec", "-T", "app", "python", "-m", "pytest", "tests/", "-v"]
177
276
  return self._compose(command, timeout=TEST_TIMEOUT)
178
277
 
278
+ def reclaim_bind_mount_ownership(self) -> None:
279
+ """Give the bind-mounted project directory back to the host user.
280
+
281
+ Containers run as root, so a test run inside the stack leaves
282
+ root-owned artefacts (``__pycache__``, ``.pytest_cache``, ...) in the
283
+ mounted project. Later host-side steps and the temp directory cleanup
284
+ cannot touch those and fail with a PermissionError, so the ownership
285
+ is reset from inside a throwaway container. Best effort: a failure
286
+ here is never worth failing an inspection over.
287
+ """
288
+ if not hasattr(os, "getuid"): # pragma: no cover - Windows hosts
289
+ return
290
+
291
+ uid, gid = os.getuid(), os.getgid()
292
+ if uid == 0:
293
+ return
294
+
295
+ debug_log("Reclaiming ownership of bind-mounted project files", "info")
296
+ self._run(
297
+ [
298
+ "docker",
299
+ "run",
300
+ "--rm",
301
+ "-v",
302
+ f"{self.project_dir}:/mnt",
303
+ RECLAIM_IMAGE,
304
+ "chown",
305
+ "-R",
306
+ f"{uid}:{gid}",
307
+ "/mnt",
308
+ ],
309
+ timeout=CLEANUP_TIMEOUT,
310
+ )
311
+
179
312
  def cleanup(self) -> None:
180
313
  """Tear down services and volumes, ignoring any failure."""
181
314
  debug_log("Cleaning up Docker services", "info")
315
+ self.reclaim_bind_mount_ownership()
182
316
  self._run(
183
- [COMPOSE_COMMAND, "down", "-v", "--remove-orphans"], timeout=CLEANUP_TIMEOUT
317
+ [*self.compose_command(), "down", "-v", "--remove-orphans"],
318
+ timeout=CLEANUP_TIMEOUT,
184
319
  )
185
320
  self._run(["docker", "system", "prune", "-f"], timeout=STATUS_TIMEOUT)
@@ -0,0 +1,103 @@
1
+ # --------------------------------------------------------------------------
2
+ # Static analysis of the generated project.
3
+ #
4
+ # The compile check is mandatory - a template that cannot be compiled is
5
+ # broken beyond argument. It is performed in-process with ``compile()`` and
6
+ # deliberately writes nothing to disk: a Docker test run beforehand can leave
7
+ # root-owned ``__pycache__`` directories in the bind-mounted project, and
8
+ # ``compileall`` would then fail with a PermissionError that says nothing
9
+ # about the template. ``mypy`` is opt-in because it needs the template's own
10
+ # dependencies installed and is far slower.
11
+ #
12
+ # @author bnbong
13
+ # --------------------------------------------------------------------------
14
+ import os
15
+ import subprocess
16
+ import sys
17
+ from typing import List
18
+
19
+ from fastapi_fastkit.utils.logging import debug_log
20
+
21
+ from .context import InspectionContext
22
+
23
+ MYPY_TIMEOUT = 300
24
+
25
+ #: Directories never worth compiling - third party code and build artefacts.
26
+ EXCLUDED_DIRS = {".venv", "venv", "__pycache__", "node_modules"}
27
+
28
+
29
+ def _interpreter(ctx: InspectionContext) -> str:
30
+ """Prefer the inspection venv interpreter, falling back to the host one."""
31
+ return ctx.python_executable() or sys.executable
32
+
33
+
34
+ def _iter_python_files(root: str) -> List[str]:
35
+ """Collect every ``.py`` file below ``root``, skipping excluded directories."""
36
+ python_files: List[str] = []
37
+ for dirpath, dirnames, filenames in os.walk(root):
38
+ dirnames[:] = [name for name in dirnames if name not in EXCLUDED_DIRS]
39
+ for file_name in sorted(filenames):
40
+ if file_name.endswith(".py"):
41
+ python_files.append(os.path.join(dirpath, file_name))
42
+ return python_files
43
+
44
+
45
+ def check_compileall(ctx: InspectionContext) -> bool:
46
+ """Compile every Python file of the generated project, in memory.
47
+
48
+ Nothing is written to disk - no ``__pycache__`` is created - so the check
49
+ stays a pure syntax gate that cannot trip over file ownership left behind
50
+ by a containerised test run.
51
+ """
52
+ failures: List[str] = []
53
+
54
+ for path in _iter_python_files(ctx.temp_dir):
55
+ try:
56
+ with open(path, "rb") as f:
57
+ source = f.read()
58
+ except OSError as e:
59
+ failures.append(f"{path}: could not be read ({e})")
60
+ continue
61
+
62
+ try:
63
+ compile(source, path, "exec", dont_inherit=True)
64
+ except (SyntaxError, ValueError) as e:
65
+ failures.append(f"{path}: {e}")
66
+
67
+ if failures:
68
+ detail = "\n".join(failures)
69
+ ctx.add_error(f"Generated project failed to compile:\n{detail}")
70
+ return False
71
+
72
+ debug_log("compileall check passed", "info")
73
+ return True
74
+
75
+
76
+ def check_mypy(ctx: InspectionContext) -> bool:
77
+ """Run mypy inside the generated project (opt-in via ``--mypy``)."""
78
+ if not ctx.options.run_mypy:
79
+ debug_log("mypy check disabled", "info")
80
+ return True
81
+
82
+ try:
83
+ result = subprocess.run(
84
+ [_interpreter(ctx), "-m", "mypy", "."],
85
+ cwd=ctx.temp_dir,
86
+ capture_output=True,
87
+ text=True,
88
+ timeout=MYPY_TIMEOUT,
89
+ )
90
+ except subprocess.TimeoutExpired:
91
+ ctx.add_error("mypy timed out")
92
+ return False
93
+ except OSError as e:
94
+ ctx.add_warning(f"Could not run mypy: {e}")
95
+ return True
96
+
97
+ if result.returncode != 0:
98
+ detail = (result.stdout or result.stderr or "").strip()
99
+ ctx.add_error(f"mypy reported errors in the generated project:\n{detail}")
100
+ return False
101
+
102
+ debug_log("mypy check passed", "info")
103
+ return True