FastAPI-fastkit 1.3.0__tar.gz → 1.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/PKG-INFO +49 -6
  2. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/README.md +46 -5
  3. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/pyproject.toml +16 -3
  4. fastapi_fastkit-1.4.1/src/fastapi_fastkit/__init__.py +1 -0
  5. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/__init__.py +26 -0
  6. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/checks.py +349 -0
  7. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/consistency.py +125 -0
  8. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/context.py +71 -0
  9. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/core.py +351 -0
  10. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/docker.py +320 -0
  11. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/freshness.py +145 -0
  12. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/fsutils.py +139 -0
  13. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/lint.py +103 -0
  14. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/report.py +58 -0
  15. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/smoke.py +381 -0
  16. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspection/strategies.py +367 -0
  17. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/inspector.py +34 -0
  18. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/interactive/__init__.py +6 -0
  19. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/interactive/config_builder.py +45 -63
  20. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/interactive/prompts.py +155 -6
  21. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/interactive/selectors.py +18 -2
  22. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/main.py +1741 -0
  23. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/package_managers/base.py +322 -0
  24. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/factory.py +5 -4
  25. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +29 -82
  26. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +31 -85
  27. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +70 -110
  28. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +43 -112
  29. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/project_builder/__init__.py +8 -1
  30. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/project_builder/config_generator.py +957 -0
  31. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/project_builder/config_schema.py +384 -0
  32. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +249 -0
  33. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/project_builder/preset_layout.py +429 -0
  34. fastapi_fastkit-1.4.1/src/fastapi_fastkit/backend/scaffolder.py +578 -0
  35. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/transducer.py +154 -22
  36. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/cli.py +434 -311
  37. fastapi_fastkit-1.4.1/src/fastapi_fastkit/core/settings.py +463 -0
  38. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/README.md +26 -10
  39. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +3 -0
  40. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +21 -22
  41. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +40 -0
  42. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +3 -0
  43. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +1 -2
  44. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/core/config.py-tpl +5 -6
  45. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/crud/items.py-tpl +1 -2
  46. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +9 -1
  47. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/schemas/items.py-tpl +1 -2
  48. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -1
  49. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.env-tpl +21 -0
  50. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.gitignore-tpl +33 -0
  51. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/Dockerfile-tpl +18 -0
  52. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl +210 -0
  53. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/alembic.ini-tpl +119 -0
  54. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl +86 -0
  55. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl +23 -0
  56. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/env.py-tpl +51 -0
  57. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/versions/0001_initial_auth_schema.py-tpl +62 -0
  58. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/deps.py-tpl +91 -0
  59. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/router.py-tpl +17 -0
  60. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/config.py-tpl +64 -0
  61. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/security.py-tpl +100 -0
  62. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/session.py-tpl +36 -0
  63. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/models.py-tpl +25 -0
  64. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/repository.py-tpl +41 -0
  65. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/router.py-tpl +82 -0
  66. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/schemas.py-tpl +14 -0
  67. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/service.py-tpl +65 -0
  68. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/models.py-tpl +35 -0
  69. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/repository.py-tpl +33 -0
  70. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/router.py-tpl +71 -0
  71. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/schemas.py-tpl +29 -0
  72. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/service.py-tpl +55 -0
  73. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/main.py-tpl +69 -0
  74. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/template-config.yml-tpl +16 -0
  75. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/conftest.py-tpl +73 -0
  76. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_auth.py-tpl +201 -0
  77. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_health.py-tpl +15 -0
  78. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_users.py-tpl +77 -0
  79. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +21 -22
  80. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +40 -0
  81. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +3 -0
  82. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +3 -3
  83. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +5 -6
  84. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/crud/items.py-tpl +1 -2
  85. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +8 -8
  86. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +9 -0
  87. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +1 -1
  88. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/schemas/items.py-tpl +1 -2
  89. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -1
  90. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +18 -19
  91. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +38 -0
  92. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +3 -0
  93. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +1 -2
  94. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/core/config.py-tpl +5 -6
  95. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +1 -2
  96. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/main.py-tpl +9 -1
  97. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/schemas/items.py-tpl +1 -2
  98. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +2 -3
  99. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/tests/test_items.py-tpl +0 -2
  100. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +1 -1
  101. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +3 -0
  102. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +21 -22
  103. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +42 -0
  104. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +3 -0
  105. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +1 -2
  106. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/src/core/config.py-tpl +5 -6
  107. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +1 -2
  108. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/src/main.py-tpl +9 -1
  109. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +1 -2
  110. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +2 -3
  111. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/tests/test_items.py-tpl +0 -2
  112. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +13 -14
  113. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +37 -0
  114. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +6 -0
  115. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +8 -0
  116. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +6 -0
  117. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +11 -0
  118. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +3 -0
  119. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +4 -4
  120. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +4 -3
  121. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +4 -5
  122. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +2 -3
  123. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +2 -3
  124. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +3 -0
  125. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +0 -1
  126. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +14 -15
  127. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +37 -0
  128. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +5 -6
  129. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +3 -1
  130. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -1
  131. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -1
  132. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.env-tpl +15 -0
  133. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.gitignore-tpl +31 -0
  134. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/Dockerfile-tpl +18 -0
  135. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl +193 -0
  136. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl +76 -0
  137. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl +15 -0
  138. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/chat.sh-tpl +10 -0
  139. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/format.sh-tpl +5 -0
  140. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/lint.sh-tpl +6 -0
  141. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/run-server.sh-tpl +8 -0
  142. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/test.sh-tpl +6 -0
  143. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/chat.py-tpl +62 -0
  144. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/deps.py-tpl +23 -0
  145. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/health.py-tpl +11 -0
  146. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/router.py-tpl +13 -0
  147. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/config.py-tpl +67 -0
  148. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/agent.py-tpl +136 -0
  149. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/client.py-tpl +30 -0
  150. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/tools.py-tpl +131 -0
  151. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/main.py-tpl +53 -0
  152. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/base.py-tpl +27 -0
  153. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/in_memory.py-tpl +32 -0
  154. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/chat.py-tpl +46 -0
  155. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/template-config.yml-tpl +16 -0
  156. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/conftest.py-tpl +158 -0
  157. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_chat.py-tpl +160 -0
  158. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_health.py-tpl +12 -0
  159. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_memory.py-tpl +38 -0
  160. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_tools.py-tpl +37 -0
  161. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +1 -1
  162. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +2 -2
  163. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +25 -26
  164. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +66 -0
  165. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +2 -3
  166. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +3 -0
  167. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +13 -14
  168. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +3 -4
  169. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +6 -7
  170. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +5 -6
  171. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +4 -1
  172. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server}/router.py-tpl +3 -5
  173. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +6 -7
  174. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -1
  175. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -1
  176. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -1
  177. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +2 -0
  178. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +1 -1
  179. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +22 -23
  180. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +45 -0
  181. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +5 -0
  182. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +1 -0
  183. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +1 -3
  184. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +26 -0
  185. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +5 -6
  186. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +2 -0
  187. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/__init__.py-tpl +0 -0
  188. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +2 -4
  189. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/__init__.py-tpl +0 -0
  190. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +1 -2
  191. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +1 -1
  192. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/__init__.py-tpl +0 -0
  193. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +4 -6
  194. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +9 -0
  195. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
  196. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +4 -5
  197. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
  198. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
  199. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +1 -5
  200. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm}/tests/test_items.py-tpl +0 -2
  201. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.env-tpl +1 -0
  202. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.gitignore-tpl +30 -0
  203. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +3 -4
  204. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +27 -0
  205. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +3 -0
  206. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/__init__.py-tpl +0 -0
  207. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -1
  208. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.env-tpl +7 -0
  209. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.gitignore-tpl +35 -0
  210. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/Dockerfile-tpl +18 -0
  211. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl +166 -0
  212. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/alembic.ini-tpl +44 -0
  213. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl +82 -0
  214. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl +21 -0
  215. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/format.sh-tpl +5 -0
  216. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/lint.sh-tpl +6 -0
  217. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/migrate.sh-tpl +7 -0
  218. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/run-server.sh-tpl +8 -0
  219. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/test.sh-tpl +6 -0
  220. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/__init__.py-tpl +0 -0
  221. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/__init__.py-tpl +0 -0
  222. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/README-tpl +9 -0
  223. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/env.py-tpl +72 -0
  224. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/script.py.mako-tpl +27 -0
  225. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/versions/0001_create_items_table.py-tpl +38 -0
  226. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/__init__.py-tpl +0 -0
  227. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/health.py-tpl +11 -0
  228. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/router.py-tpl +15 -0
  229. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/__init__.py-tpl +0 -0
  230. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/config.py-tpl +62 -0
  231. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/__init__.py-tpl +0 -0
  232. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/base.py-tpl +62 -0
  233. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/pagination.py-tpl +21 -0
  234. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/__init__.py-tpl +0 -0
  235. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/base.py-tpl +12 -0
  236. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/session.py-tpl +50 -0
  237. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/__init__.py-tpl +0 -0
  238. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/__init__.py-tpl +0 -0
  239. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/crud.py-tpl +26 -0
  240. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/models.py-tpl +70 -0
  241. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/router.py-tpl +69 -0
  242. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/main.py-tpl +43 -0
  243. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/template-config.yml-tpl +16 -0
  244. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/__init__.py-tpl +0 -0
  245. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/conftest.py-tpl +60 -0
  246. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_crud_base.py-tpl +43 -0
  247. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_health.py-tpl +12 -0
  248. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_items.py-tpl +110 -0
  249. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
  250. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
  251. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +2 -2
  252. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
  253. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
  254. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/README.md +90 -0
  255. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/auth/fastapi_users.py.j2 +8 -0
  256. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/auth/jwt.py.j2 +44 -0
  257. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/auth/oauth2.py.j2 +105 -0
  258. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/auth/session.py.j2 +67 -0
  259. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/db/mongodb.py.j2 +19 -0
  260. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/db/redis.py.j2 +26 -0
  261. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/db/sqlalchemy.py.j2 +45 -0
  262. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/docker/docker_compose.j2 +84 -0
  263. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/docker/dockerfile.j2 +19 -0
  264. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/features/cache.py.j2 +26 -0
  265. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/features/pagination.py.j2 +31 -0
  266. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/features/tasks_celery.py.j2 +50 -0
  267. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/features/tasks_dramatiq.py.j2 +59 -0
  268. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/features/websocket.py.j2 +66 -0
  269. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/header.j2 +4 -0
  270. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/logging/structured.py.j2 +88 -0
  271. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/async_tasks.j2 +1 -0
  272. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/caching.j2 +5 -0
  273. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/fastapi_users.j2 +1 -0
  274. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/jwt.j2 +1 -0
  275. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/loguru.j2 +1 -0
  276. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/mongodb.j2 +1 -0
  277. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/oauth2.j2 +4 -0
  278. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/opentelemetry.j2 +6 -0
  279. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/pagination.j2 +3 -0
  280. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/prometheus.j2 +1 -0
  281. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/rate_limiting.j2 +3 -0
  282. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/session_auth.j2 +4 -0
  283. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/sqlalchemy.j2 +2 -0
  284. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/structured_logging.j2 +1 -0
  285. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/imports/websocket.j2 +1 -0
  286. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/lifespan/caching.j2 +7 -0
  287. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/lifespan/mongodb.j2 +2 -0
  288. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/lifespan/prometheus.j2 +2 -0
  289. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/lifespan/sqlalchemy.j2 +2 -0
  290. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/async_tasks.j2 +1 -0
  291. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/caching.j2 +1 -0
  292. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/cors.j2 +8 -0
  293. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/oauth2.j2 +3 -0
  294. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/opentelemetry.j2 +19 -0
  295. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/pagination.j2 +2 -0
  296. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/rate_limiting.j2 +3 -0
  297. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/session_auth.j2 +6 -0
  298. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/structured_logging.j2 +2 -0
  299. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main/setup/websocket.j2 +1 -0
  300. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/main.py.j2 +57 -0
  301. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/migrations/alembic_ini.j2 +42 -0
  302. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/migrations/env.py.j2 +76 -0
  303. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/migrations/initial_revision.py.j2 +27 -0
  304. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/migrations/migrate_sh.j2 +34 -0
  305. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/migrations/script.py.mako.j2 +26 -0
  306. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tasks/celery_worker.py.j2 +49 -0
  307. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tasks/dramatiq_worker.py.j2 +41 -0
  308. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/test/factories.py.j2 +68 -0
  309. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/test/pytest_ini.j2 +16 -0
  310. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/test/test_factories.py.j2 +27 -0
  311. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/test/test_main.py.j2 +46 -0
  312. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tooling/devcontainer.j2 +26 -0
  313. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tooling/github_actions.j2 +37 -0
  314. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tooling/makefile.j2 +40 -0
  315. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tooling/pre_commit.j2 +36 -0
  316. fastapi_fastkit-1.4.1/src/fastapi_fastkit/fragments/tooling/ruff_toml.j2 +16 -0
  317. fastapi_fastkit-1.4.1/src/fastapi_fastkit/py.typed +0 -0
  318. fastapi_fastkit-1.4.1/src/fastapi_fastkit/utils/__init__.py +0 -0
  319. fastapi_fastkit-1.4.1/src/fastapi_fastkit/utils/config_file.py +263 -0
  320. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/utils/main.py +38 -0
  321. fastapi_fastkit-1.4.1/tests/__init__.py +0 -0
  322. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/conftest.py +8 -11
  323. fastapi_fastkit-1.4.1/tests/test_backends/__init__.py +0 -0
  324. fastapi_fastkit-1.4.1/tests/test_backends/test_inspection_docker.py +579 -0
  325. fastapi_fastkit-1.4.1/tests/test_backends/test_inspection_fsutils.py +198 -0
  326. fastapi_fastkit-1.4.1/tests/test_backends/test_inspector.py +1194 -0
  327. fastapi_fastkit-1.4.1/tests/test_backends/test_inspector_checks.py +1261 -0
  328. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_interactive_config_builder.py +40 -2
  329. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_interactive_prompts.py +184 -0
  330. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_interactive_validators.py +1 -1
  331. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_main.py +32 -5
  332. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_package_managers.py +146 -2
  333. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_preset_layout.py +127 -0
  334. fastapi_fastkit-1.4.1/tests/test_backends/test_project_builder_config_generator.py +1091 -0
  335. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_project_builder_dependency_collector.py +125 -4
  336. fastapi_fastkit-1.4.1/tests/test_backends/test_project_metadata.py +280 -0
  337. fastapi_fastkit-1.4.1/tests/test_backends/test_safety_regressions.py +382 -0
  338. fastapi_fastkit-1.4.1/tests/test_backends/test_scaffolder.py +239 -0
  339. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_transducer.py +211 -23
  340. fastapi_fastkit-1.4.1/tests/test_cli_operations/__init__.py +0 -0
  341. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_cli_operations/test_cli.py +35 -31
  342. fastapi_fastkit-1.4.1/tests/test_cli_operations/test_cli_config_options.py +766 -0
  343. fastapi_fastkit-1.4.1/tests/test_cli_operations/test_cli_error_paths.py +567 -0
  344. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_cli_operations/test_cli_interactive_integration.py +38 -1
  345. fastapi_fastkit-1.4.1/tests/test_config_file.py +296 -0
  346. fastapi_fastkit-1.4.1/tests/test_rich/__init__.py +0 -0
  347. fastapi_fastkit-1.4.1/tests/test_templates/__init__.py +0 -0
  348. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_templates/template_configs.yaml +2 -2
  349. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_templates/test_all_templates.py +151 -37
  350. fastapi_fastkit-1.3.0/src/fastapi_fastkit/__init__.py +0 -1
  351. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/inspector.py +0 -1416
  352. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/main.py +0 -953
  353. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/package_managers/base.py +0 -150
  354. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/config_generator.py +0 -601
  355. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -210
  356. fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/preset_layout.py +0 -203
  357. fastapi_fastkit-1.3.0/src/fastapi_fastkit/core/settings.py +0 -274
  358. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -37
  359. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.py-tpl +0 -25
  360. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -37
  361. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.py-tpl +0 -27
  362. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -35
  363. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.py-tpl +0 -22
  364. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -37
  365. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.py-tpl +0 -22
  366. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +0 -11
  367. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -11
  368. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl +0 -22
  369. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +0 -41
  370. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.py-tpl +0 -51
  371. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -42
  372. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.py-tpl +0 -25
  373. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -7
  374. fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl +0 -17
  375. fastapi_fastkit-1.3.0/tests/test_backends/test_inspector.py +0 -2050
  376. fastapi_fastkit-1.3.0/tests/test_backends/test_project_builder_config_generator.py +0 -438
  377. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/LICENSE +0 -0
  378. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/__main__.py +0 -0
  379. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/__init__.py +0 -0
  380. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
  381. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
  382. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/core/__init__.py +0 -0
  383. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/core/exceptions.py +0 -0
  384. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
  385. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
  386. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
  387. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
  388. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
  389. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
  390. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
  391. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
  392. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
  393. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
  394. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
  395. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
  396. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
  397. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
  398. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
  399. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
  400. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
  401. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
  402. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
  403. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/format.sh-tpl +0 -0
  404. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/lint.sh-tpl +0 -0
  405. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/run-server.sh-tpl +0 -0
  406. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/test.sh-tpl +0 -0
  407. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/src/__init__.py-tpl +0 -0
  408. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/__init__.py-tpl +0 -0
  409. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/alembic/README-tpl +0 -0
  410. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/alembic/script.py.mako-tpl +0 -0
  411. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api}/__init__.py-tpl +0 -0
  412. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/src/app/api/health.py-tpl +0 -0
  413. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/core/__init__.py-tpl +0 -0
  414. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db}/__init__.py-tpl +0 -0
  415. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains}/__init__.py-tpl +0 -0
  416. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth}/__init__.py-tpl +0 -0
  417. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users}/__init__.py-tpl +0 -0
  418. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests}/__init__.py-tpl +0 -0
  419. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
  420. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
  421. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
  422. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/scripts/format.sh-tpl +0 -0
  423. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
  424. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
  425. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/scripts/test.sh-tpl +0 -0
  426. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
  427. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src}/__init__.py-tpl +0 -0
  428. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api}/__init__.py-tpl +0 -0
  429. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes}/__init__.py-tpl +0 -0
  430. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core}/__init__.py-tpl +0 -0
  431. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud}/__init__.py-tpl +0 -0
  432. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper}/__init__.py-tpl +0 -0
  433. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
  434. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/mocks/__init__.py-tpl +0 -0
  435. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
  436. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/schemas/__init__.py-tpl +0 -0
  437. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils}/__init__.py-tpl +0 -0
  438. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
  439. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests}/__init__.py-tpl +0 -0
  440. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
  441. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
  442. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
  443. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
  444. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/scripts/format.sh-tpl +0 -0
  445. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
  446. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
  447. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/scripts/test.sh-tpl +0 -0
  448. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
  449. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src}/__init__.py-tpl +0 -0
  450. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api}/__init__.py-tpl +0 -0
  451. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes}/__init__.py-tpl +0 -0
  452. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core}/__init__.py-tpl +0 -0
  453. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud}/__init__.py-tpl +0 -0
  454. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks}/__init__.py-tpl +0 -0
  455. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
  456. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas}/__init__.py-tpl +0 -0
  457. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests}/__init__.py-tpl +0 -0
  458. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
  459. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
  460. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/scripts/format.sh-tpl +0 -0
  461. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
  462. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
  463. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/scripts/test.sh-tpl +0 -0
  464. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
  465. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src}/__init__.py-tpl +0 -0
  466. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src}/api/__init__.py-tpl +0 -0
  467. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes}/__init__.py-tpl +0 -0
  468. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core}/__init__.py-tpl +0 -0
  469. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud}/__init__.py-tpl +0 -0
  470. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks}/__init__.py-tpl +0 -0
  471. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
  472. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas}/__init__.py-tpl +0 -0
  473. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests}/__init__.py-tpl +0 -0
  474. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +0 -0
  475. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +0 -0
  476. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +0 -0
  477. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/scripts/format.sh-tpl +0 -0
  478. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src}/__init__.py-tpl +0 -0
  479. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/__init__.py-tpl +0 -0
  480. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/api/__init__.py-tpl +0 -0
  481. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core}/__init__.py-tpl +0 -0
  482. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db}/__init__.py-tpl +0 -0
  483. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains}/__init__.py-tpl +0 -0
  484. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +0 -0
  485. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +0 -0
  486. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +0 -0
  487. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests}/__init__.py-tpl +0 -0
  488. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +0 -0
  489. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +0 -0
  490. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
  491. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
  492. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +0 -0
  493. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
  494. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src}/__init__.py-tpl +0 -0
  495. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core}/__init__.py-tpl +0 -0
  496. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests}/__init__.py-tpl +0 -0
  497. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api/routes → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src}/__init__.py-tpl +0 -0
  498. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/crud → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app}/__init__.py-tpl +0 -0
  499. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/schemas → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api}/__init__.py-tpl +0 -0
  500. fastapi_fastkit-1.3.0/src/fastapi_fastkit/py.typed → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/__init__.py-tpl +0 -0
  501. fastapi_fastkit-1.3.0/src/fastapi_fastkit/utils/__init__.py → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/__init__.py-tpl +0 -0
  502. fastapi_fastkit-1.3.0/tests/__init__.py → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/__init__.py-tpl +0 -0
  503. fastapi_fastkit-1.3.0/tests/test_backends/__init__.py → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/__init__.py-tpl +0 -0
  504. fastapi_fastkit-1.3.0/tests/test_cli_operations/__init__.py → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/__init__.py-tpl +0 -0
  505. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
  506. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
  507. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
  508. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
  509. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
  510. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
  511. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
  512. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
  513. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
  514. {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp → fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server}/__init__.py-tpl +0 -0
  515. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
  516. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
  517. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +1 -1
  518. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
  519. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
  520. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
  521. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
  522. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
  523. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
  524. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
  525. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
  526. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
  527. /fastapi_fastkit-1.3.0/tests/test_rich/__init__.py → /fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/__init__.py-tpl +0 -0
  528. /fastapi_fastkit-1.3.0/tests/test_templates/__init__.py → /fastapi_fastkit-1.4.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
  529. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
  530. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
  531. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
  532. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
  533. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
  534. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
  535. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
  536. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
  537. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
  538. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
  539. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/src/fastapi_fastkit/utils/logging.py +0 -0
  540. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_configure.py +0 -0
  541. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_console_sizing.py +0 -0
  542. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_backends/test_interactive_selectors.py +0 -0
  543. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_cli_operations/test_cli_extended.py +0 -0
  544. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_core.py +0 -0
  545. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_rich/test_rich.py +0 -0
  546. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_templates/test_config_based_templates.py +0 -0
  547. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_templates/test_domain_starter_e2e.py +0 -0
  548. {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.1}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FastAPI-fastkit
