FastAPI-fastkit 1.3.0__tar.gz → 1.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/PKG-INFO +26 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/README.md +23 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/pyproject.toml +13 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/__init__.py +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/__init__.py +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/checks.py +349 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/consistency.py +125 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/context.py +67 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/core.py +347 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/docker.py +185 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/freshness.py +145 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/fsutils.py +139 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/lint.py +89 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/report.py +58 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/smoke.py +327 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/strategies.py +336 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspector.py +34 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/__init__.py +6 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/config_builder.py +45 -63
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/prompts.py +155 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/selectors.py +18 -2
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/main.py +1741 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/package_managers/base.py +322 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/factory.py +5 -4
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +29 -82
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +31 -85
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +70 -110
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +43 -112
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/project_builder/__init__.py +8 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/project_builder/config_generator.py +957 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/project_builder/config_schema.py +384 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +249 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/project_builder/preset_layout.py +429 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/scaffolder.py +578 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/transducer.py +54 -21
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/cli.py +434 -311
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/core/settings.py +232 -43
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/README.md +26 -10
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +21 -22
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +40 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/schemas/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.env-tpl +21 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.gitignore-tpl +33 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/Dockerfile-tpl +18 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl +210 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/alembic.ini-tpl +119 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl +86 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl +23 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/env.py-tpl +51 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/versions/0001_initial_auth_schema.py-tpl +62 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/deps.py-tpl +91 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/router.py-tpl +17 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/config.py-tpl +64 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/security.py-tpl +100 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/session.py-tpl +36 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/models.py-tpl +25 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/repository.py-tpl +41 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/router.py-tpl +82 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/schemas.py-tpl +14 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/service.py-tpl +65 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/models.py-tpl +35 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/repository.py-tpl +33 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/router.py-tpl +71 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/schemas.py-tpl +29 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/service.py-tpl +55 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/main.py-tpl +69 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/template-config.yml-tpl +16 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/conftest.py-tpl +73 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_auth.py-tpl +201 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_health.py-tpl +15 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_users.py-tpl +77 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +21 -22
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +40 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +3 -3
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +8 -8
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +9 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +1 -1
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/schemas/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +18 -19
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +38 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/src/schemas/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +2 -3
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/tests/test_items.py-tpl +0 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +1 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +21 -22
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +42 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +2 -3
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/tests/test_items.py-tpl +0 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +13 -14
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +37 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +8 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +11 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +4 -4
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +4 -3
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +4 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +2 -3
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +2 -3
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +14 -15
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +37 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +3 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.env-tpl +15 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.gitignore-tpl +31 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/Dockerfile-tpl +18 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl +193 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl +76 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl +15 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/chat.sh-tpl +10 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/format.sh-tpl +5 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/run-server.sh-tpl +8 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/test.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/chat.py-tpl +62 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/deps.py-tpl +23 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/health.py-tpl +11 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/router.py-tpl +13 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/config.py-tpl +67 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/agent.py-tpl +136 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/client.py-tpl +30 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/tools.py-tpl +131 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/main.py-tpl +53 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/base.py-tpl +27 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/in_memory.py-tpl +32 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/chat.py-tpl +46 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/template-config.yml-tpl +16 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/conftest.py-tpl +158 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_chat.py-tpl +160 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_health.py-tpl +12 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_memory.py-tpl +38 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_tools.py-tpl +37 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +1 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +25 -25
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +70 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +4 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +3 -4
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +4 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +4 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +4 -1
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server}/router.py-tpl +3 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +6 -7
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +1 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +22 -23
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +45 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +5 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +1 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +1 -3
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +26 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +5 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +2 -4
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +1 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +1 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +4 -6
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +9 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +4 -5
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +1 -5
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm}/tests/test_items.py-tpl +0 -2
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.env-tpl +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.gitignore-tpl +30 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +3 -4
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +27 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +3 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.env-tpl +7 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.gitignore-tpl +35 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/Dockerfile-tpl +18 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl +166 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/alembic.ini-tpl +44 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl +82 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl +21 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/format.sh-tpl +5 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/migrate.sh-tpl +7 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/run-server.sh-tpl +8 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/test.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/README-tpl +9 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/env.py-tpl +72 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/script.py.mako-tpl +27 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/versions/0001_create_items_table.py-tpl +38 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/health.py-tpl +11 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/router.py-tpl +15 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/config.py-tpl +62 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/base.py-tpl +62 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/pagination.py-tpl +21 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/base.py-tpl +12 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/session.py-tpl +50 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/crud.py-tpl +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/models.py-tpl +70 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/router.py-tpl +69 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/main.py-tpl +43 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/template-config.yml-tpl +16 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/conftest.py-tpl +60 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_crud_base.py-tpl +43 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_health.py-tpl +12 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_items.py-tpl +110 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +2 -2
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/README.md +90 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/auth/fastapi_users.py.j2 +8 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/auth/jwt.py.j2 +44 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/auth/oauth2.py.j2 +105 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/auth/session.py.j2 +67 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/db/mongodb.py.j2 +19 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/db/redis.py.j2 +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/db/sqlalchemy.py.j2 +45 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/docker/docker_compose.j2 +84 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/docker/dockerfile.j2 +19 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/features/cache.py.j2 +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/features/pagination.py.j2 +31 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/features/tasks_celery.py.j2 +50 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/features/tasks_dramatiq.py.j2 +59 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/features/websocket.py.j2 +66 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/header.j2 +4 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/logging/structured.py.j2 +88 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/async_tasks.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/caching.j2 +5 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/fastapi_users.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/jwt.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/loguru.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/mongodb.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/oauth2.j2 +4 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/opentelemetry.j2 +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/pagination.j2 +3 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/prometheus.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/rate_limiting.j2 +3 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/session_auth.j2 +4 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/sqlalchemy.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/structured_logging.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/imports/websocket.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/lifespan/caching.j2 +7 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/lifespan/mongodb.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/lifespan/prometheus.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/lifespan/sqlalchemy.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/async_tasks.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/caching.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/cors.j2 +8 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/oauth2.j2 +3 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/opentelemetry.j2 +19 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/pagination.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/rate_limiting.j2 +3 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/session_auth.j2 +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/structured_logging.j2 +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main/setup/websocket.j2 +1 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/main.py.j2 +57 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/migrations/alembic_ini.j2 +42 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/migrations/env.py.j2 +76 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/migrations/initial_revision.py.j2 +27 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/migrations/migrate_sh.j2 +34 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/migrations/script.py.mako.j2 +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tasks/celery_worker.py.j2 +49 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tasks/dramatiq_worker.py.j2 +41 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/test/factories.py.j2 +68 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/test/pytest_ini.j2 +16 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/test/test_factories.py.j2 +27 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/test/test_main.py.j2 +46 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tooling/devcontainer.j2 +26 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tooling/github_actions.j2 +37 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tooling/makefile.j2 +40 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tooling/pre_commit.j2 +36 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fragments/tooling/ruff_toml.j2 +16 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/py.typed +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/utils/__init__.py +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/utils/config_file.py +263 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/utils/main.py +38 -0
- fastapi_fastkit-1.4.0/tests/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/conftest.py +8 -11
- fastapi_fastkit-1.4.0/tests/test_backends/__init__.py +0 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_inspection_docker.py +268 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_inspection_fsutils.py +198 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_inspector.py +1046 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_inspector_checks.py +1103 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_config_builder.py +38 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_prompts.py +184 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_main.py +32 -5
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_package_managers.py +146 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_preset_layout.py +127 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_project_builder_config_generator.py +1091 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_project_builder_dependency_collector.py +122 -1
- fastapi_fastkit-1.4.0/tests/test_backends/test_project_metadata.py +280 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_safety_regressions.py +382 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_scaffolder.py +239 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_transducer.py +42 -23
- fastapi_fastkit-1.4.0/tests/test_cli_operations/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_cli_operations/test_cli.py +35 -31
- fastapi_fastkit-1.4.0/tests/test_cli_operations/test_cli_config_options.py +766 -0
- fastapi_fastkit-1.4.0/tests/test_cli_operations/test_cli_error_paths.py +567 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_cli_operations/test_cli_interactive_integration.py +38 -1
- fastapi_fastkit-1.4.0/tests/test_config_file.py +296 -0
- fastapi_fastkit-1.4.0/tests/test_rich/__init__.py +0 -0
- fastapi_fastkit-1.4.0/tests/test_templates/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_templates/template_configs.yaml +2 -2
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_templates/test_all_templates.py +151 -37
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/__init__.py +0 -1
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/inspector.py +0 -1416
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/main.py +0 -953
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/package_managers/base.py +0 -150
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/config_generator.py +0 -601
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -210
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/preset_layout.py +0 -203
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.py-tpl +0 -25
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.py-tpl +0 -27
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -35
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.py-tpl +0 -22
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.py-tpl +0 -22
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +0 -11
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -11
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl +0 -22
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +0 -41
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.py-tpl +0 -51
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -42
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.py-tpl +0 -25
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -7
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl +0 -17
- fastapi_fastkit-1.3.0/tests/test_backends/test_inspector.py +0 -2050
- fastapi_fastkit-1.3.0/tests/test_backends/test_project_builder_config_generator.py +0 -438
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/LICENSE +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/__main__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/core/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/core/exceptions.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/alembic/README-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/alembic/script.py.mako-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt}/src/app/api/health.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app}/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response}/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src}/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/schemas → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api}/__init__.py-tpl +0 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/py.typed → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/__init__.py-tpl +0 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/utils/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/__init__.py-tpl +0 -0
- fastapi_fastkit-1.3.0/tests/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/__init__.py-tpl +0 -0
- fastapi_fastkit-1.3.0/tests/test_backends/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/__init__.py-tpl +0 -0
- fastapi_fastkit-1.3.0/tests/test_cli_operations/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +1 -1
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
- /fastapi_fastkit-1.3.0/tests/test_rich/__init__.py → /fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/__init__.py-tpl +0 -0
- /fastapi_fastkit-1.3.0/tests/test_templates/__init__.py → /fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/utils/logging.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_configure.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_console_sizing.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_selectors.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_validators.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_cli_operations/test_cli_extended.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_core.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_rich/test_rich.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_templates/test_config_based_templates.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_templates/test_domain_starter_e2e.py +0 -0
- {fastapi_fastkit-1.3.0 → fastapi_fastkit-1.4.0}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: FastAPI-fastkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Fast, easy-to-use starter kit for new users of Python and FastAPI
|
|
5
5
|
Author-Email: bnbong <bbbong9@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -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="
|
|
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
|
|
|
@@ -82,6 +86,12 @@ fastkit init [OPTIONS]
|
|
|
82
86
|
- Key options:
|
|
83
87
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
84
88
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
89
|
+
- `--config <path>`: create the project from a saved config file (`.json` / `.toml`, and `.yaml` when PyYAML is installed) with no prompts
|
|
90
|
+
- `--save-config <path>`: with `--interactive`, record the answers for later reuse
|
|
91
|
+
- `--dry-run`: print the files and packages that would be created, write nothing
|
|
92
|
+
- `--no-venv`: skip virtual environment creation (implies `--no-install`)
|
|
93
|
+
- `--no-install`: skip dependency installation
|
|
94
|
+
- `--yes` / `-y`: skip the "Overwrite these files?" confirmation when deploying in place
|
|
85
95
|
- Stack selection: `minimal` | `standard` | `full` (interactive)
|
|
86
96
|
|
|
87
97
|
### Create a project with interactive mode
|
|
@@ -98,6 +108,9 @@ fastkit init --interactive
|
|
|
98
108
|
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
99
109
|
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
100
110
|
- **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
|
|
111
|
+
- **Logging**: structured JSON logging with a request-id middleware
|
|
112
|
+
- **Migrations**: Alembic (async env, baseline revision)
|
|
113
|
+
- **Tooling**: ruff, pre-commit, GitHub Actions, devcontainer, Makefile (multi-select)
|
|
101
114
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
102
115
|
- **Package manager**: pip, uv, pdm, poetry
|
|
103
116
|
- **Custom packages**: Add your own dependencies
|
|
@@ -106,6 +119,9 @@ fastkit init --interactive
|
|
|
106
119
|
- Database and authentication configuration files at preset-specific paths
|
|
107
120
|
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
108
121
|
- Test configuration (pytest with coverage)
|
|
122
|
+
- `/health` and `/ready` endpoints on every generated project
|
|
123
|
+
- Real working code — not just installed packages — for background tasks, caching, WebSocket, pagination, OpenTelemetry, OAuth2 and session-based auth
|
|
124
|
+
- `--dry-run` previews the exact file tree a run would create, including logging/migrations/tooling artifacts
|
|
109
125
|
|
|
110
126
|
### Create a project from a template
|
|
111
127
|
```console
|
|
@@ -115,8 +131,16 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
115
131
|
- Key options:
|
|
116
132
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
117
133
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
134
|
+
- `--dry-run`, `--no-venv`, `--no-install`, `--yes`/`-y` — same meaning as on `init`
|
|
135
|
+
- Refuses to run if the target project directory already exists (`--dry-run` excepted)
|
|
118
136
|
- Tip: List available templates with `fastkit list-templates`
|
|
119
137
|
|
|
138
|
+
New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
|
|
139
|
+
`fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
|
|
140
|
+
`fastapi-llm-agent` (streaming Claude agent with a tool loop).
|
|
141
|
+
`fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
|
|
142
|
+
work, but are no longer recommended starting points.
|
|
143
|
+
|
|
120
144
|
### Add a new route
|
|
121
145
|
```console
|
|
122
146
|
fastkit addroute <project_name> <route_name>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img align="top" width="70%" src="
|
|
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
|
|
|
@@ -59,6 +61,12 @@ fastkit init [OPTIONS]
|
|
|
59
61
|
- Key options:
|
|
60
62
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
61
63
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
64
|
+
- `--config <path>`: create the project from a saved config file (`.json` / `.toml`, and `.yaml` when PyYAML is installed) with no prompts
|
|
65
|
+
- `--save-config <path>`: with `--interactive`, record the answers for later reuse
|
|
66
|
+
- `--dry-run`: print the files and packages that would be created, write nothing
|
|
67
|
+
- `--no-venv`: skip virtual environment creation (implies `--no-install`)
|
|
68
|
+
- `--no-install`: skip dependency installation
|
|
69
|
+
- `--yes` / `-y`: skip the "Overwrite these files?" confirmation when deploying in place
|
|
62
70
|
- Stack selection: `minimal` | `standard` | `full` (interactive)
|
|
63
71
|
|
|
64
72
|
### Create a project with interactive mode
|
|
@@ -75,6 +83,9 @@ fastkit init --interactive
|
|
|
75
83
|
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
76
84
|
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
77
85
|
- **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
|
|
86
|
+
- **Logging**: structured JSON logging with a request-id middleware
|
|
87
|
+
- **Migrations**: Alembic (async env, baseline revision)
|
|
88
|
+
- **Tooling**: ruff, pre-commit, GitHub Actions, devcontainer, Makefile (multi-select)
|
|
78
89
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
79
90
|
- **Package manager**: pip, uv, pdm, poetry
|
|
80
91
|
- **Custom packages**: Add your own dependencies
|
|
@@ -83,6 +94,9 @@ fastkit init --interactive
|
|
|
83
94
|
- Database and authentication configuration files at preset-specific paths
|
|
84
95
|
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
85
96
|
- Test configuration (pytest with coverage)
|
|
97
|
+
- `/health` and `/ready` endpoints on every generated project
|
|
98
|
+
- Real working code — not just installed packages — for background tasks, caching, WebSocket, pagination, OpenTelemetry, OAuth2 and session-based auth
|
|
99
|
+
- `--dry-run` previews the exact file tree a run would create, including logging/migrations/tooling artifacts
|
|
86
100
|
|
|
87
101
|
### Create a project from a template
|
|
88
102
|
```console
|
|
@@ -92,8 +106,16 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
92
106
|
- Key options:
|
|
93
107
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
94
108
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
109
|
+
- `--dry-run`, `--no-venv`, `--no-install`, `--yes`/`-y` — same meaning as on `init`
|
|
110
|
+
- Refuses to run if the target project directory already exists (`--dry-run` excepted)
|
|
95
111
|
- Tip: List available templates with `fastkit list-templates`
|
|
96
112
|
|
|
113
|
+
New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
|
|
114
|
+
`fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
|
|
115
|
+
`fastapi-llm-agent` (streaming Claude agent with a tool loop).
|
|
116
|
+
`fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
|
|
117
|
+
work, but are no longer recommended starting points.
|
|
118
|
+
|
|
97
119
|
### Add a new route
|
|
98
120
|
```console
|
|
99
121
|
fastkit addroute <project_name> <route_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.
|
|
15
|
+
version = "1.4.0"
|
|
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]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = 'v1.4.0'
|
|
@@ -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
|