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.
Files changed (74) hide show
  1. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/PKG-INFO +1 -1
  2. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/__init__.py +1 -1
  3. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/cli.py +1 -1
  4. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/generator.py +2 -0
  5. fastapi_spawn-0.4.15/fastapi_spawn/templates/app/api/v1/permissions/router.py.j2 +23 -0
  6. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/pyproject.toml +1 -1
  7. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/.gitignore +0 -0
  8. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/LICENSE +0 -0
  9. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/README.md +0 -0
  10. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/config.py +0 -0
  11. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/constants.py +0 -0
  12. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/interactive.py +0 -0
  13. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
  14. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
  15. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
  16. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
  17. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
  18. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
  19. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2 +0 -0
  20. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
  21. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/payments/router.py.j2 +0 -0
  22. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
  23. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/streaming/router.py.j2 +0 -0
  24. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
  25. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
  26. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/cache.py.j2 +0 -0
  27. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
  28. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
  29. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
  30. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
  31. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
  32. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
  33. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
  34. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ocr.py.j2 +0 -0
  35. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/permissions.py.j2 +0 -0
  36. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/search.py.j2 +0 -0
  37. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
  38. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
  39. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
  40. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
  41. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
  42. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
  43. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/main.py.j2 +0 -0
  44. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
  45. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
  46. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
  47. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/app/middleware/response_format.py.j2 +0 -0
  48. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
  49. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/README.md.j2 +0 -0
  50. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/env.j2 +0 -0
  51. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/env_example.j2 +0 -0
  52. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
  53. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
  54. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
  55. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
  56. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
  57. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
  58. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/db/seed.py.j2 +0 -0
  59. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
  60. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
  61. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
  62. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
  63. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
  64. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
  65. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
  66. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
  67. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/root/main.py.j2 +0 -0
  68. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
  69. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
  70. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
  71. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
  72. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
  73. {fastapi_spawn-0.4.14 → fastapi_spawn-0.4.15}/fastapi_spawn/utils.py +0 -0
  74. {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.14
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
@@ -1,6 +1,6 @@
1
1
  """fastapi-spawn — Production-ready FastAPI project scaffolding CLI."""
2
2
 
3
- __version__ = "0.4.14"
3
+ __version__ = "0.4.15"
4
4
  __author__ = "Bishwajit Garai"
5
5
  __email__ = "bishwajitgarai@gmail.com"
6
6
  __license__ = "MIT"
@@ -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 @router.get(..., dependencies=[Depends(RequireRole(['admin']))])"],
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.14"
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