fastapi-spawn 0.4.27__tar.gz → 0.4.29__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 (77) hide show
  1. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/PKG-INFO +1 -1
  2. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/cli.py +33 -0
  3. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/interactive.py +4 -4
  4. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/pyproject.toml +1 -1
  5. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/.gitignore +0 -0
  6. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/LICENSE +0 -0
  7. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/README.md +0 -0
  8. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/__init__.py +0 -0
  9. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/config.py +0 -0
  10. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/constants.py +0 -0
  11. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/generator.py +0 -0
  12. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
  13. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
  14. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
  15. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/admin/setup.py.j2 +0 -0
  16. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
  17. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
  18. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
  19. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2 +0 -0
  20. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
  21. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/pagination/router.py.j2 +0 -0
  22. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/payments/router.py.j2 +0 -0
  23. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/permissions/router.py.j2 +0 -0
  24. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
  25. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/streaming/router.py.j2 +0 -0
  26. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/uploads/router.py.j2 +0 -0
  27. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
  28. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
  29. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/cache.py.j2 +0 -0
  30. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
  31. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
  32. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
  33. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
  34. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
  35. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
  36. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
  37. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/ocr.py.j2 +0 -0
  38. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/permissions.py.j2 +0 -0
  39. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/search.py.j2 +0 -0
  40. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
  41. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
  42. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
  43. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
  44. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
  45. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
  46. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/main.py.j2 +0 -0
  47. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
  48. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
  49. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
  50. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/app/middleware/response_format.py.j2 +0 -0
  51. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
  52. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/README.md.j2 +0 -0
  53. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/env.j2 +0 -0
  54. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/env_example.j2 +0 -0
  55. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
  56. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
  57. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
  58. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
  59. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
  60. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
  61. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/db/seed.py.j2 +0 -0
  62. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
  63. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
  64. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
  65. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
  66. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
  67. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
  68. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
  69. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
  70. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/root/main.py.j2 +0 -0
  71. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
  72. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
  73. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
  74. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
  75. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
  76. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/fastapi_spawn/utils.py +0 -0
  77. {fastapi_spawn-0.4.27 → fastapi_spawn-0.4.29}/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.27
3
+ Version: 0.4.29
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
@@ -265,6 +265,39 @@ def start(
265
265
  include_tests=opts["include_tests"],
266
266
  force=force,
267
267
  )
268
+
269
+ _print_summary(config)
270
+
271
+ import questionary
272
+ from fastapi_spawn.interactive import SPAWN_STYLE
273
+
274
+ use_current = questionary.confirm(
275
+ "Do you want to generate files directly in the current directory?", default=False, style=SPAWN_STYLE
276
+ ).unsafe_ask()
277
+
278
+ if use_current:
279
+ output_dir = Path(".")
280
+ import os
281
+ if os.listdir("."):
282
+ confirm = questionary.confirm(
283
+ "Current directory is not empty. This may overwrite files! Proceed?", default=False, style=SPAWN_STYLE
284
+ ).unsafe_ask()
285
+ if not confirm:
286
+ rprint("[yellow]Aborted.[/yellow]")
287
+ raise typer.Exit()
288
+ else:
289
+ output_dir = output / config.project_name
290
+
291
+ try:
292
+ generator = ProjectGenerator(config, output_dir)
293
+ project_path = generator.generate()
294
+ rprint(f"\n[bold green]✓ Project created:[/bold green] {project_path.resolve()}")
295
+ _print_next_steps(config)
296
+ except Exception as exc:
297
+ rprint(f"\n[bold red]✗ Generation failed:[/bold red] {exc}")
298
+ raise typer.Exit(1) from exc
299
+
300
+ return
268
301
  else:
269
302
  if not project_name:
270
303
  import questionary
@@ -162,7 +162,7 @@ def prompt_storage() -> Storage:
162
162
  return Storage.none
163
163
  choices = [
164
164
  questionary.Choice(title=f"{i}) {s.value}", value=s)
165
- for i, s in enumerate(Storage, 1) if s != Storage.none
165
+ for i, s in enumerate(Storage, 1)
166
166
  ]
167
167
  return questionary.select(
168
168
  "Storage provider:",
@@ -179,7 +179,7 @@ def prompt_ai() -> AIProvider:
179
179
  return AIProvider.none
180
180
  choices = [
181
181
  questionary.Choice(title=f"{i}) {a.value}", value=a)
182
- for i, a in enumerate(AIProvider, 1) if a != AIProvider.none
182
+ for i, a in enumerate(AIProvider, 1)
183
183
  ]
184
184
  return questionary.select(
185
185
  "AI provider:",
@@ -196,7 +196,7 @@ def prompt_vector_db() -> VectorDB:
196
196
  return VectorDB.none
197
197
  choices = [
198
198
  questionary.Choice(title=f"{i}) {v.value}", value=v)
199
- for i, v in enumerate(VectorDB, 1) if v != VectorDB.none
199
+ for i, v in enumerate(VectorDB, 1)
200
200
  ]
201
201
  return questionary.select(
202
202
  "Vector database:",
@@ -213,7 +213,7 @@ def prompt_monitoring() -> MonitoringProvider:
213
213
  return MonitoringProvider.none
214
214
  choices = [
215
215
  questionary.Choice(title=f"{i}) {m.value}", value=m)
216
- for i, m in enumerate(MonitoringProvider, 1) if m != MonitoringProvider.none
216
+ for i, m in enumerate(MonitoringProvider, 1)
217
217
  ]
218
218
  return questionary.select(
219
219
  "Monitoring provider:",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fastapi-spawn"
7
- version = "0.4.27"
7
+ version = "0.4.29"
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