3
- Version: 1.3.0
3
+ Version: 1.4.1
4
4
  Summary: Fast, easy-to-use starter kit for new users of Python and FastAPI
5
5
  Author-Email: bnbong <bbbong9@gmail.com>
6
6
  License: MIT
@@ -11,6 +11,7 @@ Project-URL: Changelog, https://bnbong.github.io/FastAPI-fastkit/changelog/
11
11
  Requires-Python: >=3.12
12
12
  Requires-Dist: click>=8.1.7
13
13
  Requires-Dist: rich>=13.9.2
14
+ Requires-Dist: jinja2>=3.1
14
15
  Provides-Extra: dev
15
16
  Requires-Dist: pytest>=9.0.3; extra == "dev"
16
17
  Requires-Dist: pytest-cov>=6.2.1; extra == "dev"
@@ -19,10 +20,11 @@ Requires-Dist: pre-commit>=4.0.1; extra == "dev"
19
20
  Requires-Dist: mypy>=1.12.0; extra == "dev"
20
21
  Requires-Dist: isort>=5.13.2; extra == "dev"
21
22
  Requires-Dist: pygments>=2.20.0; extra == "dev"
23
+ Requires-Dist: types-pyyaml>=6.0.12.20260408; extra == "dev"
22
24
  Description-Content-Type: text/markdown
