fastapi-spawn 0.4.14__tar.gz → 0.4.15__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_spawn-0.4.14 → fastapi_spawn-0.4.15}/PKG-INFO +1 -1
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/__init__.py +1 -1
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/cli.py +1 -1
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/generator.py +2 -0
- fastapi_spawn-0.4.15/fastapi_spawn/templates/app/api/v1/permissions/router.py.j2 +23 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/pyproject.toml +1 -1
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/.gitignore +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/LICENSE +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/README.md +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/config.py +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/constants.py +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/interactive.py +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/payments/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/streaming/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/cache.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ocr.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/permissions.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/search.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/main.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/response_format.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/README.md.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/env.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/env_example.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/db/seed.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/root/main.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/utils.py +0 -0
- {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/validators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-spawn
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.15
|
|
4
4
|
Summary: A powerful CLI tool to scaffold production-ready FastAPI projects with flexible database, auth, broker, and deployment options.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Bishwajitgarai/fastapi-spawn
|
|
6
6
|
Project-URL: Documentation, https://github.com/Bishwajitgarai/fastapi-spawn#readme
|
|
@@ -382,7 +382,7 @@ def _feature_guidance(feature: str, _project_dir: Path) -> None:
|
|
|
382
382
|
"sso-microsoft": ["1. Use 'fastapi-spawn new temp_app --extra sso-microsoft' and copy the resulting sso.py"],
|
|
383
383
|
"seed": ["Add dep: faker>=25.0.0", "Create db/seed.py (generate 100 mock users/posts)", "Run: uv run python db/seed.py"],
|
|
384
384
|
"ocr": ["Add deps: pymupdf>=1.24.0, pytesseract>=0.3.10", "Create app/core/ocr.py (PDF parsing pipeline)", "Install system deps: sudo apt install tesseract-ocr"],
|
|
385
|
-
"rbac": ["Create app/core/permissions.py", "Add
|
|
385
|
+
"rbac": ["Create app/core/permissions.py and app/api/v1/permissions/router.py", "Add app.include_router(permissions.router) to main.py"],
|
|
386
386
|
"caching": ["Add dep: fastapi-cache2[redis]>=0.2.1", "Create app/core/cache.py", "Initialize cache in lifespan and use @cache(expire=60) on endpoints"],
|
|
387
387
|
"response-format": ["Create app/middleware/response_format.py", "Add app.add_middleware(ResponseFormattingMiddleware) to main.py"],
|
|
388
388
|
"docker": ["Create Dockerfile (multi-stage, uv-based)", "Create docker-compose.yml with all selected services", "Create .dockerignore"],
|
|
@@ -238,6 +238,8 @@ class ProjectGenerator:
|
|
|
238
238
|
|
|
239
239
|
if "rbac" in extras:
|
|
240
240
|
self._render_to(core / "permissions.py", "app/core/permissions.py.j2")
|
|
241
|
+
(v1 / "permissions").mkdir(parents=True, exist_ok=True)
|
|
242
|
+
self._render_to(v1 / "permissions" / "router.py", "app/api/v1/permissions/router.py.j2")
|
|
241
243
|
|
|
242
244
|
if "caching" in extras:
|
|
243
245
|
self._render_to(core / "cache.py", "app/core/cache.py.j2")
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from fastapi import APIRouter, Depends
|
|
2
|
+
from app.core.permissions import RequireRole, RequirePermission
|
|
3
|
+
|
|
4
|
+
# This router restricts access to all its endpoints using the RequireRole dependency
|
|
5
|
+
router = APIRouter(
|
|
6
|
+
prefix="/admin",
|
|
7
|
+
tags=["admin", "rbac"],
|
|
8
|
+
dependencies=[Depends(RequireRole(["admin"]))]
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@router.get("/dashboard")
|
|
12
|
+
async def get_admin_dashboard():
|
|
13
|
+
"""
|
|
14
|
+
This endpoint is only accessible to users with the 'admin' role.
|
|
15
|
+
"""
|
|
16
|
+
return {"message": "Welcome to the secure admin dashboard!"}
|
|
17
|
+
|
|
18
|
+
@router.get("/settings", dependencies=[Depends(RequirePermission("write:settings"))])
|
|
19
|
+
async def update_admin_settings():
|
|
20
|
+
"""
|
|
21
|
+
This endpoint requires both the 'admin' role (from the router) AND the 'write:settings' permission.
|
|
22
|
+
"""
|
|
23
|
+
return {"message": "Admin settings successfully updated."}
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fastapi-spawn"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.15"
|
|
8
8
|
description = "A powerful CLI tool to scaffold production-ready FastAPI projects with flexible database, auth, broker, and deployment options."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/alembic/alembic.ini.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/health/router.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/router.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/exceptions.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/logging.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/monitoring.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/notifications.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/permissions.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/security.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/storage.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/vector_db.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ws_manager.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/frontend/index.html.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/__init__.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/pyproject.toml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/publish.yml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/tests.yml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/docker-compose.yml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/dockerignore.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/values.yaml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/terraform/main.tf.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/arq_worker.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/celery_app.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/sample_tasks.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tests/test_health.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|