FastAPI-fastkit 1.2.1__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.2.1 → fastapi_fastkit-1.4.0}/PKG-INFO +33 -6
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/README.md +30 -5
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/__init__.py +8 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/config_builder.py +66 -65
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/prompts.py +205 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/selectors.py +28 -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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/factory.py +6 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +32 -85
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +31 -85
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +73 -113
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +46 -115
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/project_builder/__init__.py +10 -0
- 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/transducer.py +54 -22
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/cli.py +452 -284
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/core/settings.py +463 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/README.md +155 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +3 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +25 -23
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +40 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.2.1 → 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.2.1/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.2.1/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.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud}/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.2.1/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.2.1 → 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/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/run-server.sh-tpl +8 -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/health.py-tpl +11 -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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +25 -23
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +40 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +8 -8
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +9 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +1 -1
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +22 -20
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +38 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +1 -2
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.2.1/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.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/tests/conftest.py-tpl +2 -3
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default}/tests/test_items.py-tpl +0 -2
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +1 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +3 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +25 -23
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +42 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/test.sh-tpl +6 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +1 -2
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +1 -2
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/src/main.py-tpl +9 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +1 -2
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/tests/conftest.py-tpl +2 -3
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/tests/test_items.py-tpl +0 -2
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +2 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +31 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +128 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +69 -0
- 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/format.sh-tpl +5 -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.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +15 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +49 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +49 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +9 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +17 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +47 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +58 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +23 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +51 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +28 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +23 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +11 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +77 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +2 -2
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +18 -16
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +37 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +5 -6
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +3 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -1
- {fastapi_fastkit-1.2.1 → 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/__init__.py-tpl +0 -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/__init__.py-tpl +0 -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/__init__.py-tpl +0 -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/__init__.py-tpl +0 -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/__init__.py-tpl +0 -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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +1 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +29 -26
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +70 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +3 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +4 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +3 -4
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +4 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +4 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +4 -1
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +6 -7
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +1 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +26 -24
- 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/__init__.py-tpl +0 -0
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +1 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → 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.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +1 -2
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +4 -6
- {fastapi_fastkit-1.2.1 → 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.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +1 -5
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +7 -5
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +27 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → 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.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/utils/main.py +111 -6
- fastapi_fastkit-1.4.0/tests/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_config_builder.py +82 -3
- fastapi_fastkit-1.4.0/tests/test_backends/test_interactive_prompts.py +457 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_selectors.py +90 -3
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_interactive_validators.py +0 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_main.py +221 -5
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_package_managers.py +146 -2
- fastapi_fastkit-1.4.0/tests/test_backends/test_preset_layout.py +351 -0
- fastapi_fastkit-1.4.0/tests/test_backends/test_project_builder_config_generator.py +1091 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_project_builder_dependency_collector.py +122 -2
- 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.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/tests/test_cli_operations/test_cli.py +58 -34
- 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.4.0/tests/test_cli_operations/test_cli_interactive_integration.py +676 -0
- 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.2.1 → fastapi_fastkit-1.4.0}/tests/test_rich/test_rich.py +3 -6
- fastapi_fastkit-1.4.0/tests/test_templates/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_templates/template_configs.yaml +2 -2
- fastapi_fastkit-1.4.0/tests/test_templates/test_all_templates.py +410 -0
- fastapi_fastkit-1.4.0/tests/test_templates/test_domain_starter_e2e.py +293 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_utils.py +145 -3
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/__init__.py +0 -1
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/inspector.py +0 -1295
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/main.py +0 -880
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/package_managers/base.py +0 -150
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/project_builder/config_generator.py +0 -594
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -210
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/core/settings.py +0 -258
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/README.md +0 -90
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.py-tpl +0 -25
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.py-tpl +0 -27
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -35
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.py-tpl +0 -22
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -37
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.py-tpl +0 -22
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -11
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl +0 -22
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +0 -41
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.py-tpl +0 -51
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -42
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.py-tpl +0 -25
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -7
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl +0 -17
- fastapi_fastkit-1.2.1/tests/test_backends/test_inspector.py +0 -1804
- fastapi_fastkit-1.2.1/tests/test_backends/test_interactive_prompts.py +0 -188
- fastapi_fastkit-1.2.1/tests/test_backends/test_project_builder_config_generator.py +0 -411
- fastapi_fastkit-1.2.1/tests/test_cli_operations/test_cli_interactive_integration.py +0 -282
- fastapi_fastkit-1.2.1/tests/test_templates/test_all_templates.py +0 -227
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/LICENSE +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/__main__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/core/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/core/exceptions.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → 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.2.1/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.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/src/fastapi_fastkit/fastapi_project_template/modules → 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.2.1/src/fastapi_fastkit/fastapi_project_template/modules/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.2.1/src/fastapi_fastkit/fastapi_project_template/modules/crud → 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.2.1/src/fastapi_fastkit/fastapi_project_template/modules/schemas → 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.2.1/src/fastapi_fastkit/py.typed → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
- fastapi_fastkit-1.2.1/src/fastapi_fastkit/utils/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/__init__.py-tpl +0 -0
- fastapi_fastkit-1.2.1/tests/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/__init__.py-tpl +0 -0
- fastapi_fastkit-1.2.1/tests/test_backends/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/__init__.py-tpl +0 -0
- fastapi_fastkit-1.2.1/tests/test_cli_operations/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/__init__.py-tpl +0 -0
- fastapi_fastkit-1.2.1/tests/test_rich/__init__.py → fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/__init__.py-tpl +0 -0
- fastapi_fastkit-1.2.1/tests/test_templates/__init__.py → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1/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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +1 -1
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → 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.2.1 → 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.2.1 → 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.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/src/fastapi_fastkit/utils/logging.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_configure.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_backends/test_console_sizing.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_cli_operations/test_cli_extended.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_core.py +0 -0
- {fastapi_fastkit-1.2.1 → fastapi_fastkit-1.4.0}/tests/test_templates/test_config_based_templates.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: FastAPI-fastkit
|
|
3
|
-
Version: 1.
|
|
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
|
|
@@ -90,6 +100,7 @@ fastkit init --interactive
|
|
|
90
100
|
```
|
|
91
101
|
- What it does: Guided step-by-step project setup with intelligent feature selection
|
|
92
102
|
- Features:
|
|
103
|
+
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
93
104
|
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
94
105
|
- **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
|
|
95
106
|
- **Background tasks**: Celery, Dramatiq
|
|
@@ -97,14 +108,20 @@ fastkit init --interactive
|
|
|
97
108
|
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
98
109
|
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
99
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)
|
|
100
114
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
101
115
|
- **Package manager**: pip, uv, pdm, poetry
|
|
102
116
|
- **Custom packages**: Add your own dependencies
|
|
103
|
-
- Auto-generates:
|
|
104
|
-
- `main.py`
|
|
105
|
-
- Database and authentication configuration files
|
|
106
|
-
- Docker deployment files (Dockerfile
|
|
117
|
+
- Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
118
|
+
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
119
|
+
- Database and authentication configuration files at preset-specific paths
|
|
120
|
+
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
107
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
|
|
108
125
|
|
|
109
126
|
### Create a project from a template
|
|
110
127
|
```console
|
|
@@ -114,8 +131,16 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
114
131
|
- Key options:
|
|
115
132
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
116
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)
|
|
117
136
|
- Tip: List available templates with `fastkit list-templates`
|
|
118
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
|
+
|
|
119
144
|
### Add a new route
|
|
120
145
|
```console
|
|
121
146
|
fastkit addroute <project_name> <route_name>
|
|
@@ -144,9 +169,11 @@ fastkit deleteproject <project_name>
|
|
|
144
169
|
|
|
145
170
|
For comprehensive guides and detailed usage instructions, visit our documentation:
|
|
146
171
|
|
|
172
|
+
- 🧭 **[Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/)** - Beginner decision guide for `startdemo` templates and interactive presets
|
|
147
173
|
- 📚 **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides
|
|
148
174
|
- 🎯 **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners
|
|
149
175
|
- 📖 **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference
|
|
176
|
+
- 🧱 **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation
|
|
150
177
|
- 🔍 **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards
|
|
151
178
|
|
|
152
179
|
## Contributing
|
|
@@ -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
|
|
@@ -67,6 +75,7 @@ fastkit init --interactive
|
|
|
67
75
|
```
|
|
68
76
|
- What it does: Guided step-by-step project setup with intelligent feature selection
|
|
69
77
|
- Features:
|
|
78
|
+
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
70
79
|
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
71
80
|
- **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
|
|
72
81
|
- **Background tasks**: Celery, Dramatiq
|
|
@@ -74,14 +83,20 @@ fastkit init --interactive
|
|
|
74
83
|
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
75
84
|
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
76
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)
|
|
77
89
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
78
90
|
- **Package manager**: pip, uv, pdm, poetry
|
|
79
91
|
- **Custom packages**: Add your own dependencies
|
|
80
|
-
- Auto-generates:
|
|
81
|
-
- `main.py`
|
|
82
|
-
- Database and authentication configuration files
|
|
83
|
-
- Docker deployment files (Dockerfile
|
|
92
|
+
- Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
93
|
+
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
94
|
+
- Database and authentication configuration files at preset-specific paths
|
|
95
|
+
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
84
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
|
|
85
100
|
|
|
86
101
|
### Create a project from a template
|
|
87
102
|
```console
|
|
@@ -91,8 +106,16 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
91
106
|
- Key options:
|
|
92
107
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
93
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)
|
|
94
111
|
- Tip: List available templates with `fastkit list-templates`
|
|
95
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
|
+
|
|
96
119
|
### Add a new route
|
|
97
120
|
```console
|
|
98
121
|
fastkit addroute <project_name> <route_name>
|
|
@@ -121,9 +144,11 @@ fastkit deleteproject <project_name>
|
|
|
121
144
|
|
|
122
145
|
For comprehensive guides and detailed usage instructions, visit our documentation:
|
|
123
146
|
|
|
147
|
+
- 🧭 **[Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/)** - Beginner decision guide for `startdemo` templates and interactive presets
|
|
124
148
|
- 📚 **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides
|
|
125
149
|
- 🎯 **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners
|
|
126
150
|
- 📖 **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference
|
|
151
|
+
- 🧱 **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation
|
|
127
152
|
- 🔍 **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards
|
|
128
153
|
|
|
129
154
|
## Contributing
|
|
@@ -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
|