23
25
 
24
26
  <p align="center">
25
- <img align="top" width="70%" src="https://bnbong.github.io/projects/img/fastkit_general_logo.png" alt="FastAPI-fastkit"/>
27
+ <img align="top" width="70%" src=".github/fastkit_general_logo.png" alt="FastAPI-fastkit"/>
26
28
  </p>
27
29
  <p align="center">
28
30
  <em><b>FastAPI-fastkit</b>: Fast, easy-to-use starter kit for new users of Python and FastAPI</em>
@@ -57,6 +59,8 @@ This project was inspired by the `SpringBoot initializer` & Python Django's `dja
57
59
  - **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
58
60
  - **🚀 Multiple project templates** : Choose from various pre-configured templates for different use cases (async CRUD, Docker, PostgreSQL, etc.)
59
61
  - **📦 Multiple package manager support** : Choose your preferred Python package manager (pip, uv, pdm, poetry) for dependency management
62
+ - **🧾 Reproducible project configs** : Save an interactive session to a `.json` / `.toml` / `.yaml` file and replay it with `fastkit init --config`
63
+ - **🏷️ Self-describing projects** : Every generated project records its template, preset, package manager, entrypoint and selected features in a `[tool.fastapi-fastkit]` block that `runserver` and `addroute` read back
60
64
 
61
65
  ## Installation
62
66
 
@@ -78,17 +82,27 @@ $ pip install FastAPI-fastkit
78
82
  ```console
79
83
  fastkit init [OPTIONS]
80
84
  ```
81
- - What it does: Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
85
+ > [!TIP]
86
+ > Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
87
+
82
88
  - Key options:
83
89
  - `--project-name`, `--author`, `--author-email`, `--description`
84
90
  - `--package-manager` [pip|uv|pdm|poetry]
91
+ - `--config <path>`: create the project from a saved config file (`.json` / `.toml`, and `.yaml` when PyYAML is installed) with no prompts
92
+ - `--save-config <path>`: with `--interactive`, record the answers for later reuse
93
+ - `--dry-run`: print the files and packages that would be created, write nothing
94
+ - `--no-venv`: skip virtual environment creation (implies `--no-install`)
95
+ - `--no-install`: skip dependency installation
96
+ - `--yes` / `-y`: skip the "Overwrite these files?" confirmation when deploying in place
85
97
  - Stack selection: `minimal` | `standard` | `full` (interactive)
86
98
 
87
99
  ### Create a project with interactive mode
88
100
  ```console
89
101
  fastkit init --interactive
90
102
  ```
91
- - What it does: Guided step-by-step project setup with intelligent feature selection
103
+ > [!TIP]
104
+ > Guided step-by-step project setup with intelligent feature selection
105
+
92
106
  - Features:
93
107
  - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
94
108
  - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
@@ -98,23 +112,33 @@ fastkit init --interactive
98
112
  - **Monitoring**: Loguru, OpenTelemetry, Prometheus
99
113
  - **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
100
114
  - **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
115
+ - **Logging**: structured JSON logging with a request-id middleware
116
+ - **Migrations**: Alembic (async env, baseline revision)
117
+ - **Tooling**: ruff, pre-commit, GitHub Actions, devcontainer, Makefile (multi-select)
101
118
  - **Deployment**: Docker, docker-compose with auto-generated configs
102
119
  - **Package manager**: pip, uv, pdm, poetry
103
120
  - **Custom packages**: Add your own dependencies
104
- - Auto-generates (varies by preset see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
121
+ - Auto-generates (varies by preset - see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
105
122
  - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
106
123
  - Database and authentication configuration files at preset-specific paths
107
124
  - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
108
125
  - Test configuration (pytest with coverage)
126
+ - `/health` and `/ready` endpoints on every generated project
127
+ - Real working code — not just installed packages — for background tasks, caching, WebSocket, pagination, OpenTelemetry, OAuth2 and session-based auth
128
+ - `--dry-run` previews the exact file tree a run would create, including logging/migrations/tooling artifacts
109
129
 
110
130
  ### Create a project from a template
111
131
  ```console
112
132
  fastkit startdemo [TEMPLATE] [OPTIONS]
113
133
  ```
114
- - What it does: Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
134
+ > [!TIP]
135
+ > Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
136
+
115
137
  - Key options:
116
138
  - `--project-name`, `--author`, `--author-email`, `--description`
117
139
  - `--package-manager` [pip|uv|pdm|poetry]
140
+ - `--dry-run`, `--no-venv`, `--no-install`, `--yes`/`-y` — same meaning as on `init`
141
+ - Refuses to run if the target project directory already exists (`--dry-run` excepted)
118
142
  - Tip: List available templates with `fastkit list-templates`
119
143
 
120
144
  ### Add a new route
@@ -136,6 +160,25 @@ fastkit runserver [OPTIONS]
136
160
  fastkit list-templates
137
161
  ```
138
162
 
163
+ Available templates:
164
+
165
+ | Template | Description | Notes |
166
+ |---|---|---|
167
+ | [`fastapi-default`](src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl) | Simple FastAPI project with a classic layered layout | Good first choice |
168
+ | [`fastapi-empty`](src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl) | Minimal FastAPI template | Base for `minimal` preset |
169
+ | [`fastapi-single-module`](src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl) | Single-file FastAPI app | Base for `single-module` preset |
170
+ | [`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 |
171
+ | [`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 |
172
+ | [`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 |
173
+ | [`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 |
174
+ | [`fastapi-mcp`](src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl) | FastAPI app exposed as an MCP server | |
175
+ | [`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 |
176
+ | [`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 | |
177
+ | [`fastapi-async-crud`](src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl) | Async item management API | **Deprecated** — use `fastapi-sqlmodel` |
178
+ | [`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` |
179
+
180
+ 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.
181
+
139
182
  ### Delete a project
140
183
  ```console
141
184
  fastkit deleteproject <project_name>
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img align="top" width="70%" src="https://bnbong.github.io/projects/img/fastkit_general_logo.png" alt="FastAPI-fastkit"/>
2
+ <img align="top" width="70%" src=".github/fastkit_general_logo.png" alt="FastAPI-fastkit"/>
3
3
  </p>
4
4
  <p align="center">
5
5
  <em><b>FastAPI-fastkit</b>: Fast, easy-to-use starter kit for new users of Python and FastAPI</em>
@@ -34,6 +34,8 @@ This project was inspired by the `SpringBoot initializer` & Python Django's `dja
34
34
  - **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
35
35
  - **🚀 Multiple project templates** : Choose from various pre-configured templates for different use cases (async CRUD, Docker, PostgreSQL, etc.)
36
36
  - **📦 Multiple package manager support** : Choose your preferred Python package manager (pip, uv, pdm, poetry) for dependency management
37
+ - **🧾 Reproducible project configs** : Save an interactive session to a `.json` / `.toml` / `.yaml` file and replay it with `fastkit init --config`
38
+ - **🏷️ Self-describing projects** : Every generated project records its template, preset, package manager, entrypoint and selected features in a `[tool.fastapi-fastkit]` block that `runserver` and `addroute` read back
37
39
 
38
40
  ## Installation
39
41
 
@@ -55,17 +57,27 @@ $ pip install FastAPI-fastkit
55
57
  ```console
56
58
  fastkit init [OPTIONS]
57
59
  ```
58
- - 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
+
59
63
  - Key options:
60
64
  - `--project-name`, `--author`, `--author-email`, `--description`
61
65
  - `--package-manager` [pip|uv|pdm|poetry]
66
+ - `--config <path>`: create the project from a saved config file (`.json` / `.toml`, and `.yaml` when PyYAML is installed) with no prompts
67
+ - `--save-config <path>`: with `--interactive`, record the answers for later reuse
68
+ - `--dry-run`: print the files and packages that would be created, write nothing
69
+ - `--no-venv`: skip virtual environment creation (implies `--no-install`)
70
+ - `--no-install`: skip dependency installation
71
+ - `--yes` / `-y`: skip the "Overwrite these files?" confirmation when deploying in place
62
72
  - Stack selection: `minimal` | `standard` | `full` (interactive)
63
73
 
64
74
  ### Create a project with interactive mode
65
75
  ```console
66
76
  fastkit init --interactive
67
77
  ```
68
- - 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
+
69
81
  - Features:
70
82
  - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
71
83
  - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
@@ -75,23 +87,33 @@ fastkit init --interactive
75
87
  - **Monitoring**: Loguru, OpenTelemetry, Prometheus
76
88
  - **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
77
89
  - **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
90
+ - **Logging**: structured JSON logging with a request-id middleware
91
+ - **Migrations**: Alembic (async env, baseline revision)
92
+ - **Tooling**: ruff, pre-commit, GitHub Actions, devcontainer, Makefile (multi-select)
78
93
  - **Deployment**: Docker, docker-compose with auto-generated configs
79
94
  - **Package manager**: pip, uv, pdm, poetry
80
95
  - **Custom packages**: Add your own dependencies
81
- - 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):
82
97
  - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
83
98
  - Database and authentication configuration files at preset-specific paths
84
99
  - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
85
100
  - Test configuration (pytest with coverage)
101
+ - `/health` and `/ready` endpoints on every generated project
102
+ - Real working code — not just installed packages — for background tasks, caching, WebSocket, pagination, OpenTelemetry, OAuth2 and session-based auth
103
+ - `--dry-run` previews the exact file tree a run would create, including logging/migrations/tooling artifacts
86
104
 
87
105
  ### Create a project from a template
88
106
  ```console
89
107
  fastkit startdemo [TEMPLATE] [OPTIONS]
90
108
  ```
91
- - 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
+
92
112
  - Key options:
93
113
  - `--project-name`, `--author`, `--author-email`, `--description`
94
114
  - `--package-manager` [pip|uv|pdm|poetry]
115
+ - `--dry-run`, `--no-venv`, `--no-install`, `--yes`/`-y` — same meaning as on `init`
116
+ - Refuses to run if the target project directory already exists (`--dry-run` excepted)
95
117
  - Tip: List available templates with `fastkit list-templates`
96
118
 
97
119
  ### Add a new route
@@ -113,6 +135,25 @@ fastkit runserver [OPTIONS]
113
135
  fastkit list-templates
114
136
  ```
115
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
+
116
157
  ### Delete a project
117
158
  ```console
118
159
  fastkit deleteproject <project_name>
@@ -8,10 +8,11 @@ authors = [
8
8
  dependencies = [
9
9
  "click>=8.1.7",
10
10
  "rich>=13.9.2",
11
+ "jinja2>=3.1",
11
12
  ]
12
13
  requires-python = ">=3.12"
13
14
  readme = "README.md"
14
- version = "1.3.0"
15
+ version = "1.4.1"
15
16
 
16
17
  [project.license]
17
18
  text = "MIT"
@@ -31,6 +32,7 @@ dev = [
31
32
  "mypy>=1.12.0",
32
33
  "isort>=5.13.2",
33
34
  "pygments>=2.20.0",
35
+ "types-pyyaml>=6.0.12.20260408",
34
36
  ]
35
37
 
36
38
  [project.scripts]
@@ -52,11 +54,21 @@ addopts = [
52
54
  "--strict-config",
53
55
  "--disable-warnings",
54
56
  ]
57
+ markers = [
58
+ "extended: slower end-to-end coverage, excluded from the fast feedback loop",
59
+ "slow: tests that shell out to real package managers or network services",
60
+ ]
61
+
62
+ [tool.black]
63
+ target-version = [
64
+ "py312",
65
+ ]
55
66
 
56
67
  [tool.isort]
57
68
  profile = "black"
58
69
 
59
70
  [tool.mypy]
71
+ python_version = "3.12"
60
72
  strict = true
61
73
 
62
74
  [[tool.mypy.overrides]]
@@ -116,14 +128,15 @@ directory = "htmlcov"
116
128
  [dependency-groups]
117
129
  docs = [
118
130
  "mkdocs>=1.6.1",
119
- "mkdocs-material>=9.6.15",
131
+ "mkdocs-material>=9.7.7",
120
132
  "mdx-include>=1.4.2",
121
133
  "mkdocs-static-i18n>=1.3.0",
122
134
  "pyyaml>=6.0.3",
123
135
  "types-PyYAML>=6.0.12.20250915",
124
136
  "pygments>=2.20.0",
125
137
  "requests>=2.33.0",
126
- "pymdown-extensions>=10.17.2",
138
+ "idna>=3.15",
139
+ "pymdown-extensions>=11.0.1",
127
140
  ]
128
141
  translation = [
129
142
  "openai>=2.8.1",
@@ -0,0 +1 @@
1
+ __version__ = 'v1.4.1'
@@ -0,0 +1,26 @@
1
+ # --------------------------------------------------------------------------
2
+ # Template inspection package.
3
+ #
4
+ # ``TemplateInspector`` generates a throwaway project from a template and runs
5
+ # the checks defined in the sibling modules against it:
6
+ #
7
+ # - ``checks`` : structure, extensions, dependencies, implementation, tests
8
+ # - ``consistency`` : Python-version pins and dependency drift
9
+ # - ``lint`` : compileall (required) and mypy (opt-in)
10
+ # - ``smoke`` : boots the generated app and probes /docs and /health
11
+ # - ``strategies`` : how the template's own test suite is executed
12
+ # - ``docker`` : Docker Compose orchestration
13
+ # - ``freshness`` : PyPI version-lag warnings
14
+ # - ``report`` : report construction and printing
15
+ #
16
+ # @author bnbong
17
+ # --------------------------------------------------------------------------
18
+ from .context import InspectionContext, InspectionOptions
19
+ from .core import TemplateInspector, inspect_fastapi_template
20
+
21
+ __all__ = [
22
+ "InspectionContext",
23
+ "InspectionOptions",
24
+ "TemplateInspector",
25
+ "inspect_fastapi_template",
26
+ ]
@@ -0,0 +1,349 @@
1
+ # --------------------------------------------------------------------------
2
+ # Static template checks: structure, file extensions, declared dependencies,
3
+ # FastAPI implementation and the mandatory test suite.
4
+ #
5
+ # Every function takes an ``InspectionContext`` and returns ``True`` when the
6
+ # check passes, appending a descriptive message to ``ctx.errors`` otherwise.
7
+ #
8
+ # @author bnbong
9
+ # --------------------------------------------------------------------------
10
+ import ast
11
+ import os
12
+ import tomllib
13
+ from pathlib import Path
14
+ from typing import List, Optional, Set, Tuple
15
+
16
+ from fastapi_fastkit.backend.main import (
17
+ _parse_setup_dependencies,
18
+ find_template_core_modules,
19
+ )
20
+ from fastapi_fastkit.backend.package_managers.poetry_manager import (
21
+ _parse_pip_requirement,
22
+ )
23
+ from fastapi_fastkit.utils.logging import debug_log
24
+
25
+ from .context import InspectionContext
26
+
27
+ ALWAYS_REQUIRED_PATHS = ["tests", "README.md-tpl"]
28
+ METADATA_CANDIDATES = ["pyproject.toml-tpl", "setup.py-tpl"]
29
+
30
+
31
+ def extract_pyproject_dependency_names(
32
+ pyproject_path: Path,
33
+ ) -> Tuple[Set[str], Optional[str]]:
34
+ """Parse a pyproject file and return (lowercased dep names, error).
35
+
36
+ ``error`` is ``None`` on success. Returns an empty set with a descriptive
37
+ error string when the file is unreadable or malformed.
38
+ """
39
+ try:
40
+ with open(pyproject_path, "rb") as f:
41
+ data = tomllib.load(f)
42
+ except (OSError, tomllib.TOMLDecodeError, UnicodeDecodeError) as e:
43
+ return set(), f"Invalid pyproject.toml-tpl: {e}"
44
+
45
+ project = data.get("project", {})
46
+ raw_deps = project.get("dependencies", []) or []
47
+ if not isinstance(raw_deps, list):
48
+ return set(), "pyproject.toml-tpl [project].dependencies must be a list"
49
+
50
+ names: Set[str] = set()
51
+ for dep in raw_deps:
52
+ if not isinstance(dep, str) or not dep.strip():
53
+ continue
54
+ name = _parse_pip_requirement(dep)[0]
55
+ if name:
56
+ names.add(name.lower())
57
+ return names, None
58
+
59
+
60
+ def parse_requirements_names(requirements_path: Path) -> Set[str]:
61
+ """Return the lowercased package names declared in a requirements file."""
62
+ with open(requirements_path, encoding="utf-8") as f:
63
+ lines = f.read().splitlines()
64
+ return {
65
+ _parse_pip_requirement(line)[0].lower()
66
+ for line in lines
67
+ if line.strip() and not line.strip().startswith("#")
68
+ }
69
+
70
+
71
+ def check_file_structure(ctx: InspectionContext) -> bool:
72
+ """Check the required file and directory structure.
73
+
74
+ Modern templates may ship ``pyproject.toml-tpl`` as the primary metadata
75
+ file; ``setup.py-tpl`` remains accepted for backward compatibility.
76
+ A template must provide at least one of the two. ``requirements.txt-tpl``
77
+ is no longer strictly required when ``pyproject.toml-tpl`` declares
78
+ ``[project].dependencies``.
79
+ """
80
+ missing_required = [
81
+ path
82
+ for path in ALWAYS_REQUIRED_PATHS
83
+ if not (ctx.template_path / path).exists()
84
+ ]
85
+ has_metadata = any(
86
+ (ctx.template_path / name).exists() for name in METADATA_CANDIDATES
87
+ )
88
+
89
+ for path in missing_required:
90
+ ctx.add_error(f"Missing required path: {path}")
91
+ if not has_metadata:
92
+ ctx.add_error(
93
+ "Missing metadata file: expected pyproject.toml-tpl "
94
+ "(preferred) or setup.py-tpl"
95
+ )
96
+
97
+ if missing_required or not has_metadata:
98
+ return False
99
+
100
+ debug_log("File structure check passed", "info")
101
+ return True
102
+
103
+
104
+ def check_file_extensions(ctx: InspectionContext) -> bool:
105
+ """Check all Python files in the template carry the .py-tpl extension."""
106
+ for path in ctx.template_path.rglob("*"):
107
+ if path.is_file() and path.suffix == ".py":
108
+ ctx.add_error(f"Found .py file instead of .py-tpl: {path}")
109
+ return False
110
+
111
+ debug_log("File extension check passed", "info")
112
+ return True
113
+
114
+
115
+ def check_dependencies(ctx: InspectionContext) -> bool:
116
+ """Check that FastAPI is declared in at least one supported source.
117
+
118
+ All three metadata sources are consulted independently:
119
+
120
+ - ``requirements.txt-tpl``
121
+ - ``pyproject.toml-tpl`` ``[project].dependencies``
122
+ - ``setup.py-tpl`` ``install_requires``
123
+
124
+ The check passes if *any* source declares ``fastapi``, so a template
125
+ with a stale ``requirements.txt-tpl`` still passes when
126
+ ``pyproject.toml-tpl`` is authoritative.
127
+ """
128
+ req_path = ctx.template_path / "requirements.txt-tpl"
129
+ pyproject_path = ctx.template_path / "pyproject.toml-tpl"
130
+ setup_path = ctx.template_path / "setup.py-tpl"
131
+
132
+ sources_checked: List[str] = []
133
+ fastapi_declared = False
134
+
135
+ if req_path.exists():
136
+ sources_checked.append("requirements.txt-tpl")
137
+ try:
138
+ package_names = parse_requirements_names(req_path)
139
+ except (OSError, UnicodeDecodeError) as e:
140
+ ctx.add_error(f"Error reading requirements.txt-tpl: {e}")
141
+ return False
142
+ debug_log(
143
+ f"requirements.txt-tpl dependencies: {sorted(package_names)}", "debug"
144
+ )
145
+ fastapi_declared = fastapi_declared or "fastapi" in package_names
146
+
147
+ if pyproject_path.exists():
148
+ sources_checked.append("pyproject.toml-tpl")
149
+ package_names, parse_error = extract_pyproject_dependency_names(pyproject_path)
150
+ if parse_error is not None:
151
+ ctx.add_error(parse_error)
152
+ return False
153
+ debug_log(f"pyproject.toml-tpl dependencies: {sorted(package_names)}", "debug")
154
+ fastapi_declared = fastapi_declared or "fastapi" in package_names
155
+
156
+ if setup_path.exists():
157
+ sources_checked.append("setup.py-tpl")
158
+ try:
159
+ with open(setup_path, encoding="utf-8") as f:
160
+ content = f.read()
161
+ except (OSError, UnicodeDecodeError) as e:
162
+ ctx.add_error(f"Error reading setup.py-tpl: {e}")
163
+ return False
164
+ package_names = {
165
+ _parse_pip_requirement(dep)[0].lower()
166
+ for dep in _parse_setup_dependencies(content)
167
+ if dep
168
+ }
169
+ debug_log(f"setup.py-tpl dependencies: {sorted(package_names)}", "debug")
170
+ fastapi_declared = fastapi_declared or "fastapi" in package_names
171
+
172
+ if not sources_checked:
173
+ ctx.add_error(
174
+ "No dependency source found: expected one of requirements.txt-tpl, "
175
+ "pyproject.toml-tpl, or setup.py-tpl"
176
+ )
177
+ return False
178
+
179
+ if not fastapi_declared:
180
+ ctx.add_error(
181
+ "FastAPI dependency not found in any source ("
182
+ + ", ".join(sources_checked)
183
+ + ")"
184
+ )
185
+ return False
186
+
187
+ debug_log(
188
+ f"Dependencies check passed (sources: {', '.join(sources_checked)})", "info"
189
+ )
190
+ return True
191
+
192
+
193
+ def _module_defines_fastapi_app(source: str) -> bool:
194
+ """Return True when ``source`` assigns a ``FastAPI(...)`` instance."""
195
+ try:
196
+ tree = ast.parse(source)
197
+ except SyntaxError:
198
+ return False
199
+
200
+ for node in ast.walk(tree):
201
+ if not isinstance(node, (ast.Assign, ast.AnnAssign)):
202
+ continue
203
+ value = node.value
204
+ if not isinstance(value, ast.Call):
205
+ continue
206
+ func = value.func
207
+ name = ""
208
+ if isinstance(func, ast.Name):
209
+ name = func.id
210
+ elif isinstance(func, ast.Attribute):
211
+ name = func.attr
212
+ if name == "FastAPI":
213
+ return True
214
+ return False
215
+
216
+
217
+ def check_fastapi_implementation(ctx: InspectionContext) -> bool:
218
+ """Check the generated project really instantiates a FastAPI application.
219
+
220
+ This is a static (AST) guard so a broken main module is reported before
221
+ the far more expensive smoke test boots a server.
222
+ """
223
+ try:
224
+ core_modules = find_template_core_modules(ctx.temp_dir)
225
+ debug_log(f"Found core modules: {core_modules}", "debug")
226
+
227
+ if not core_modules["main"]:
228
+ ctx.add_error("main.py not found in template")
229
+ return False
230
+
231
+ with open(core_modules["main"], encoding="utf-8") as f:
232
+ content = f.read()
233
+ except (OSError, UnicodeDecodeError) as e:
234
+ ctx.add_error(f"Error checking FastAPI implementation: {e}")
235
+ return False
236
+
237
+ if not _module_defines_fastapi_app(content):
238
+ ctx.add_error("FastAPI app creation not found in main.py")
239
+ debug_log(f"main.py content preview: {content[:200]}...", "debug")
240
+ return False
241
+
242
+ debug_log("FastAPI implementation check passed", "info")
243
+ return True
244
+
245
+
246
+ def check_tests_present(ctx: InspectionContext) -> bool:
247
+ """A template must ship at least one test module.
248
+
249
+ Previously a missing ``tests/`` directory only produced a warning; an
250
+ untested template is now a hard failure.
251
+ """
252
+ tests_dir = ctx.template_path / "tests"
253
+ if not tests_dir.is_dir():
254
+ ctx.add_error("Missing required path: tests (templates must ship tests)")
255
+ return False
256
+
257
+ test_files = [
258
+ path
259
+ for path in tests_dir.rglob("*")
260
+ if path.is_file()
261
+ and path.name.startswith("test_")
262
+ and path.name.endswith((".py-tpl", ".py"))
263
+ ]
264
+ if not test_files:
265
+ ctx.add_error(
266
+ "No test module found under tests/: at least one test_*.py-tpl file "
267
+ "is required"
268
+ )
269
+ return False
270
+
271
+ debug_log(f"Test suite check passed ({len(test_files)} test files)", "info")
272
+ return True
273
+
274
+
275
+ def check_no_junk_files(ctx: InspectionContext) -> bool:
276
+ """Reject OS/editor artifacts and build leftovers committed to a template."""
277
+ junk_names = {".DS_Store", "Thumbs.db", "desktop.ini", ".AppleDouble"}
278
+ junk_dirs = {"__pycache__", ".pytest_cache", ".mypy_cache", ".venv"}
279
+ found: List[str] = []
280
+
281
+ for path in ctx.template_path.rglob("*"):
282
+ rel = path.relative_to(ctx.template_path)
283
+ if path.is_dir():
284
+ if path.name in junk_dirs:
285
+ found.append(str(rel))
286
+ elif path.name in junk_names or path.suffix in {".pyc", ".pyo"}:
287
+ found.append(str(rel))
288
+
289
+ if found:
290
+ for item in sorted(found):
291
+ ctx.add_error(f"Junk file committed to template: {item}")
292
+ return False
293
+
294
+ debug_log("Junk file check passed", "info")
295
+ return True
296
+
297
+
298
+ def check_no_placeholder_residue(ctx: InspectionContext) -> bool:
299
+ """Every ``<placeholder>`` must be substituted during project generation.
300
+
301
+ The inspection generates a real project from the template (copy +
302
+ metadata injection), so any surviving placeholder token means the
303
+ template declares a variable the generator does not know how to fill.
304
+ """
305
+ placeholders = [
306
+ "<project_name>",
307
+ "<author>",
308
+ "<author_email>",
309
+ "<description>",
310
+ ]
311
+ text_suffixes = {
312
+ ".py",
313
+ ".toml",
314
+ ".cfg",
315
+ ".txt",
316
+ ".md",
317
+ ".yml",
318
+ ".yaml",
319
+ ".json",
320
+ ".sh",
321
+ ".env",
322
+ ".ini",
323
+ }
324
+ residue: List[str] = []
325
+
326
+ for root, dirs, files in os.walk(ctx.temp_dir):
327
+ dirs[:] = [d for d in dirs if d not in {".venv", "venv", "__pycache__", ".git"}]
328
+ for file_name in files:
329
+ file_path = os.path.join(root, file_name)
330
+ suffix = Path(file_name).suffix
331
+ if suffix and suffix not in text_suffixes:
332
+ continue
333
+ try:
334
+ with open(file_path, encoding="utf-8") as f:
335
+ content = f.read()
336
+ except (OSError, UnicodeDecodeError):
337
+ continue
338
+ hits = [token for token in placeholders if token in content]
339
+ if hits:
340
+ rel = os.path.relpath(file_path, ctx.temp_dir)
341
+ residue.append(f"{rel}: {', '.join(hits)}")
342
+
343
+ if residue:
344
+ for item in sorted(residue):
345
+ ctx.add_error(f"Unsubstituted placeholder in generated project: {item}")
346
+ return False
347
+
348
+ debug_log("Placeholder substitution check passed", "info")
349
+ return True